在学习王爽《汇编语言(第3版)》 检测点 10.5 (1)时,按章节前面的理论知识推理,下面这段汇编代码执行后程序返回前ax的值应该为3!但将这段汇编代码编译链接成可执行文件,并使用Debug.exe加载后,通过-t命令单步执行时,死活都得不到预期的结果,死磕了半天终于知道原因(没办法,还没学到后面的中断!),下面把实验过程记录一下,避免后来者遇到同样的问题困扰,先把汇编源代码贴上来:
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,0
call word ptr ds:[0EH]
inc ax
inc ax
inc ax
mov ax,4c00h
int 21h
code ends
end start
将汇编源程序编译链接成可执行文件后使用Debug.exe工具装载,效果如下:
然后我通过-t命单步执行,并不时查看栈段(SS)和数据段(DS)中的数据变化,效果如下:<