实验2 用机器指令和汇编指令编程
(1)用E命令将内存单元0021:0到0021:7连续8个字节数据修改为30H、31H、32H、33H、34H、35H、36H、37H,并用D命令查看修改结果。
(2)用R命令查看CS、IP的值,用A命令输入程序段。
(3)用T命令单步调试 AX=3130H
AX=6462H
BX=3534H
BX=6C6AH
SP=00FE;修改的内存单元的地址是2200:00FE内容为6462H
SP=00FC;修改的内存单元是2200:00FC内容为6C6AH
SP=00FE;AX=6C6AH
SP=0100;BX=6462H
SP=00FE;修改的内存单元的地址是2200:00FE内容为3534H
SP=00FC;修改的内存单元地址是2200:00FC内容为3736H
2.
(1)用A命令输入汇编指令,用E命令修改2000:0到2000:F的值,用D命令查看修改后的值
(2)用T命令单步调试,每次调试后都用D命令查看2000:0到2000:F的值的变化
mov ax,2000
mov ss,ax ;设置栈的段地址,SS=2000H,不能直接向段寄存器SS中送入数据,所以用AX中转
mov sp,10 ;设置栈的偏移地址,因栈为空,所以SP=0010H
初始时栈顶和栈底为2000:0010
通过观察发现,在执行完mov ss,ax后,栈内存单元的值有了变化,值与CS、AX等寄存器的值相同。
总结与体会
Debug的T命令在执行修改寄存器SS的指令时,下一条指令也紧接着被执行。
执行push时,CPU先将SP=SP-2,后向SS:SP处传送数据;执行pop时,CPU先读取SS:SP处的数据,再将SP=SP+2