工程学院汇编语言程序设计实验教程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汇编语言实验教程
一、常用DOS命令
1. 进入虚拟DOS
选中开始菜单中的“运行”命令,输入cmd 后按确定,可以进入虚拟DOS环境。如图所示:
打开窗口后,可以在属性中修改字体大小、颜色和窗口大小。并且可以用组合键ALT+ENTER进行窗口最大化。
2. 常用DOS命令
(1)查看目录命令DIR
C:\>dir
C:\>dir/w
(2)显示文件内容命令TYPE
C:\>type test.asm
(3)文件拷贝命令COPY
C:\>copy sa.asm sd.asm 将文件sa.asm拷贝为sd.asm
(4)改变盘符命令
C:\>e:
结果为:E:\>
(5)进入下一级目录
C:\>cd 子目录名
例如:C:\>cd masm5
得:C:\masm5>
(6)改变目录
例如:C:\>cd windows\temp
得:C:\>windows\temp>
(7)退到上级目录
例如:C:\>masm5>abc>cd..
得:C:\>masm5
(8)退到根目录
例如:C:\>masm5>cd\
得:C:\>
(9)清屏
例如:C:\>cls
3. DOS下常用快捷健
(1)清除当前命令行:ESC
(2)输入上次输入的命令:F5
(3)显示曾经输入的所有命令供选择并执行:F7
(4)搜索命令的历史记录,循环显示所有曾经输入的命令,直到按下回车键为止:F8 【技巧1】虚拟DOS下复制粘贴方法
在窗口上点击鼠标右键,选择“标记”后可以用鼠标选择需要复制的字符,点一下右键,然后在光标处点右键选“粘贴”即可。
【技巧2】虚拟DOS窗口增加滚动条
在虚拟DOS窗口中选属性->布局-> 屏幕缓冲区大小->将“高度”改为80以上。
二、程序的编辑、编译和链接
下面我们完整的完成一个实验,实验要求为在计算机屏幕上显示一个字符串“HELLO!”,具体步骤如下。
1. 调用文本编辑软件建立源程序.ASM文件。
利用Windows2000操作系统附件中的“记事本”编辑以下源程序。命名为:Test1.ASM,该程序的功能是在计算机屏幕上显示一个字符串“HELLO!”。
DATA SEGMENT
S1 DB ‘HELLO!’,‘$’
DATA ENDS
STACK SEGMENT PARA STACK
DB 64 DUP(?)
STACK ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE,DS:DATA,SS:STACK
START: PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV AH,09H
MOV DX,OFFSET S1
INT 21H
RET
MAIN ENDP
CODE ENDS
END S TART
2. 调用汇编程序MASM对源程序汇编产生.OBJ文件。
在C:〉提示符下键入MASM Test1.ASM(回车)
执行上述操作命令之后将在屏幕上显示如下信息:
Microsoft(R) Macro Assembler Version 5.00
Copyright(C) Mirosoft Corp 1981-1985,1987.All rights reserved
Object filename[Test1.OBJ]:(回车)
Source listing[NUL.LST]:(回车)
Cross reference[NUL.CRF]:(回车)
50678 + 410090 Bytes symbol space free
0 warning Errors
0 Severe Errors
在汇编过程中,汇编程序一般采用两遍扫描的方法,第一遍扫描源程序产生符号表、处理伪指令等,第二遍扫描产生机器指令代码、确定数据等。
在汇编过程中还会产生列表文件和交叉引用文件。列表文件的后缀为.LST,主要用于给出源程序和机器代码程序的清单,以供检查程序使用。交叉引用文件的后缀为.CRF,它是一个为源程序所引用的各种符号进行前后对照的文件,主要用于给出不同程序段中互相引用的全部符号列表。这两个文件是可有可无的,如果不需要生成这两个文件,可以在汇编过程中直接按回车跳过。
列表文件有两部分内容。在第一部分源程序中,最左列是数据或指令在该段从0开始的相对偏移地址,向右依次是指令的机器代码字节个数、机器代码和汇编语言语句。机器代码后有字母"R"表示该指令的立即数/位移量现在不能确定或是只是相对地址,它将在程序连接或进入主存时才能定位。带有“*”的处理器指令是由前面一条伪指令产生的,采用/Sg选项时的列表文件才罗列。如果陈序中有错误(ERROR)或警告(W ARMING),也会会在相应位置提示。列表文件的第二部分是标示符使用情况。对段名和组名给出他们的名字(NAME)、尺寸(Size)、长度(Length)、定位(Align)、组合(Combine)和类别(Class)属性;对符号给出他们的名字、类型(Type)、数值(Value)和属性(Attr)。采用简化段定义格式,有许多汇编系统的预定义标示符,例如@DATA等。
【小技巧】输入“MASM test1; ”(后面加个分号)可以省去中间文件生成的3次提示而直接生成.obj文件
3. 调用链接程序LINK对目标文件进行链接产生可执行文件。
在C:〉提示符下键入LINK Test1(回车)
执行上述命令后将在屏幕上显示如下信息:
Microsoft(R) Overlay Linker Version 3.6
Copyright(C) Mirosoft Corp 1983-1987.All rights reserved
Run File[Test1.EXE]
List File[NUL.MAP]:
Libraries[.LIB]:
在汇编过程中形成了目标文件(.OBJ),但是在该文件中,只是将源程序的操作码部分变成了机器码,而地址操作数还是可浮动的相对地址,不是实际地址,浮动地址需要再定位。只有经过链接过程才能形成最后的可执行文件。链接程序的功能就是把一个或多个目标文件合并成一个可执行文件,其后缀为.EXE。
其实在链接过程中一共形成两个文件:第一个是可执行文件(.EXE)。默认的可执行文件名字与源程序文件相同,也可以根据用户要求进行修改可执行文件的名字。链接过程中形成的第二个文件是内存映像文件(.MAP),它给出了每个段的地址分配情况和长度。如果不需要该文件则可以在链接命令执行时直接键入回车键。在链接过程中还与一个库文件(.LIB文件)相关。一般的汇编程序不需要库文件。但是当汇编语言与高级语言(如C语言)接口时需要用到库文件。此时输入相应的库文件名字即可。映像文件也是一种文本文件,含有每段在存储器中的分配情况。映像文件中首先给出了该程序各个逻辑段的起点(Start)、终点(sTOP)、长度(Length)、段名(Name)和类别(Class);然后是段组(GROUP)位置和组名;最后提示程序开始执行的逻辑地址。注意,这里的起点、终点和段地址是以该程