做了第6章实验5(6)的题目,有疑惑不解,请甲鱼老师解答
各位TX,各位LS。请看最终代码我的疑惑是为什么SP是10h,我自己写的时候认为是30h,结果运行不出最终结果,后边Show的代码都不是我写的了,在网上找了下答案,把SP改为10h就可以了。assume cs:code
a segment
dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
a ends
b segment
dw 0,0,0,0,0,0,0,0
b ends
code segment
start: mov ax,b
mov ss,ax
mov sp,10h
mov ax,a
mov ds,ax
mov bx,0
mov cx,8
s: push
add bx,2
loop s
mov ax,4c00h
int 21h
code ends
end start我认为SP是30h的根据是,我查看了定义在内存中a段的数据存放如下
C:\Masm>debug 15.exe
-r
AX=0000BX=0000CX=004FDX=0000SP=0000BP=0000SI=0000DI=0000
DS=13CCES=13CCSS=13DCCS=13DFIP=0000 NV UP EI PL NZ NA PO NC
13DF:0000 B8DE13 MOV AX,13DE
-d 13dc:0
13DC:000001 00 02 00 03 00 04 00-05 00 06 00 07 00 08 00 ................
13DC:001009 00 0A 00 0B 00 0C 00-0D 00 0E 00 0F 00 FF 00 ................
13DC:002000 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
13DC:0030B8 DE 13 8E D0 BC 10 00-B8 DC 13 8E D8 BB 00 00 ................
13DC:0040B9 08 00 FF 37 83 C3 02-E2 F9 B8 00 4C CD 21 CC ....7.......L.!.
13DC:005000 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
13DC:006000 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
13DC:007000 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
-
请大家帮忙解答疑惑,谢谢! 因为你整个栈段是定义了8个字型数据,16个字节,这里sp设置为10h == 16指向栈顶,如果你设到30h明显的越界了,跑到外边去了~ 本帖最后由 shangyl00 于 2011-4-14 08:27 编辑
因为你整个栈段是定义了8个字型数据,16个字节,这里sp设置为10h == 16指向栈顶,如果你设到30h明显的越界了 ...
小甲鱼 发表于 2011-4-13 23:26 http://fishc.com/dz/images/common/back.gif
可我对栈段理解有误,我是从CS开头a段就开始算起。如果是10h,应该是从栈,也就是b段开始算起。
那么这SP是如何算的呢? 谁能解答我的疑惑? 本帖最后由 loop 于 2011-4-16 19:53 编辑
你改成30的话,我估计是你把栈顶指针的位置搞反了吧!!!还有你的16段有32个字节,可是你的堆载只有16个字节,这是明显的越界啊!!!其实你把那数据段的DW改为DB也可以储存那些数据啊,在你的截图中,可以看到,一个字节就可以储存一个数据啊!说的很纠结啊!!!算了,不多说了。 你改成30的话,我估计是你把栈顶指针的位置搞反了吧!!!还有你的16段有32个字节,可是你的堆载只有16个字 ...
790496690 发表于 2011-4-16 19:48 http://fishc.com/dz/images/common/back.gif
这个问题我已经搞清楚了,谢谢你! 我也遇到同样的问题,后来想了一下明白了,我把栈段地址看成13DC:0000,应该是13DC:0020,定议了16个字节,栈底应该是16,我说的对不? 我也遇到同样的问题,后来想了一下明白了,我把栈段地址看成13DC:0000,应该是13DC:0020,定议了16个字节, ...
伊晃 发表于 2011-4-18 17:35 http://fishc.com/dz/images/common/back.gif
对!
页:
[1]