《汇编语言》
计算机学院硬件实验室
第1部分 实验预备知识
1.1 汇编语言程序的上机操作过程
1.2 常用DEBUG命令的功能
第2部分 汇编语言实验
实验DEBUG基本命令使用……………………………………………..8
实验汇编语言程序的调试与运行……………………………………….9
实验3  顺序结构程序设计………………………………………………….10
实验4  分支程序设计………………………………………………………11
实验5  循环程序设计………………………………………………………12
实验6  子程序设计…………………………………………………………15
实验7  中断服务程序设计…………………………………………………16
实验8  综合程序设计………………………………………………………17
实验9 32位80x86程序设计………………………………………………20
第1部分 实验预备知识
汇编语言程序设计是一门实践性很强的课程。编写程序、上机调试、运行程序是进一步学习和掌握汇编语言程序设计的必要手段。建立程序、调试程序需要一些应用程序的帮助。下面先介绍一些与上机操作有关的应用程序,以为第二部分的实验做出必要的准备。
1.1 汇编语言程序的上机操作过程
一、所需文件
为运行汇编语言程序至少要在磁盘上建立以下文件:
EDIT.COM(编辑程序)或其他编辑软件
MASM.EXE (汇编程序)
LINK.EXE(连接程序)
DEBUG.EXE(调试程序,DOS外部命令文件)
二、运行汇编语言程序的操作步骤
1.用编辑程序建立.ASM源文件;
2.用汇编程序把ASM文件转换成.OBJ文件;
3.用连接程序把OBJ文件转换成.EXE文件;
4.用DOS命令直接输入文件名就可执行该程序。
三、 汇编语言源程序上机操作
第一步:建立汇编源程序(即:建立文件名.asm)
这个过程就相当于我们在纸上编写源程序代码一样,只不过是将纸变为了计算机,这个过程也称源代码录入。将源程序代码录入计算机的方法很多,下面将介绍具体方法。
(1)通过windows自带的EDIT.EXE文本编辑器进行输入。双击图标在DOS提示符下键入:EDIT回车,这时如果你系统内可调用时,EDIT的操作画面便会出现在屏幕上,你就可在提示下进行录入了,当录入完毕后,选择存盘并给你输入的文件起一个文件名,形式:filename.asm ;(其中filename为你起的文件名,由1-8个字符组成),asm 是为汇编程序识别而必须加上去的,不可更改。
(2)如果你的系统中没有EDIT,也可用你所熟悉的文本编辑器进行录入、编辑,如可用c语言和pascal语言的文本编辑器来编辑,最后将文件存为filename.asm的形式即可。
第二步:汇编目标文件(即:编译为.obj .lst .crf文件)汇编指令有多少个
这个过程计算机将把你编的正确的源代码编译为机器语言、程序清单及交叉引用表的目标文件。如果此时你的程序有语错误,系统将报错,并指出在第几行,什么类型的错误,你可根据提示去逐一修改。现介绍具体过程:
  双击图标在DOS提示符下键入MASM filename回车这时汇编程序的输出文件可以有三个(分别:.obj .lst .crf),便会出现三次提问,在这可以一路回车即可。下面显示的信息是源程序中的错误个数,如果为0则表示顺利通过,就可进行进程c。但如果不为0就说明有错误,并指出错误出现的行,可依据这个提示去进行修改。但如果错误太多还未等看清就显示过去了,可用如下命令形将错误信息存于一个你指定的文件,再用文本编辑器去查看。 MASM filename >filen (filen为你起的一个没用过的文件名,用以存放出错信息)以后可查看filen来得到出错信息。
