List File [nul.map]: NUL Libraries [.lib]:
Definitions File [nul.def]:
产生:EXAMPLE.OBJ和 EXAMPLE.EXE文件
情况2:源程序中有错误,比如将字符串的引号改为中文的“‘”后重新用下面命令汇编连接。
>ML /Fl EXAMPLE.ASM
Microsoft (R) Macro Assembler Version 6.11
Copyright (C) Microsoft Corp 1981-1993. All rights reserved.
Assembling: example.asm
example.asm(5): error A2044: invalid character in file example.asm(8): error A2006: undefined symbol : string
则给出2条错误信息提示,并产生错误列表文件 EXAMPLE.LST 在记事本中打开该文件,内容如下:
;输出一个字符串的源程序:
.model small
.stack .data string db ’An example.',0ah,0dh,'$'
example.asm(5): error A2044: invalid character in file
.code ;定义代码段 .startup ;程序的起始点 lea dx, string
example.asm(8): error A2006: undefined symbol : string
mov ah, 09h
int 21h ; 功能调用:显示
.exit 0 ;程序结束点,返回dos end ;汇编结束
特别提示:
两处错误明显的标在源程序中。
实际上,只有一处错误,后面的错误是由于前面的错误引起的,所以改正错误时要从前往后逐个修改,并且每改完一处就重新存盘、汇编,以提高调试效率。 3、 调试:
C:\\masm>debug example.exe
-u ;反汇编 1395:0000 BA9713 MOV DX,1397 1395:0003 8EDA MOV DS,DX 1395:0005 8CD3 MOV BX,SS 1395:0007 2BDA SUB BX,DX 1395:0009 D1E3 SHL BX,1 1395:000B D1E3 SHL BX,1 1395:000D D1E3 SHL BX,1 1395:000F D1E3 SHL BX,1 1395:0011 FA CLI
1395:0012 8ED2 MOV SS,DX 1395:0014 03E3 ADD SP,BX 1395:0016 FB STI
1395:0017 8D160400 LEA DX,[0004] 1395:001B B409 MOV AH,09 1395:001D CD21 INT 21
1395:001F B8004C MOV AX,4C00 -u
1395:0022 CD21 INT 21 ??
此时可用debug命令调试该程序了。 4、 关于变量名对应的偏移地址
;源程序中的第一条指令 ;对应.exit 0 指令 源程序的第一条指令是:lea dx, string 汇编后对应的指令是:LEA DX,[0004]
因此,可看出变量string所对应的偏移地址是:0004h 如果要查看从string开始的字符串的内容,可用如下命令: -D 04 Lc
即查看从04H开始的12个单元的内容。
五、拓展题
1、有两个64位数值,按“小端方式“存放在两个缓冲区buffer1和buffer2种,计算buffer1-buffer2,并将结果存放到变量result中。 2、将DX.AX中的双字右移4位。
六、实验报告
1、写出源程序清单、程序说明、执行结果。
2、调试说明。包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。