. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->第一个程序
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  第四章实验任务解答(遇到疑问望解答)  [已解决] 回复[ 5次 ]   点击[ 649次 ]  
towersimper
[帖 主]   [ 发表时间:2008-07-10 21:44 ]   [引用]   [回复]   [ top ] 
荣誉值:9
信誉值:3
注册日期:2008-06-12 09:16
用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   ................
towersimper
[第1楼]   [ 回复时间:2008-07-10 21:57 ]   [引用]   [回复]   [ top ] 
荣誉值:9
信誉值:3
注册日期:2008-06-12 09:16
不好意思,发了之后,发现已经有人问了这个问题了,也有人解答了。的确将mov sp,4改为mov sp,8就可以执行下去了。
towersimper
[第2楼]   [ 回复时间:2008-07-10 21:57 ]   [引用]   [回复]   [ top ] 
荣誉值:9
信誉值:3
注册日期:2008-06-12 09:16
具体在http://www.asmedu.net/bbs/pasteinfo.jsp?part=1&level=book&kind=1005&qkSg=2&qID=15728&readSg=1
sbx2000_0
[第3楼]   [ 回复时间:2008-07-13 15:38 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2008-07-06 17:24
第三题没看懂是什么意思!这段内存有什么意义吗?
tomato
[第4楼]   [ 回复时间:2008-07-13 17:09 ]   [引用]   [回复]   [ top ] 
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51
回复3楼:
这道题主要是为了让咱们查看PSP的开始地址和相应的内容块。
towersimper
[第5楼]   [ 回复时间:2008-07-17 09:28 ]   [引用]   [回复]   [ top ] 
荣誉值:9
信誉值:3
注册日期:2008-06-12 09:16
此贴由 贴主 于 [ 2008-07-17 09:28 ] 结贴。 结贴原因:问题已解决
得分情况:
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved