标签:修改 寄存器变量 .com push 过程 nbsp 汇编指令 知识 指令
1.预备知识:Debug的使用
注:详见书第71页。
2.实验任务
(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=00FEH ;修改的内存单元的地址是2200:00FE内容为6462
push bx ;sp=00FCH ;修改的内存单元的地址是2200:00FC内容为6C6A
pop ax ;sp=00FEH ;ax=6C6A
pop bx ;sp=0100H ;bx=6462
push [4] ;sp=00FE ;修改的内存单元的地址是2200:00FE内容为3534
push [6] ;sp=00FC ;修改的内存单元的地址是2200:00FC内容为3736
具体的操作步骤见下图:
a.先用e命令查看和修改,再用a命令输入以上程序
b.再用r和t命令分别执行
(2)仔细观察下图中的实验过程,然后分析:为什么2000:0~2000:f中的内容会发生改变?
通过观察图中的程序段,用a命令输入程序段后,在2000H内存段创建了一个栈结构,最大空间是10H,ss:sp指向了栈顶2000:10H(栈空),给ax赋值后压栈。在还未执行这段代码时,使用d命令观察2000:00内存,创建栈结构指向这段内存时,这里面就有了ax值等。当t命令执行程序时,CPU会将一些寄存器变量自动压到栈中,就包括了寄存器变量的值。
标签:修改 寄存器变量 .com push 过程 nbsp 汇编指令 知识 指令
原文地址:https://www.cnblogs.com/ZR-1997/p/9889012.html