| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
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就可以看到源程序 |   
 
 
 
 |