我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: 请教汇编语言程序的调试 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

何必问



性别: 帅哥 状态: 该用户目前不在线
等级: 初出茅庐
发贴: 72
威望: 0
浮云: 1324
在线等级:
注册时间: 2007-04-16
最后登陆: 2009-09-22

5come5帮你背单词 [ dollar /'dolə/ n. 美元,元 ]


请教汇编语言程序的调试

我编了一个很简单的程序如下(只是为尝试,请不要在功能上纠缠):
Copy code
DAT    SEGMENT
        A1 DB ?
        A2 DB 8
        K1 EQU 100
DAT    ENDS
COD    SEGMENT
ASSUME  DS:DAT,CS:COD
        MOV AX,DAT
        MOV DS,AX
        MOV BX,100
        MOV [BX],'ok'
        MOV BYTE PTR DS:[106],23H
COD    ENDS
          END

保存为test.asm。汇编、连接后,生成test.exe。然后我运行debug.exe。先是用以下命令:
Copy code
debug [driver:\path\]test.exe

后来又尝试不带文件名运行debug.exe,用以下命令加载文件:
Copy code
-N [driver:\path\]test.exe
-L

不管我用哪一种方式装载程序,用-R检查寄存器却显示
Copy code
-R
AX=0000 BX=0000 CX=001F DX=0000 SP=0000 SI=0000
DS=13C9 ES=13C9 SS=13D9 CS=13D9 IP=0000 NV UP EI PL NZ NA PO NC
13C9:0000 0008            ADD        [BX+SI],CL                                DS:0000=CD
-

我的问题是:
为什么BX不是0064?
代码装到了那个地方(内存地址)?
或者我的调试方法出错了?
望各位指正!
顶端 Posted: 2007-10-27 16:08 | [楼 主]
何必问



性别: 帅哥 状态: 该用户目前不在线
等级: 初出茅庐
发贴: 72
威望: 0
浮云: 1324
在线等级:
注册时间: 2007-04-16
最后登陆: 2009-09-22

5come5帮你背单词 [ catholic /'kæθəlik/ n. 天主教徒;a. 天主教的 ]


已在风中求得答案。缺了启动标号,修改为
Copy code
DAT    SEGMENT
        A1 DB ?
        A2 DB 8
        K1 EQU 100
DAT    ENDS
COD    SEGMENT
ASSUME  DS:DAT,CS:COD
START:  MOV AX,DAT
        MOV DS,AX
        MOV BX,100
        MOV [BX],'ok'
        MOV BYTE PTR DS:[106],23H
COD    ENDS
          END  START

后一切正常。
顶端 Posted: 2007-10-27 23:06 | [1 楼]
我来我网·5come5 Forum » 程序员之家

Total 0.010533(s) query 5, Time now is:11-23 08:17, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号