小歪xxp 发表于 2012-9-7 17:33:00

检测 6(2)求指教

检测点6.1 (2)下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,数据的传送用栈来进行。栈空间设置在程序内。完成程序:assume cs:codesg codesg segment       dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h       dw 0,0,0,0,0,0,0,0,0,0 start:mov ax, codesg ;或mov ax, cs       mov ss,ax       mov sp, 24h    ;或mov sp, 36     ;(第一版填1ah或26)   >>>>>>>>>>>>.这里为什么是24H或者36呢,不应该指向栈顶的吗,栈顶不应该是31的吗。
      mov ax,0       mov ds,ax       mov bx,0       mov cx,8     s:push        pop cs: ;或 pop ss:       add bx,2      loop s       mov ax,4c00h       int 21h codesg ends end start

GeV20 发表于 2012-9-7 18:15:25

能不能请你说说31是怎么算出来

小歪xxp 发表于 2012-9-7 20:08:19

我看错了。是 36.下面是10个,我看成8个了。

GeV20 发表于 2012-9-7 20:55:56

栈操作指令的操作数是多少字节的?
如果往空栈压入一个word型数据,SP会指向哪个字节单元?
若把这个数据pop掉,栈就回到空栈状态,这时SP指向哪?空栈状态是不是和初始状态一样?

假设栈的大小为S字节,偏移地址都是从0开始算的,最后一个单元是S-1,再往后一单元就是空栈时SP的所指,这个单元的偏移是S.可见,栈大小跟空栈时SP所指的单元的偏移数值上是一样的,只要记住这个以后就不必去细算了.谨供参考.

小歪xxp 发表于 2012-9-7 21:55:12

GeV20 发表于 2012-9-7 20:55 static/image/common/back.gif
栈操作指令的操作数是多少字节的?
如果往空栈压入一个word型数据,SP会指向哪个字节单元?
若把这个数据pop ...

谢谢指教。

angel318393 发表于 2012-9-8 05:06:36

这个帖子不回对不起自己!
页: [1]
查看完整版本: 检测 6(2)求指教