目录
3.1汇编语言的系统工作文件
-
使用编辑程序编辑源程序文件(.asm)使用汇编程序(MASM)将源程序文件(.asm)汇编成目标文件(.obj)
-
使用连接程序(LINK),将目标文件(.obj)连接成可执行文件(.EXE)
-
使用调试程序(DEBUG),调试可执行文件
运行汇编语言程序需要以下文件:
3.2 程序实例的上机步骤
3.3.1 编辑 -- 建立ASM源程序文件
D: \>MASM6.15\>EDIT HELLO.ASM
3.3.2 汇编 -- 产生OBJ二进制目标文件
D: \>MASM6.15\>MASM HELLO
3.3.3 连接 -- 产生EXE可执行文件
D: \>MASM6.15\>LINK HELLO
3.3.4 关于LST列表文件
D: \>MASM6.15\>MASM HELLO HELLO HELLO
列表文件报告了汇编过程中产生的很多有价值的参考信息。主要包括源程序和机器语言清单、指令和变量的偏移地址等等。
3.3.5 程序的运行和调试
运行:
D>Hello
调试:
DEBUG Hello.EXE
1. 反汇编命令U
格式:U 地址
2.运行程序命令G
格式:G[=起始地址] [中止地址]
-
若省掉起始地址,则以当前CS:IP作为起始地址。
-
默认段地址在段寄存器CS中。
3. 跟踪程序命令T
格式1:T[=起始地址]
-
单步执行程序,在指令执行中逐条进行跟踪,若省去地址,则从CS:IP现行值执行。
格式2:T[=起始地址] [指令条数]
-
可对多条指令进行跟踪。
-
注意:对于INT指令不能使用T命令跟踪。
4. 单步执行程序指令P
P命令,用以执行循环、重复的字符串指令、软件中断或子例程。
例如T命令无法一次执行的INT指令,P命令就可以一次执行完这个系统例行程序,回到用户程序中。
5. 退出命令Q
Q命令退出DEBUG。
3.3 常用的DOS系统功能调用
21H号中断:是DOS提供给用户的用于调用系统功能的中断,主要包括设备管理、目录管理和文件管理三个方面的功能。
功能调用的格式:
1. 键盘输入一个字符并回显—01H
mov ah,01h ;功能号:ah←01h
int 21h ;功能调用
cmp al,’Y’ ;处理出口参数al
je yeskey ;是“Y”
cmp al,’N’
je nokey ;是“N”
yeskey: ...
nokey: ...
2. 显示一个字符-02H
例:在当前显示器光标位置显示一个问号
mov ah,02h ;设置功能号:ah←02h
mov dl,'?' ;提供入口参数:dl←'?'
int 21h ;DOS功能调用:显示问号
3. 显示字符串-09H
例:string db 'Hello,Everybody! $‘ ;在数据段定义要显示的字符串
...
mov ah,09h ;设置功能号 ah←09h
mov dx, offset string;提供入口参数 dx←字符串的偏移地址
int 21h ;DOS功能调用字符串显示
4. 键盘输入到缓冲区-0AH
缓冲区的定义:
-
第1字节事先填入最多欲接收的字符个数(包括回车字符,可以是1~255)
-
第2字节将存放实际输入的字符个数(不包括回车符)
-
第3字节开始将存放输入的字符串
-
实际输入的字符数多于定义数时,多出的字符丢掉,且响铃
buffer db 81 ;定义缓冲区
;第1个字节填入可能输入的最大字符数
db ? ;存放实际输入的字符数
db 81 dup(?) ;存放输入的字符串
...
mov dx, seg buffer ;伪指令seg取得buffer的段地址
mov ds, dx ;设置数据段DS
mov dx, offset buffer
mov ah, 0ah
int 21h
5. 结束程序返回DOS-4CH
MOV AH,4CH
INT 21H