- 实验内容、程序清单及运行结果
实验内容:
(1)使用debug,将下面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。
源程序如下:
接着我们单步执行结果如下所示
以上就是实验的全部结果,分析实验结果我们对实验内容进行填空,如下:
mov ax,ffff
mov ds,ax
mov ax,2200
mov ss,ax
mov sp,0100
mov ax,[0] ;ax=C0EAH
add ax,[2] ;ax=C0FCH
mov bx,[4] ;bx=30F0H
add bx,[6] ;bx=6021H
push ax ;sp=00FEH 修改的内存单元的地址是2200:FE到FF内容为:C0FCH
push bx ;sp=00FCH 修改的内存单元的地址是2200:FC到FD内容为:6021H
pop ax ;sp=00FEH ax=6021H
pop bx ;sp=0100H bx=C0FCH
push [4] ;sp=00FEH 修改的内存单元的地址是2200:FE到FF内容为:30F0H
push [6] ;sp=00FCH 修改的内存单元的地址是2200:FC到FD内容为:2F31H
- 仔细观察3.19中的实验过程,然后分析:为什么2000:0-2000:f中的内容会发生改变?
当执行 t 命令时,实际上触发了中断,CPU会在执行中断例程时自动将一些寄存器的值保存到栈中。在这种情况下,059D代表其中一个寄存器的值,0b39代表 CS 寄存器的值,0108代表 IP 寄存器的值。