马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
(1) 将下面的程序保存为t1.asm文件,将其生成可执行文件t1.exe。assume cs:codesg
codesg segment
mov ax,2000H
mov ss,ax
mov sp,0
add sp,10
pop ax
pop bx
push ax
push bx
pop ax
pop bx
mov ax, 4c00h
int 21H
codesg ends
end
解:
1.编程:随便找个文本编辑器将以上代码输入并保存为.asm文件,甚至用系统自带的txt改后缀为.txt也行
2.编译:打开DOSBox,输入
mount c d:\try
c:
masm t1.asm
直接回车三次
3.连接:输入
link t1.obj
直接回车三次
得到t1.exe
(2) 用DEBUG跟踪t1.exe的执行过程,写出每一步执行后,相关寄存器的内容和栈顶内容。
解:
输入
debug t1.exe
-t
AX-Z000 BX=0000 CX=0014 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=081E ES=081E SS=082D CS =082E IP=0003 NU UP EI PL NZ NA PO NC
082E :0003 BEDO MOV SS, AX
-t
AX=2000 BX=0000 CX=0014 DX-0000 SP=0000 BP =0000 SI =0000 DI=0000
DS=031E ES=0B1E SS=2000 CS=082E IP=0008 NU UP EI PL NZ NA PO NC
082E :0003 830404 ADD SP ,+04
-t
AX-Z000 BX=0000 CX=0014 DX=0000 SP=0004 BP=0000 SI=0000 DI-0000
DS=081E ES=081E SS=2000 CS-08ZE IP=000B NU UP EI PL NZ NA PO NC
082E:OO0B 58 POP Ax
-t
AX=0000 BX=0000CX=0014 DX=0000 SP =0006 BP=0000 SI=0000 DI=0000
DS=081E ES=031E SS =2000 CS=082E IP=000C NU UP EI PL NZ NA PO NC
082E:000C 5B POP BX
(太长就不全放出了)
(3)PSP的头两个字节是CD20,用DEBUG加载t1.exe,查看PSP的内容。
解:
-u 081e:0
081E:0000 CD20 INT 20//看到这个int 20就应该想到和源程序 int 21的关系
081E:0002 FF9FOOEA CALL FAR [BX+ EA0O]
081E:0006 FTTT ??? DI
081E:0008 AD LODSW
031E :0009 DE4F03 FIMUL WORD PTR [BX+03 ]
081E:000C A3018A MOV [8A01] , AX
081E :000F 03A30117 ADD SP,[BP+DI+1701]
031E :0013 03A30192 ADD SP , CBP+DI+9201 ]
081E:0017 0101 ADD [BX+DI].AX
081E:0019 0101 ADD [BX+DI] ,AX
081E:001B 0002 ADD [BP+SI] ,AL
081E:001D FTTT ??? DI
081E:001F FTTT ??? DI
-d 081e:0 100
0B1E :0000 CD 20 FF9F 00 EA FFFF-ADDE4F03 A3 01 8A 03
081E :0010 A3 01 17 03 A3 01 92 01-01 010100 02FFFFFF
081E :0020 FFFFFFFFFFFFFFFF-FFFFFFFF14083556
031E :0030 A301140018001E08-FFFFFFFF00000000
031E :0040 0500000000000000-00000000000000 09
081E :0950 CD 21 CB 0909090909-09090909090009 09
081E :0060 0009090909090909-0909090909090009
081E :0070 0000000000000000-0009090909090900
081E :0080 00OD7431ZE657865-0D00000000000000
031E :0090 0009090909090909-0909090909090009
081E :00A0 0009090909090909-0909090909090009
081E :OOB0 0009090909090909-0909090909090009
081E :00CO 0000000000000000-0009090909090900
031E :00D0 0000000000000000-0000000000000000
031E :OOE0 0009090909090909-0909090909090009
081E :O0FO 0009090909090909-0909090909090009
081E:0100 B8
如果-u 082e:0就可以看到源程序 |