早教吧作业答案频道 -->其他-->
assumecs:codesg,ds:data,ss:stackdatasegmentdw0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hdataendsstacksegmentdw0,0,0,0,0,0,0,0stackendscodesegmentstart:movax,stackmovss,axmovsp,16;★将逻辑上设置的栈段真正设为栈
题目详情
assume cs:codesg,ds:data,ss:stack
data segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
data ends
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,16 ;★将逻辑上设置的栈段真正设为栈段区域
mov ax,data ;设置数据区域段地址
mov ds,ax
push ds:[0]
push ds:[2]
pop ds:[2]
pop ds:[0]
mov ax,4c00h
int 21h
code ends
end start
以上是代码源码.
请问五角星处为什么不是8而是16?(stack segment 只覆盖了8个位置)
data segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
data ends
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,16 ;★将逻辑上设置的栈段真正设为栈段区域
mov ax,data ;设置数据区域段地址
mov ds,ax
push ds:[0]
push ds:[2]
pop ds:[2]
pop ds:[0]
mov ax,4c00h
int 21h
code ends
end start
以上是代码源码.
请问五角星处为什么不是8而是16?(stack segment 只覆盖了8个位置)
▼优质解答
答案和解析
堆栈,用 DW 设定了 8 个字,即 16 个字节.
但是,对存储器的操作,都是以字节为单位的.
故此,写 16,就对了.
压栈(或出栈)一次,SP 即要变化两个数.
但是,对存储器的操作,都是以字节为单位的.
故此,写 16,就对了.
压栈(或出栈)一次,SP 即要变化两个数.
看了 assumecs:codes...的网友还看了以下:
设f(x,y)在(0,0)处连续,limx,y→0f(x,y)-1ex2+y2-1=4,则()A. 2020-05-14 …
设f(x)=[g(x)-e^(-x)]/x(x不等于0)0(x=0),其中g(x)是有二阶连续函数 2020-05-17 …
4X120铜芯电缆可以带多大功率要是BV-4*120的3相敷设在明敷设导管中载流量为215AI=P 2020-06-21 …
设函数f(x)连续,且f(0)≠0,求极限limx→0∫x0(x?t)f(t)dtx∫x0f(x? 2020-07-09 …
设a1=(1,0,1,),a2=(1,1,0,),a3=(0,1,1,),a4=(1,1,1),则 2020-07-09 …
设函数f(x)=g(x)sin1/x(x不得于0);0(x=0)高数题设函数f(x)=g(x)si 2020-07-16 …
设f'(x)=arctan[(x-1)^2],f(0)=0,求∫(0,1)f(x)dx,其中0是下 2020-07-22 …
设函数f(x,y)=(1+m/y)^x,m>0,Y>0设n是正整数,t是正实数,t满足f(n,1)= 2020-11-01 …
设[x)表示大于x的最小整数,如[3)=4,[-1.2)=-1,则下列结论中正确的是.(填写所有正确 2020-11-18 …
△=0,△<0时一元二次方程ax2+bx+c=0(a>0)的根根需要用字母代表出来△>0,△=0,△ 2020-12-27 …