1.实验结果

(1) 使用debug,将下面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。

mov ax,ffff

mov ds,ax

mov ax,2200

mov ss,ax

mov sp,0100

mov ax,[0]  ;ax=3130

add ax,[2]  ;ax= 6462

mov bx,[4]  ;bx=3534

add bx,[6]  ;bx=6C6A

push ax  ;sp=00FE  ;修改的内存单元的地址是 2200:FE到FF 内容为6462

push bx  ;sp= 00FC ;修改的内存单元的地址是 2200:FC到FD 内容为6C6A

pop ax  ;sp=00FE  ;ax=  6C6A;

pop bx  ;sp= 0100 ;bx= 64 62 ;

push [4]  ;sp=00FE  ;修改的内存单元的地址是 2200:FE到FF 内容为34 35

push [6]  ;sp= 00FC ;修改的内存单元的地址是 2200:FC到FD 内容为  36 37

 

 

 

 

 

 

 

 

 

 

(2)

仔细观察下图中的实验过程,然后分析:为什么在2000:0~2000:f中的内容会发生改变?

  • 前三行指令的功能为:

2000进入AX寄存器,

AX中的值赋值给SS,

SP的值改为0010。

  • 变化的原因为

 在用t指令进行调试时,会产生中断。cpu将先把标志寄存器进栈,再把当前的cs的值进栈,IP的值最后进栈。

 

2.总结体会

了解到了进栈和出栈的操作,对栈有了更深刻的理解和体会。

posted on 2018-10-26 08:30  zepto  阅读(265)  评论(1编辑  收藏  举报