实验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

浙公网安备 33010602011771号