1、第四章第四章 汇编语言及其程序设计汇编语言及其程序设计4.1 8086系列汇编语言格式系列汇编语言格式4.2 伪指令语句伪指令语句4.3 部分宏指令部分宏指令4.4 汇编语言的编程环境汇编语言的编程环境4.5 程序设计基本方法程序设计基本方法4.6 宏汇编语言程序设计举例宏汇编语言程序设计举例4.1 8086系列汇编语言格式系列汇编语言格式l汇编程序一般具有如下功能:汇编程序一般具有如下功能:检查和编排源程序;检查和编排源程序;产生宏汇编指令;产生宏汇编指令;将目标程序从原来指定的地址重新定位到另一个地址;将目标程序从原来指定的地址重新定位到另一个地址;检查源程序中的错误;检查源程序中的错误;
2、产生源程序语句的列表,并对每个要汇编的源程序产生产生源程序语句的列表,并对每个要汇编的源程序产生一个目标程序。一个目标程序。4.1.1 字符集字符集 l书写汇编语言所允许使用的字符书写汇编语言所允许使用的字符l汇编语言中的各种名字和符号的组成规定汇编语言中的各种名字和符号的组成规定4.1.2 汇编语言语句汇编语言语句 1.语句的种类语句的种类(1)指令语句指令语句(2)伪指令语句伪指令语句(3)宏指令语句宏指令语句指令语句的格式指令语句的格式伪指令语句的格式为伪指令语句的格式为宏指令语句格式宏指令语句格式2.语句格式语句格式指令语句和伪指令语句都由四部分组成指令语句和伪指令语句都由四部分组成(
3、1)第一部分是标号、名字第一部分是标号、名字(2)第二部分是助记符、定义符第二部分是助记符、定义符(3)第三部分是参数第三部分是参数(4)第四部分是注释第四部分是注释4.2 伪指令语句伪指令语句符号定义语句符号定义语句(Symbol definition)数据定义语句数据定义语句(Data definition)段定义语句段定义语句(Segmentation definition)过程定义语句过程定义语句(Procedure definition)分组语句分组语句(Group)结束语句结束语句(Termination)1.1.赋值语句赋值语句(EQU)EQU)2.2.等号语句等号语句(=)(=
4、)3.3.标号定义语句标号定义语句(LABEL)LABEL)4.2.1 符号定义语句符号定义语句1.1.定义字节定义字节(DB)DB)2.定义字定义字(DW)DW)4.2.2 数据定义语句数据定义语句1.1.SEGMENTSEGMENT与与ENDSENDS4.2.3 段定义语句段定义语句(1)(1)定位类型定位类型 (2)(2)组合类型组合类型(3)(3)类别类别 2.ASSUMEASSUME3 3.ORGORG4.2.4 过程定义语句过程定义语句l过程是程序的一部分,实际上就是子程序。过过程是程序的一部分,实际上就是子程序。过程可被程序调用,当过程执行完后,控制返回程可被程序调用,当过程执行
5、完后,控制返回调用点。调用过程和从过程返回的指令是调用点。调用过程和从过程返回的指令是CALL与与RET,它们分段内和段间的调用与返回。它们分段内和段间的调用与返回。4.2.5 分组语句分组语句GROUP l分组伪指令分组伪指令GROUP(又称为群伪指令又称为群伪指令)可以将若可以将若干段说明为使用同一物理段,以组名表示其段干段说明为使用同一物理段,以组名表示其段基址。基址。格式:格式:组名组名 GROUP 段名段名,段名,段名,1 4.2.6 结束语句结束语句 lENDEND语句标志着整个源程序的结束,它告诉汇编语句标志着整个源程序的结束,它告诉汇编程序汇编任务到此结束。程序汇编任务到此结束
6、。格式:格式:END END 表达式表达式 4.3 部分宏指令部分宏指令l通过宏功能,宏汇编语言为汇编语言编程提供通过宏功能,宏汇编语言为汇编语言编程提供了很多方便和强大的特性和编程手段。在本节了很多方便和强大的特性和编程手段。在本节中,将介绍一些基本的宏功能。中,将介绍一些基本的宏功能。4.3.1 宏定义和使用宏定义和使用1.宏定义宏定义2.宏调用和宏展开宏调用和宏展开3.宏中的标号宏中的标号4.4.宏运算符宏运算符 4.3.2 简化简化DOS段定义段定义lMASM中,预定义了一些宏,使用时可以直接中,预定义了一些宏,使用时可以直接调用。其中有一些为段的定义和名称、程序初调用。其中有一些为段
7、的定义和名称、程序初始化等提供了方便。这些宏都以始化等提供了方便。这些宏都以“.”起头。起头。4.4 汇编语言的编程环境汇编语言的编程环境 l在在DOS下进行汇编语言的程序设计,可以采用下进行汇编语言的程序设计,可以采用命令行方式,也可采用集成环境方式。本节讨命令行方式,也可采用集成环境方式。本节讨论在论在DOS命令行下完成汇编语言的编辑、汇编、命令行下完成汇编语言的编辑、汇编、连接和运行、调试的全过程。连接和运行、调试的全过程。4.4.1 源文件编辑源文件编辑l在任一种编辑程序下,用键盘键人用户源程序,在任一种编辑程序下,用键盘键人用户源程序,此时源程序以此时源程序以ASCII码形式存放于内
8、存中。若输码形式存放于内存中。若输入有错,可用有关命令修改。源文件存盘,其入有错,可用有关命令修改。源文件存盘,其扩展名应为扩展名应为.ASM。4.4.2 汇编和连接汇编和连接 l源程序必须先由汇编程序把它汇编为机器码的源程序必须先由汇编程序把它汇编为机器码的目标程序(目标程序(.OBJ),),在经连接程序将目标程序在经连接程序将目标程序连接成为可执行的程序。如果源程序有多个源连接成为可执行的程序。如果源程序有多个源文件(即多个文件(即多个.asm文件)组成,则每个文件)组成,则每个.asm文文件会汇编产生各自的件会汇编产生各自的.obj文件,再由连接程序连文件,再由连接程序连接成为一个执行程
9、序。接成为一个执行程序。4.4.3运行和调试运行和调试l连接之后建立的可执行文件连接之后建立的可执行文件(.EXE或或.COM)可以可以在在DOS下直接键入文件名下直接键入文件名(不必键入扩展名不必键入扩展名)即可即可运行。运行。4.5 DOSDOS与与BIOSBIOS功能调用功能调用l4.5.1 DOS与与BIOS功能调用功能调用lBIOS和和DOS是两组系统服务软件的集合,它们使用户是两组系统服务软件的集合,它们使用户程序能够访问和使用程序能够访问和使用PC机的硬件。其中包括从键盘读取机的硬件。其中包括从键盘读取字符、在显示器显示信息、读写磁盘、主机向打印机传字符、在显示器显示信息、读写磁
10、盘、主机向打印机传递信息和其他许多服务。递信息和其他许多服务。四种操作硬件的方法四种操作硬件的方法PC计算机硬件BIOSDOS高级语言应用程序4.5.2 DOS功能调用方法功能调用方法l中断调用号是从中断调用号是从20H-27H,即即INT 20H-INT27H。为了调用这些服务程序,需要为了调用这些服务程序,需要:(1)给出入口参数;给出入口参数;(2)执行执行INT n(n是中断调用的编号是中断调用的编号)指令。指令。DOS功能调用全部采用功能调用全部采用INT 21H中断,使用中断,使用时,需要:时,需要:(1)设置入口参数;设置入口参数;(2)服务程序编号送服务程序编号送AH;(3)执
11、行执行INT 21H,调用软中断。调用软中断。4.5.3 DOS功能调用举例功能调用举例1.字符或字符串输出字符或字符串输出2.字符或字符串输入字符或字符串输入3.设置日期与时间设置日期与时间 4.5.4 BIOS中断和功能调用中断和功能调用lBIOS常驻于常驻于PC机的机的ROM中,只要机器加电,中,只要机器加电,便可调用它们。便可调用它们。l通常,用户不必使用通常,用户不必使用BIOS调用,除非感到同样调用,除非感到同样的的DOS中断或功能调用速度不够快或不能完成中断或功能调用速度不够快或不能完成用户所需的工作。用户所需的工作。lBIOS除常驻留在除常驻留在ROM中外,还使用了中外,还使用
12、了256个字个字节节RAM作为数据区。作为数据区。4.6 程序设计基本方法程序设计基本方法l一个好的程序具有下列特点:一个好的程序具有下列特点:程序结构模块化,简明、易读、易调试与维护。程序结构模块化,简明、易读、易调试与维护。执行速度快。执行速度快。占用内存少。占用内存少。设计源程序的基本步骤设计源程序的基本步骤(1)分析问题,抽象出描述问题的数学模型,确定解决分析问题,抽象出描述问题的数学模型,确定解决问题的算法与思路。问题的算法与思路。(2)绘制流程图或结构图绘制流程图或结构图(对简单程序可省略这一步对简单程序可省略这一步)。(3)分配存储单元及工作单元分配存储单元及工作单元(包括寄存器
13、包括寄存器)。(4)编写程序。编写程序。(5)上机调试与修改,结果分析。上机调试与修改,结果分析。4.6.1 4.6.1 顺序结构顺序结构 l顺序结构的程序一般是简单程序,其特点是程顺序结构的程序一般是简单程序,其特点是程序顺序执行,无分支,无循环与转移。序顺序执行,无分支,无循环与转移。4.6.24.6.2分支结构分支结构l一个大的程序完全顺序结构实际上并不可能,一个大的程序完全顺序结构实际上并不可能,经常会遇到有分支的情况。分支结构程序通常经常会遇到有分支的情况。分支结构程序通常采用条件转移或转移表来实现。采用条件转移或转移表来实现。执行A4终止开始满足A1条件?NOYES满足A2条件?N
14、O满足A3条件?YESYES执行A1执行A2执行A3图图4.3典型分支程序框图典型分支程序框图4.6.3循环结构循环结构(1)初始化初始化(2)循环体循环体(3)修改参数修改参数(4)循环控制循环控制 4.6.4 子程序结构子程序结构l子程序清单子程序清单(1)(1)子程序的名称,功能说明;子程序的名称,功能说明;(2)(2)子程序中用到的寄存器和存储单元;子程序中用到的寄存器和存储单元;(3)(3)子程序的入口参数,出口参数;子程序的入口参数,出口参数;(4)(4)子程序中调用其他子程序的名称。子程序中调用其他子程序的名称。参数传递方法参数传递方法(1)用寄存器传递用寄存器传递(2)用存储器传递用存储器传递(3)用堆栈传递用堆栈传递
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。