第三步:编译不通过,重新修改(错误类型:源程序语句不合法)
在执行过第二步后,如有出错信息时,就不能跳跃到第四步去,如果强行执行第四步,将无任何有效结果。
现在就开现错吧!首先要清楚,在第二步中检测出的错误均为每一条语句的语法或用法
错误,它并不能检测出程序的逻辑设计(语句排位置)错误,所以就要记好出错的行号。在记录行号后,就应再次执行第一步,这时操作应是打开已编好的源程序(以EDIT为例:在DOS提示符下键入:
EDIT filename.asm回车),依据行号进行修改并存盘,再次进行汇编,直至第二步通过为止。便可继续向下执行第四步
第四步:连接为可执行文件(即:连接为.exe 或文件)
在这个过程中一般没有意外,如果有也就是文件名打错了。
式:在DOS提示符下: LINK filename 回车
第五步:运行编译好的可执行文件
第四步通过后,会产生一个可执行文件,这时只需运行这个程序,看它是否按你所想象那样得出结果。在试运行期间,要尽量试一些临界状态,看程序是否运行稳定、结果是否正确。如一切正常,便可进入第六步了。
可最怕的是不OK,程序产生一些莫名其妙的结果(你可不要以为是你的计算机不听你的指
挥,其实它是在一丝不苟地按照你编的程序执行。我以前总以为我的计算机出了毛病),如果是在考场上这时千万不要慌,稳住自己的情绪,先不要看计算机,静几分钟(反正时间多得是)。这时就要用到最关键、最常用的一步了,进行第六步
第六步:用调试工具调试,重新修改(逻辑错误)
1.2常用DEBUG命令的功能
一、 DEBUG的主要用途及DEBUG的调用
    DEBUG是为汇编语言设计的一种调试工具,它通过单步执行、设置断点等方式为汇编语言程序员提供了非常有效的程序调试手段。DEBUG可以直接用来检查和修改内存单元、装入、存储及启动运行程序、检查及修改寄存器,也就是说DEBUG可深入到计算机的内部,可使用户更紧密地与计算机中真正进行的工作相联系。不仅如此,对汇编语言初学者来说,DEBUG也是练习使用汇编指令的一种有效工具。初学者可以直接在DEBUG环境下执行汇编指令。然而,在DEBUG下运行汇编语言源程序也受到了一些限制,它不宜汇编较长的程序,不便于分块程序设计,不便于形成以DOS外部命令形式构成的 .EXE文件,不能使用浮动地址,也不能使用ASM和MASM提供的绝大多数伪指令。
    在DOS系统中,DEBUG是以DOS外部命令文件形式提供给用户的,名为DEBUG.EXE。
    进入DEBUG的提示符是符号“-”。即,出现提示符“-”就表示可以接受DEBUG命令了。
    当进入DEBUG时,寄存器和标志设成以下数值,这些值用于DEBUG调试中的程序。
    段寄存器CS,DS,ES和SS均指向DEBUG末尾的第一个段。
    IP寄存器置为0100H。栈指针SP指向尾部或装入程序的暂存部分的底部。
    其余寄存器皆取零值,但若用户调用时含文件说明,则CX含文件长度(长度大于64K时BX含长度的高位);标志为各自的复位值;驱动器传送地址在代码段位移80H处。
注意:若DEBUG装入扩展名为.EXE的文件,则DEBUG需重定位且设置段寄存器指示器为文件中所定义的值。但DS,ES指向最低可用段处的程序区前缀。BX和CX为文件容量值。而 .EXE文件如果在连接时选择了装入内存高处的参数,则该程序装入高处。
二、DEBUG的主要命令功能与格式
    DEBUG命令是在DEBUG提示符“-”下,由键盘键入的。每条命令以单个字母的命令符开头,然后是命令的操作参数,操作参数与操作参数之间,用空格或逗号隔开,操作参数与命令符之间用空格隔开,命令的结束符是回车键 Enter。命令及参数的输入可以是大小写的结合。Ctrl+Break键可中止命令的执行。Ctrl+Num Lock键可暂停屏幕卷动,按任一键继续。所用数均为十六进制数,且不必写H。
* 1. 汇编命令A
格式:A [[<段寄存器名>/<段地址>:] <段内偏移>]
    上式等价于:
    (1) A <段寄存器名>:<段内偏移>
    (2) A <段地址>:<段内偏移>
    (3) A <段内偏移>
    (4) A
功能:键入该命令后显示段地址和段内偏移并等待用户从键盘逐条键入汇编命令,逐条汇编成代码指令,顺序存放到段地址和段内偏移所指定的内存区域,直到显示下一地址时用户直接键入回车键返回到提示符“-”。
注: 其中(1)用指定段寄存器的内容作段地址,(3)用CS的内容作段地址,(4)以CS:100作地址。以后命令中提及的各种‘地址’形式,均指(1)、(2)、(3)中A后的地址形式。
2. 比较命令C
格式: C <源地址范围>,<目标地址>
    其中<范围>是由<起始地址> <终止地址>或者是由<起始地址> L <长度>指出的一片连续单元。
功能:从<源地址范围>的起始地址单元起逐个与目标起始地址以后的单元顺序比较单元的内容,直至源终止地址为止。遇有不一致时,以<源地址> <源内容> <目标内容> <目标地址>的形式显示失配单元及内容。
* 3. 显示内存命令D
格式: D [<地址>/<范围>]
    上式等价于:
    (1) D <地址>
    (2) D <范围>
    (3) D
功能:以两种形式显示指定范围的内存内容。一种形式为十六进制内容,一种形式为以相应字节的内容作为ASCII码的字符,对不可见字符以‘.’代替。
注: 其中(1)以CS为段寄存器。(3)显示CS:100起始的一片内容。                                                                                                                                                                                                                                                                                                                                            * 4. 修改内存命令E
格式: E <地址> [<单元内容表>]
    上式等价于:
    (1) E <地址>
    (2) E <地址> <单元内容表>
    其中<单元内容表>是以逗号分隔的十六进制数,或用’或”括起来的字符串,或者是二者的组合。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。