关于王爽检测点6.1(2)栈的问题(求解惑)
要求:用内存0:0-0:15的内容改写程序中的数据,数据用栈传送并且栈空间设置在程序段。程序如下(来自答案)assume cs:code
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h ;这是要修改的内容(16个字节)
dw 0,0,0,0,0,0,0,0,0,0 ;定义20个字节的栈空间
start: mov ax,cs
mov ss,ax
mov sp,36 ;设置cs:sp指向栈顶,这也是小弟的疑问所在,我自己的理解是:程序原来
;的数据段和栈空间加起来一共是36个字节,不是应该0-35么?按照栈以字单
;元存放来说,栈顶难道不是34么?即使栈能以字节存放,那栈顶应该是34吧
;,为什么是36呢?我知道肯定是自己哪里理解错了,求各位指出,感激万分
mov ax,0
mov ds,ax
mov bx,0
mov cx,8
s: push [bx]
pop cs:[bx]
add bx,2
loop s
mov ax,4c00h
int 21h
code ends
end start