[2012-11-09 23:20] 实验二
1. (1)使用DEBUG,将上面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。
mov ax,ffff
mov ds,ax
mov ax,2200
mov ss,ax
mov sp,0100
mov ax,[0] ;ax= 5beah
add ax,[2] ;ax= 00e0h
mov bx,[4] ;bx= 31F0H
add bx,[6] ;bx= 6122H
push ax ;sp= 00FEH ,修改的内存单元地址是 2200:00FE内容为 00e0H
push bx ;sp= 00FCH ,修改的内存单元地址是 2200:00FC 内容为 6122H
pop ax ;sp= 00FEH ,ax= 6122H
pop bx ;sp= 0100H ,bx= 6122H
push [4] ;sp= 00FEH ,修改的内存单元地址是 2200:00FE 内容为 31F0
push [6] ;sp= 00FCH ,修改的内存单元地址是 2200:00FC 内容为 2F32
2. (2)仔细观察图3.19中的实验过程,然后分析:为什么2000:0~2000:F中的内容会发生改变?
因为在debug中用到了中断,cpu把当前段寄存器中的值入栈保护起来,然后把cpu的数据存到相应的段寄存器中,所以我们看到有的数据不是程序中的 .
不知道理解的对不对。。。希望指出错误、、、
mov ax,ffff
mov ds,ax
mov ax,2200
mov ss,ax
mov sp,0100
mov ax,[0] ;ax= 5beah
add ax,[2] ;ax= 00e0h
mov bx,[4] ;bx= 31F0H
add bx,[6] ;bx= 6122H
push ax ;sp= 00FEH ,修改的内存单元地址是 2200:00FE内容为 00e0H
push bx ;sp= 00FCH ,修改的内存单元地址是 2200:00FC 内容为 6122H
pop ax ;sp= 00FEH ,ax= 6122H
pop bx ;sp= 0100H ,bx= 6122H
push [4] ;sp= 00FEH ,修改的内存单元地址是 2200:00FE 内容为 31F0
push [6] ;sp= 00FCH ,修改的内存单元地址是 2200:00FC 内容为 2F32
2. (2)仔细观察图3.19中的实验过程,然后分析:为什么2000:0~2000:F中的内容会发生改变?
因为在debug中用到了中断,cpu把当前段寄存器中的值入栈保护起来,然后把cpu的数据存到相应的段寄存器中,所以我们看到有的数据不是程序中的 .
不知道理解的对不对。。。希望指出错误、、、
评论次数(0) |
浏览次数(345) |
类型(汇编作业) |
收藏此文 |