汇编call指令疑问

挨踢-linux 2014-05-23 09:31:45


运行call [000E],把当前ip压入栈中,然后执行使ip指向ds:[000E],ds:[000E]内容为 11 即执行1714:0011这句话,可是为什么运行完后ip变成了3302


assume cs:code
stack segment
dw 8 dup(0)
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp ,16
mov ds,ax
mov ax,0h
call word ptr ds:[0Eh]
inc ax
inc ax
inc ax

mov ax,4c00h
int 21h
code ends
end start
...全文
172 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
1cctv 2014-05-28
  • 打赏
  • 举报
回复
说一下我的理解 当执行 call [000e]时,[000e]内还是0 所以程序会转去1417:0000,同时[000e]内变为了11 当又一次call [000e]时,[000e]内是11,这时可以转到1417:0011了 至于为什么ip会变成3302,我认为是deubg神经了. 这种调用栈顶的奇怪代码,指望一个调试程序能正确下断点、保存现场是要拼人品的。

21,499

社区成员

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

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