鱼C论坛

 找回密码
 立即注册
查看: 2392|回复: 5

6.2在代码段中使用栈 出现不可思议的的结果,求高手指点

[复制链接]
发表于 2011-12-26 21:39:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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,0,0,0,0,0,0
start: mov ax,cs
       mov ss,ax
           mov sp,32
           mov bx,0
           mov cx,8
s:     push cs:[bx]
       add bx,2
           loop s
           mov bx,0
           mov cx,8
s0:    pop cs:[bx]
       add bx,2
           loop s0
          
           mov ax,4c00h
           int 21h
           codesg ends
           end start
程序单步运行到CX=0002H时 cs:000c=0000按理应该是cs000c=0cbah啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-27 11:16:57 | 显示全部楼层
首先你看好 你的是 mov sp,32

然后再看 dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h


db 是字节为单位 dw 字为单位 dd 双字为单位

dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h ;你这么有了 32个字节了而你sp又是32所以结果那样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-12-28 21:34:05 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-29 01:23:22 | 显示全部楼层
你的不就是书上的代码吗?? 书上不是30H吗 照改就可以了啊 MASM要注意进制问题哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-29 02:02:47 | 显示全部楼层
sp 改成 64吧! mov sp,64
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-29 02:07:52 | 显示全部楼层
应该是sp=32h吧  你是dw以字形定义数据的一个逗号前就是两个偏移地址,从0开始到49(31h)栈顶指针就应该是32h吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-5 22:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表