一.实验结论
(1) 使用Debug,将下面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。
A 使用e命令修改0021:0~0021:7内存单元数据,修改后用d命令查看是否正确写入
B 使用a命令输入p74指令
C 每一行指令单步调试
D 填空
mov ax,[0] ;ax= 5BEA
add ax,[2] ;ax= 5CCA
mov bx,[4] ;bx= 30F0
add bx,[6] ;bx= 6024
push ax ;sp= 00FE ,修改的内存单元地址是 2200:00FE 内容为 5CCA
push bx ;sp= 00FC ,修改的内存单元地址是 2200:00FC 内容为 6024
pop ax ;sp= 00FE ,ax= 6024
pop bx ;sp= 0100 ,bx= 5CCA
push [4] ;sp= 00FE ,修改的内存单元地址是 2200:00FE 内容为 30F0
push [6] ;sp= 00FC ,修改的内存单元地址是 2200:00FC 内容为 2F34
(2)仔细观察图3.19中的实验过程,然后分析:为什么2000:0~2000:f中的内容会发生变化?
A 输入代码
B 理解
1.mov ax,2000:将2000放入寄存器ax中
mov ss,ax:将寄存器ax中的值赋给ss
mov sp,10:将0010H放入sp中
2.并不知道栈顶和栈底。。。
二.总结与体会
在汇编语言中会涉及许多不同的寄存器与内存空间,要对其完全理解还有一段距离。汇编知识学的还是太少,有许多实验中遇到的问题并不能理解,还是要多加学习和练习。汇编中不同的操作也会产生一些特殊的难以理解的结果,值得花时间研究。
原文:https://www.cnblogs.com/hustur/p/9867137.html