题目描述
(1) 将下面的程序保存为2.asm文件,将其生成可执行文件2.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
按书中所示,从DOS进入EDIT
file->save as
退出EDIT,进行编译,连接
生成可执行文件2.exe
(2) 用DEBUG跟踪2.exe的执行过程,写出第一步执行后,相关寄存器的内容和栈顶内容。
Microsoft(R) Windows DOS
(C)Copyright Microsoft Corp 1990-2001.
D:\>debug 2.exe
-r
AX=0000 BX=0000 CX=0016 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0C69 ES=0C69 SS=0C79 CS=0C79 IP=0000 NV UP EI PL NZ NA PO NC
0C79:0000 B80020 MOV AX,2000
-t
AX=2000 BX=0000 CX=0016 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0C69 ES=0C69 SS=0C79 CS=0C79 IP=0003 NV UP EI PL NZ NA PO NC
0C79:0003 8ED0 MOV SS,AX
-t
AX=2000 BX=0000 CX=0016 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0C69 ES=0C69 SS=2000 CS=0C79 IP=0008 NV UP EI PL NZ NA PO NC
0C79:0008 83C40A ADD SP,+0A
-t
AX=2000 BX=0000 CX=0016 DX=0000 SP=000A BP=0000 SI=0000 DI=0000
DS=0C69 ES=0C69 SS=2000 CS=0C79 IP=000B NV UP EI PL NZ NA PE NC
0C79:000B 58 POP AX
-d 2000:0 f
2000:0000 00 20 00 00 0B 00 79 0C-80 06 79 0C 80 06 00 1F . ....y...y.....
-t
AX=0C79 BX=0000 CX=0016 DX=0000 SP=000C BP=0000 SI=0000 DI=0000
DS=0C69 ES=0C69 SS=2000 CS=0C79 IP=000C NV UP EI PL NZ NA PE NC
0C79:000C 5B POP BX
-d 2000:0 f
2000:0000 00 20 79 0C 00 00 0C 00-79 0C 80 06 80 06 00 1F . y.....y.......
-t
AX=0C79 BX=0680 CX=0016 DX=0000 SP=000E BP=0000 SI=0000 DI=0000
DS=0C69 ES=0C69 SS=2000 CS=0C79 IP=000D NV UP EI PL NZ NA PE NC
0C79:000D 50 PUSH AX
-d 2000:0 f
2000:0000 00 20 79 0C 79 0C 00 00-0D 00 79 0C 80 06 00 1F . y.y.....y.....
-t
AX=0C79 BX=0680 CX=0016 DX=0000 SP=000C BP=0000 SI=0000 DI=0000
DS=0C69 ES=0C69 SS=2000 CS=0C79 IP=000E NV UP EI PL NZ NA PE NC
0C79:000E 53 PUSH BX
-d 2000:0 f
2000:0000 00 20 79 0C 00 00 0E 00-79 0C 80 06 79 0C 00 1F . y.....y...y...
-t
AX=0C79 BX=0680 CX=0016 DX=0000 SP=000A BP=0000 SI=0000 DI=0000
DS=0C69 ES=0C69 SS=2000 CS=0C79 IP=000F NV UP EI PL NZ NA PE NC
0C79:000F 58 POP AX
-d 2000:0 f
2000:0000 79 0C 00 00 0F 00 79 0C-80 06 80 06 79 0C 00 1F y.....y.....y...
-t
AX=0680 BX=0680 CX=0016 DX=0000 SP=000C BP=0000 SI=0000 DI=0000
DS=0C69 ES=0C69 SS=2000 CS=0C79 IP=0010 NV UP EI PL NZ NA PE NC
0C79:0010 5B POP BX
-d 2000:0 f
2000:0000 79 0C 80 06 00 00 10 00-79 0C 80 06 79 0C 00 1F y.......y...y...
-t
AX=0680 BX=0C79 CX=0016 DX=0000 SP=000E BP=0000 SI=0000 DI=0000
DS=0C69 ES=0C69 SS=2000 CS=0C79 IP=0011 NV UP EI PL NZ NA PE NC
0C79:0011 B8004C MOV AX,4C00
-t
AX=4C00 BX=0C79 CX=0016 DX=0000 SP=000E BP=0000 SI=0000 DI=0000
DS=0C69 ES=0C69 SS=2000 CS=0C79 IP=0014 NV UP EI PL NZ NA PE NC
0C79:0014 CD21 INT 21
-p
Program terminated normally
-q
(3)PSP的头两个字节是CD20,用DEBUG加载2.exe,查看PSP的内容。
Microsoft(R) Windows DOS
(C)Copyright Microsoft Corp 1990-2001.
D:\>debug t1.exe
-r
AX=0000 BX=0000 CX=0016 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0C69 ES=0C69 SS=0C79 CS=0C79 IP=0000 NV UP EI PL NZ NA PO NC
0C79:0000 B80020 MOV AX,2000
-d 0c69:0
0C69:0000 CD 20 FF 9F 00 9A F0 FE-1D F0 4F 03 80 06 8A 03 . ........O.....
0C69:0010 80 06 17 03 80 06 6F 06-01 01 01 00 02 FF FF FF ......o.........
0C69:0020 FF FF FF FF FF FF FF FF-FF FF FF FF 2D 0C 4C 01 ............-.L.
0C69:0030 40 0B 14 00 18 00 69 0C-FF FF FF FF 00 00 00 00 @.....i.........
0C69:0040 05 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0C69:0050 CD 21 CB 00 00 00 00 00-00 00 00 00 00 20 20 20 .!...........
0C69:0060 20 20 20 20 20 20 20 20-00 00 00 00 00 20 20 20 .....
0C69:0070 20 20 20 20 20 20 20 20-00 00 00 00 00 00 00 00 ........
-q