1.实验任务
1.使用debug,将下面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空
1.代码
mov ax,0021
mov ds,ax
mov ax,2000
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:00FE 内容为 3130
扫描二维码关注公众号,回复:
3841925 查看本文章
push bx ;sp= 00FC;修改的内存单元的地址是 2200:00FC内容为 6462
pop ax ;sp= 00FE;ax= 6C6A
pop bx ;sp= 0010 ;bx= 6462
push [4] ;sp= 00FE;修改的内存单元的地址是 2200:00FE 内容为 3534
push [6] ;sp= 00FC ;修改的内存单元的地址是 2200:00FC 内容为 6C6A
PS:在程序段中有一段mov sp,0100在执行时未被显示,但是被执行。书上解释:debug的T指令在执行修改寄存器SS的指令时,下条指令也会被接着执行。
这有关中断机制。
2.截图
在程序段之前有e指令改写指令,到mov ax,[0],add ax [2]时,小端法,3130加3332即6462
2.观察下实验,分析2000:0到2000:f的内容会改变
根据中断机制,程序段在 mov ss,ax时便将mov sp 10运行(用T指令执行一条指令后,cpu响应单步中断),标志寄存器入栈,cs IP出栈,而正好查看到改变的部分,所以才会有这样的效果