4.0 KiB
4.0 KiB
附录一:汇编程序上机过程
一、实验目的
- 掌握编辑汇编语言源程序的基本方法。
- 掌握汇编语言源程序的汇编、链接过程。
- 掌握DOS环境下可执行文件的装载与运行。
- 学会使用调试工具DEBUG来观察程序执行情况。
二、实验内容
1. 编辑源程序
编辑工作可以用任何一种文本编辑器来完成,例如行编辑器EDLIN(全屏幕编辑器EDIT)、记事本(Notepad)、写字板等。编辑完成后,源文件以.ASM为扩展名存储。
下面是一个完整的汇编程序,程序运行时在屏幕上显示字符串"Hello World!"。
;Hello.asm
DATAS SEGMENT
STRING DB 'Hello World!',0DH,0AH,'$'
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
MAIN PROC FAR
MOV AX,DATAS
MOV DS,AX
LEA DX,STRING
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
MAIN ENDP
CODES ENDS
END MAIN
程序说明:
- 伪指令SEGMENT和ENDS用于定义一个段,段名可以是任意合法的标识符。
- 伪指令PROC和ENDP用于定义一个过程,过程名必须是合法的标识符。
- 伪指令ASSUME告诉汇编程序,段寄存器CS、DS、ES、SS分别对应哪个段。
- 程序以END伪指令结束,END后面的标号表示程序执行的起始地址。
2. 汇编源程序
源程序编辑完成后,需要用汇编程序(MASM.EXE)将源程序文件翻译成目标文件(.OBJ)。汇编命令格式为:
C:\>MASM 源程序文件名
例如,对于HELLO.ASM,汇编操作如下:
C:\>MASM HELLO.ASM
3. 链接程序
汇编后生成的目标文件(.OBJ)需要通过链接程序(LINK.EXE)链接成可执行文件(.EXE)。链接命令格式为:
C:\>LINK 目标文件名
例如:
C:\>LINK HELLO.OBJ
4. 程序的运行
链接成功后,会生成可执行文件HELLO.EXE。在DOS提示符下键入文件名即可运行:
C:\>HELLO
5. 调试程序
程序运行如果不能得到预期结果,需要用DEBUG调试工具来跟踪、分析程序执行情况。
进入DEBUG状态:
C:\>DEBUG HELLO.EXE
在DEBUG状态下,可以使用各种DEBUG命令进行调试,例如:
- R命令:显示和修改寄存器内容
- U命令:反汇编
- T命令:跟踪执行
- G命令:运行程序
三、实验步骤
-
启动编辑程序:在DOS环境下,键入EDIT并回车,进入全屏幕编辑环境。
-
输入源程序:在编辑环境下输入汇编源程序。
-
保存源程序:按Alt+F激活File菜单,选择Save项保存文件,文件名为HELLO.ASM。
-
退出编辑程序:按Alt+F激活File菜单,选择Exit项退出编辑环境。
-
汇编源程序:在DOS提示符下键入:
C:\>MASM HELLO.ASM屏幕上显示:
Microsoft (R) Macro Assembler Version 5.10 Copyright (C) Microsoft Corp 1981, 1987. All rights reserved.然后显示:
Warning Severe 0 0表示汇编成功,如果没有错误则生成目标文件HELLO.OBJ。
-
链接目标文件:在DOS提示符下键入:
C:\>LINK HELLO.OBJ屏幕上显示:
IBM Personal Computer Linker Version 2.00然后显示:
run file [HELLO.EXE]:直接按回车,接受默认文件名。或者键入其他文件名后回车。链接成功后会生成可执行文件。
-
运行程序:在DOS提示符下键入:
C:\>HELLO如果程序正确,则在屏幕上显示:
Hello World! C:\>_ -
进入DEBUG调试:如果程序运行不正确,可以进入DEBUG进行调试:
C:\>DEBUG HELLO.EXE在DEBUG提示符"-"下可以输入各种调试命令。
四、思考与练习
- 为什么汇编语言源程序需要经过汇编和链接才能运行?
- 如果汇编时出现错误,应如何处理?
- 使用DEBUG的T命令单步执行程序,观察各寄存器和内存的变化情况。