鱼C论坛

 找回密码
 立即注册
查看: 3065|回复: 4

实验三,执行到POP AX

[复制链接]
发表于 2012-2-6 06:47:19 | 显示全部楼层 |阅读模式

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

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

x
  1. assume cs:codesg
  2. codesg segment
  3. start: mov ax,2000H
  4. mov ss,ax
  5. mov sp,0
  6. add sp,4
  7. pop ax
  8. pop bx
  9. push ax
  10. push bx
  11. pop ax
  12. pop bx
  13. mov ax,4c00H
  14. int 21H
  15. codesg ends
  16. end start
复制代码

执行到 POP AX后 ,就不继续执行


                               
登录/注册后可看大图

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-6 10:13:54 | 显示全部楼层
你先 的一下内存2000h处有没有数据,最好用200h~3ffh处的内存 应该是触碰到了不该触碰的东西
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-6 11:45:29 | 显示全部楼层
和代码本身没有关系,是debug的问题,最近问这个的比较多。
原因在debug的T命令上。
debug中的t命令

书上说是用了单步中断的原理

1.取得中断码
2.tf if入栈
3.cs ip入栈
4.响应中断

由于执行T命令时要压栈数据,你堆栈只有4,所以会这样。
下面是我用其他程序调试的,可以正常执行。

2.jpg

1.jpg

不过由于你未压栈就直接pop ax 和 bx,而此时2000:4指向的内存空间全部是0。
ax=bx=0,你后面的操作依然没有改变它们的值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-1-27 16:05:30 | 显示全部楼层

你看的书应该是第一版
在第二版中是
add sp,10
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-1-28 13:46:06 | 显示全部楼层
似乎,和我的问题差不多
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-4-28 07:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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