用masm编译程序编译后,再用link连接程序连接后生成tl.exe文件。
c:\masm\debug tl.exe<enter>
-r<enter>
AX=0000 BX=0000 SP=0000 DS=13E6 SS=13F6 CS=13F6 IP=0000
-t<enter>
AX=2000 BX=0000 SP=0000 DS=13E6 SS=13F6 CS=13F6 IP=0003
-t<enter>
AX=2000 BX=0000 SP=0000 DS=13E6 SS=2000 CS=13F6 IP=0008
-t<enter>
AX=2000 BX=0000 SP=0004 DS=13E6 SS=2000 CS=13F6 IP=000B
-t<enter>
此时马上就弹出一个对话框,显示
命令提示符 - debug tl.exe
NTVDM CPU遇到无效的指令。
CS:0000 IP:0003 OP:00 bb 13 fb 0d选择“关闭”终止应用程序。
接着就是“关闭”和“忽略”两个按钮。
点击忽略后显示:
AX=0201 BX=CDDF CX=53DB DX=4167 SP=000A BP=1208 SI=0000 DI=0000
DS=1208 ES=13E6 SS=F01D CS=0000 IP=0003 NV UP EI PL NZ NA PO CY
0000:0003 00BB13FB ADD [BP+DI+FB13],BH SS:0D1B=E6
明显跳入其他的内存区。
而点击“关闭后”,退出到cmd界面。
尝试了好几次都是如此。
此外,我也很奇怪,刚设置好一个栈,没有入栈,应该是空栈,怎么还没有入栈,就先出栈了。也许是如此奇怪,当在debug中输入-t并按“Enter”后,就出现上述对话框。
(2)PSP的头两个字节是CD 20,用Debug加载tl.exe,查看PSP的内容。
用Debug加载tl.exe后,ds显示内存区的起始地址,且内存区前256个内存单元为PSP数据区,之后的内存区才是程序代码区。所以PSP所在的内存单元范围为:ds:0-ds:00FFH.因此调入debug进程后,只须输入-d ds:0 ff即可。
c:\masm debug tl.exe<enter>
-r<enter>
AX=0000 BX=0000 CX=0016 DX=0000 SP=0000 BP=0000 SI=0000 DI=000
DS=13E6 ES=13E6 SS=13F6 CS=13F6 IP=0000 NV UP EI PL NZ NA PO NC
13F6:0000 B80020 MOV AX,2000
-d 13E6:0 ff<enter>
13E6:0000 CD 20 FF 9F 00 9A F0 FE-1D F0 4F 03 FB 0D 8A 03 . ........O.....
13E6:0010 FB 0D 17 03 FB 0D EA 0D-01 01 01 00 02 FF FF FF ................
13E6:0020 FF FF FF FF FF FF FF FF-FF FF FF FF A8 13 4C 01 ..............L.
13E6:0030 BB 12 14 00 18 00 E6 13-FF FF FF FF 00 00 00 00 ................
13E6:0040 05 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
13E6:0050 CD 21 CB 00 00 00 00 00-00 00 00 00 00 20 20 20 .!...........
13E6:0060 20 20 20 20 20 20 20 20-00 00 00 00 00 20 20 20 .....
13E6:0070 20 20 20 20 20 20 20 20-00 00 00 00 00 00 00 00 ........
13E6:0080 00 0D 74 6C 2E 65 78 65-0D 42 4C 41 53 54 45 52 ..tl.exe.BLASTER
13E6:0090 3D 41 30 0D 64 64 72 65-73 73 2E 20 20 46 6F 72 =A0.ddress. For
13E6:00A0 20 65 78 61 6D 70 6C 65-3A 0D 20 6F 6E 20 4E 54 example:. on NT
13E6:00B0 56 44 4D 2C 20 73 70 65-63 69 66 79 20 61 6E 20 VDM, specify an
13E6:00C0 69 6E 76 61 6C 69 64 0D-20 6F 6E 6C 79 2E 0D 00 invalid. only...
13E6:00D0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
13E6:00E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
13E6:00F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ |