标签:程序 alt 连续 数据 并且 单元 写入 了解 内存
(1)使用debug,将下面的程序段写入内存,逐条执行
使用e命令修改 0021:0~0021:7数据,将连续8个字节改为30H, 31H, 32H, 33H,34H,35H,36H,37H
用a命令写入指令
用t命令逐条执行
得到数据:
mov ax,0021
mov ds,ax
mov ax,2000
mov ss,ax
mov sp,0100
mov ax,[0] ;ax=3130H
add ax,[2] ;ax=6462H
mov bx,[4] ;bx=3534H
add bx,[6] ;bx=6C6AH
push ax ;sp=00FEH; 修改内存单元地址是2200:FE,内容为6462H
push bx ;sp=00FCH; 修改内存单元地址是2200:FC,内容为6C6AH
pop ax ;sp=00FEH;ax=6C6AH
pop bx ;sp=0100H;bx=6462H
push [4] ;sp=00FEH; 修改内存单元地址是2200:FE,内容为3534H
push [6] ;sp=00FCH; 修改内存单元地址是2200:FC,内容为3736H
(2)观察图中实验过程,分析:为什么2000:0~2000:f中内容会发生改变
用a命令输入指令
用e命令修改内存的内容
用r命令查看内容
并用t命令逐条执行,同时用d命令查看内存中的内容
观察发现内存2000:0~2000:f中存放了cs和ip的值,并且位置改变
猜想:有可能是执行操作时修改了内存,至于原因不清楚,可能和栈有关
总结:
本次实验更加困难,但加深了对于debug工具的认识,对于指令更加了解。
同时发现自己对于栈没有足够的认识,不能够熟练掌握。但是知道了push和pop指令的用法。
标签:程序 alt 连续 数据 并且 单元 写入 了解 内存
原文地址:https://www.cnblogs.com/baixingyeblog/p/9865113.html