- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
汇编语言(王爽)实验三编程、编译、连接、跟踪
(1)将下面程序保存为t1.asm,生成可执行文件t1.exe。
assumecs:codesg
codesgsegment
movax,2000H
movss,ax
movsp,0
addsp,10
popax
popbx
pushax
pushbx
popax
popbx
movax,4c00H
int21H
codesgends
end
(2)用debug跟踪t1.exe的执行过程,写出每一步执行后,相关寄存器中的内容和栈顶
内容。
step0:通过debugt1.exe加载程序后:
ax=0000H;bx=0000H;
cx=0016H(表示程序长度,为22个字节);
ds=13D5H(表示操作系统给t1.exe分配的空闲区域的段地址);
cs=13e5H(=ds+10H,与之前描述一致);
ss=13e5H,sp=0000H;通过d13e5:01命令查看栈顶内容,为00b8H;
step1:单步执行第一条指令后:
ax=2000H;bx=0000H;
其余cx,ds,cs,ss,sp均不变;
此时栈顶内容理应不变,查看依旧为00b8H;
step2:单步执行第二条指令后,自动连带执行第三条指令:
ax=2000H;bx=0000H;
其余cx,ds,cs均不变;ss和sp被重置,栈顶指向:2000:0,查看栈顶内容,为:0ff1H;
step3:单步执行第四条指令后:
ax=2000H;bx=0000H;
其余cx,ds,cs,ss均不变;sp被重置,栈顶指向:2000:0a,查看栈顶内容,为:615fH;
step4:单步执行第五条指令后:
ax=615fH(与上一步所得一致);bx=0000H;
其余cx,ds,cs,ss均不变;sp=sp+2,栈顶指向:2000:0c,查看栈顶内容,为:0DF0H;
因重新debug,导致前后ax不一致
step5:单步执行第六条指令后:
ax=13e5H;bx=0DF0H(与上一步所得一致);
其余cx,ds,cs,ss均不变;sp=sp+2,栈顶指向:2000:0E,查看栈顶内容,为:0B16H;
step6:单步执行第七条指令后:
ax=13e5H;bx=0DF0H;
其余cx,ds,cs,ss均不变;sp=sp-2,栈顶指向:2000:0C,查看栈顶内容,为:13E5H
(与AX一致);
step7:单步执行第八条指令后:
ax,bx,cx,ds,cs,ss均不变;sp=sp-2,栈顶指向:2000:0A,查看栈顶内容,为:0DF0H
(与BX一致);
step8:单步执行第九条指令后:
ax=0DF0H(与上步查看一致);
bx,cx,ds,cs,ss均不变;sp=sp+2,栈顶指向:2000:0C,查看栈顶内容,为:13E5H;
step9:单步执行第十条指令后:
bx=13E5H(与上步查看一致);
ax,cx,ds,cs,ss均不变;sp=sp+2,栈顶指向:2000:0E,查看栈顶内容,为:0B16H;
(3)PSP头两个字节为CD20,用debug加载t1.exe.查看PSP内容:
PSP区域地址范围为:ds:0~ds:ff.
分类:汇编语言
文档评论(0)