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

posted @ 2018-10-28 21:52  547233  阅读(167)  评论(0编辑  收藏  举报