
masm实验3实验报告.docx
6页masm实验3实验报告(1)将下面程序保存为t1.asm,生成可执行文件t1.exeassume cs:codesgcodesg segmentmov ax,2000Hmov ss,axmov sp,0add sp,10pop axpop bxpush axpush bxpop axpop bxmov ax,4c00Hint 21Hcodesg endsend(2)用debug跟踪t1.exe的执行过程,写出每一步执行后,相关寄存器中的内容和栈顶内容step 0:通过debug t1.exe加载程序后:ax=0000H;bx=0000H;cx=0016H(表示程序长度,为22个字节);ds=13D5H(表示操作系统给t1.exe分配的空闲区域的段地址);cs=13e5H(=ds+10H,与之前描述一致);ss=13e5H,sp=0000H;通过d 13e5:0 1命令查看栈顶内容,为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头两个字节为CD 20,用debug加载t1.exe.查看PSP内容:PSP区域地址范围为:ds:0~ds:ff.分类: 汇编语言 -全文完-6。
