为啥同一个程序,单步执行和debug执行出现的结果不一样呢?

dream_uping 2020-08-02 09:02:20

原文:https://blog.csdn.net/weixin_42859280/article/details/107732337

​​​​​​
代码:

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,cs
mov ss,ax
mov sp,30h

mov ax,0
mov ds,ax
mov bx,0
mov cx,8
s0: push [bx]
pop cs:[bx]

add bx,2
loop s0

mov ax,4c00h
int 21h
codesg ends
end start
首先,测试正确的:


测试单步执行:
-t -p都不行。这里试一下-p吧。

1,



如此下去,出现结果:





为什么呢?
...全文
171 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zara 2020-08-03
  • 打赏
  • 举报
回复
SP 设置得不对吧,30h 指在了代码的开头部分,前面数据是 24h 字节,所以,单步会破坏那里的代码,而直接运行可能不会处罚中断进而使用堆栈,就不会产生问题。试试把 SP 设置为 24h 或干脆挪到其它更广阔的地方。

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