第5章-汇编语言与汇编程序设计

上传人:龙*** 文档编号:1749155 上传时间:2017-07-12 格式:PPT 页数:59 大小:920.50KB
返回 下载 相关 举报
第5章-汇编语言与汇编程序设计_第1页
第1页 / 共59页
第5章-汇编语言与汇编程序设计_第2页
第2页 / 共59页
第5章-汇编语言与汇编程序设计_第3页
第3页 / 共59页
第5章-汇编语言与汇编程序设计_第4页
第4页 / 共59页
第5章-汇编语言与汇编程序设计_第5页
第5页 / 共59页
点击查看更多>>
资源描述

《第5章-汇编语言与汇编程序设计》由会员分享,可在线阅读,更多相关《第5章-汇编语言与汇编程序设计(59页珍藏版)》请在金锄头文库上搜索。

1、范立南 张乐 主编吴琼 王楠 杨红 副主编清华大学出版社,微型计算机原理及应用第5章 汇编语言与汇编程序设计,本章知识结构图,第5章 汇编语言与汇编程序设计,5.1 汇编语言概述5.2 伪指令5.3 宏指令5.4 条件汇编5.5 程序设计基本方法,5.1 汇编语言概述,汇编语言:一种面向机器的用符号表示的程序设计语言,这些符号称为助记符。和机器语言不同的是,汇编语言用直观、便于记忆和理解的英文单词或缩写符号来表示指令和数据变量。汇编指令集和伪指令集及其使用规则的统称就是汇编语言。,5.1 汇编语言概述,5.1.2 汇编程序功能及上机过程汇编程序有各种类型,不同机型其汇编程序也不相同。汇编程序一

2、般都具有宏汇编的功能,支持地址和数据的符号表示,支持对内存的管理,支持程序的模块化组织,支持多种类型的数据表示等。汇编程序的主要功能:(1)检查源程序;(2)测出源程序中的语法错误,并给出出错信息;(3)产生源程序的目标程序,并可给出列表文件;(4)展开宏指令。,汇编语言程序设计上机过程,5.1 汇编语言概述,5.1.3 汇编语言源程序的结构与格式1结构与书写格式汇编语言源程序通常由四部分组成:数据段、附加段、堆栈段和代码段。有时当不需要附加段时,也可采用三段结构。数据段用来存放执行程序时需用的数据,一般至少需要一个数据段。堆栈段用来保存子程序调用或中断服务程序返回地址及现场寄存器的值,此外,

3、还可以临时保存一些工作寄存器和变量的值。代码段存放程序指令代码,实施程序预定的运算与操作。,5.1 汇编语言概述,2汇编语言语句格式汇编语言语句一般格式: 标识符/语句标号 操作数序列; 注释 表示可选项。(1)标识符:标识符是程序设计人员自己定义的标识符号,简称标号。它可以是变量名,段名及过程名等,用来表示数据、数据在内存中的偏移地址及指令代码在内存中的偏移地址。,5.1 汇编语言概述, 合法的标识符(标号)的组成规则 组成标号的字符:AZ ,az ,09 ,? , ,$ , _ 标识符长度不限,但只有前31个字符有效。 标号的第一个字符不能是09的数字。不能以数字开头。 机器指令语句中标号

4、必须以冒号(:)结束。伪指令语句中标号后不允许有冒号。 点号.只能用作标识符的第一个字符。 源程序中大、小写字母等效。汇编语言本身对机器指令的助记符号、伪指令助记符号和寄存器名字都已作了定义,称为保留字,在编程时所定义的标识符号通常称为自定义名字。注意:不要用保留字作为自定义名字,以免引起混淆。 标识符(标号)的属性标识符(标号)具有3种属性:段、偏移量和类型。,5.1 汇编语言概述,(2)操作符操作符可以是指令助记符、伪指令助记符和宏指令(宏名字)符号。无标号时操作符可以从一行的开始书写,有标号时则从标号后开始书写,标号与操作符之间以冒号、空格或水平制表符分隔,操作符与操作数之间以空格或水平

5、制表符分隔。如果操作符后无操作数或注释时,以行终止符(回车符)结束。,5.1 汇编语言概述,(3)操作数序列操作数是操作符的操作对象,操作数可以是数据本身、标号、寄存器名字或算术表达式。随指令类型的不同而变化。语句中有多个操作数时,彼此间用逗号分隔。操作数后有注释时,以分号“ ; ”结束,无注释时以行终止符结束。,5.1 汇编语言概述,(4)“ ; ”注释符注释是对程序段功能或语句在程序中的作用的说明,目的是在阅读、分析程序时,便于对程序各部分的逻辑关系有一个大致的了解。提高程序的可读性和可理解性,便于程序的修改和维护。注释可由任意多个字符组成。,5.1 汇编语言概述,5.1.4 常量、变量、

6、运算符和表达式1常量常量是一个确定的数值,在程序运行期间不能改变。常量可以用作立即数、偏移量以及用于初始化存储器单元。2变量变量是在程序运行期间可以改变的量,变量名按标识符的规则取名。所有的变量都有三种属性:(1)段值:变量所在段的段首址。(2)偏移量:从段首址到变量存储单元的字节数。(3)类型:变量占用的存储器单元的字节数。,5.1 汇编语言概述,3运算符和表达式表达式由操作数和运算符按语法规则组合而成。表达式的计算结果是一个确定的值,在汇编期间由汇编程序计算。表达式中的操作数可以是寄存器名、常量、标号或变量。,5.1 汇编语言概述,(1)算术运算符算术运算符完成、*、/和取模运算等。常用于

7、数字操作数,得到数字运算结果,也可以用于地址操作数,但只能进行两种有意义的加、减运算,其他的运算则是无意义的。具体如下: 加法运算符() 减法运算符() 乘法运算符(*) 除法运算符(/) 取模运算符(MOD),5.1 汇编语言概述,(2)移位运算符移位运算符有两个:SHR和SHL,分别对常数进行逻辑右移和逻辑左移。(3)逻辑运算符逻辑运算符AND、OR、XOR和NOT分别对常数进行按位逻辑与、逻辑或、异或和逻辑非运算。,5.1 汇编语言概述,(4)关系运算符关系运算符用于比较两个表达式,表达式中的项必须是常数或同一段内的变量。如果是常数则按无符号数比较,如果是变量则比较它们的偏移量。如果比较

8、结果为真,关系表达式的值为0FFFFH,如果为假,关系表达式的值为0。 等于运算符(EQ) 不等于运算符(NE) 小于运算符(LT) 小于或等于运算符(LE) 大于运算符(GT) 大于或等于运算符(GE),5.1 汇编语言概述,(5)分析运算符分析运算符有SEG、OFFSET、TYPE、LENGTH和SIZE。这些运算符用于分解存储器操作数(标号、变量)的各部分(段地址、偏移地址、类型等),并返回相应的值。(6)属性修改运算符这类运算符有PTR和THIS,用来改变存储器操作数的类型属性。(7)记录专用算符记录专用算符有MASK、WIDTH。,5.1 汇编语言概述,(8)运算符的优先级表达式中有

9、多个运算符时,按优先级从高到低顺序运算,优先级相同的运算符则从左至右运算。任何情况都可以用圆括号改变运算顺序。,5.2 伪指令,5.2.1 伪指令的类型及其格式1类型(1)符号定义伪指令(2)数据定义伪指令(3)段定义伪指令(4)过程定义伪指令(5)其他伪指令2伪指令的格式格式:标识符 操作数1,操作数2;注释,5.2 伪指令,5.2.2 符号定义伪指令符号定义伪指令用于给程序中多次出现的同一个常量或表达式赋予一符号名,该符号名可在程序中替代相应的常量和表达式。1EQU(EQUATE)伪指令2“= ”伪指令,5.2 伪指令,5.2.3 数据定义伪指令数据定义伪指令用于为数据项分配存储单元,并给

10、所分配的存储单元定义符号名(即定义符号地址),同时初始化该存储单元或由该单元开始的若干连续单元。初始化单元就是将一个值(确定的数值或不确定的值)放入指定的内存单元。常用的数据定义伪指令有DB、DW、DD、DQ和DT。1DB伪指令功能:DB伪指令初始化一个单字节存储单元。2DW伪指令功能:DW伪指令初始化一个单存储单元。,5.2 伪指令,3DD伪指令4DQ伪指令5DT伪指令6复制操作符在数据定义伪指令的操作数字段中,还可以使用复制操作符DUP,以便定义大量相同数据。复制操作符格式: DUP(初值1,初值n)。表达式的值为一个正整数,用作重复计数,它指定括号中的初值重复定义次数。,5.2 伪指令,

11、5.2.4 段定义伪指令1SEGMENTENDS伪指令格式: SEGMENT 【定位类型】【组合类型】【类别名】 ENDS(1)定位类型指定了装入某段时,该段对起始地址边界的要求;(2)组合类型组合类型指定段之间的连接关系为可选项;(3)类别名是一个标识符,必须用单引号括起来连接程序LINK将根据组合类型把类别名相同的段连接在一起。,5.2 伪指令,2ASSUME伪指令当CPU要访问存储器中某段的存储单元时,必须先将指向该段的段寄存器提供的段地址和该存储单元的偏移地址转换为物理地址。ASSUME的作用是告诉汇编程序,把源程序转换为机器代码时,各段寄存器的符号地址,以确定和检查机器指令中操作数所

12、在的段,产生正确的机器指令代码或打印出错误信息。格式:ASSUME 段寄存器名:段名, 例如: ASSUME CS: CODE, DS: DATA, SS: STACK,5.2 伪指令,3ORG伪指令代码定位伪指令。汇编程序使用了一个地址计数器,用来记录汇编过程中正被汇编指令的偏移地址。ORG伪指令可通过地址计数器提供程序定位功能。用来确定其后的数据和代码存放在相应段中的起始位置。ORG伪指令格式:ORG的值为一个无符号的十六位二进制数,是相对于段基址的偏移量。ORG伪指令把表达式的值赋给地址计数器,使得ORG之后的指令或数据以表达式的值为起始地址开始存放,除非遇到新的ORG伪指令。,5.2

13、伪指令,4过程定义伪指令汇编语言程序的代码段由一个主过程和若干个子过程构成,子过程也称为子程序。利用过程定义伪指令可将程序按功能划分成模块,这样有利于理解、调试和修改程序。格式:过程名PROCNEAR/FAR RET 过程名 ENDP伪指令PROC和ENDP必须成对出现,并且过程名要相同。5其他伪指令,5.3 宏指令,5.3.1 宏定义与宏调用语句1宏定义宏定义的形式如下:MACRO , 语句串 ENDM2宏调用语句3宏展开,5.3 宏指令,5.3.2 宏调用中的参数替换参数替换时规定如下:(1)宏定义的形式参数在语句中一定是一个语法单位,即形式参数的两端应有间隔符,间隔符可以是空格、逗号、括

14、号以及运算符等符号。(2)&可作为宏定义中虚设的间隔符,表示其后面的是形参,仅在宏定义中使用。在宏展开时,用相应实参替换。(3)如果参数中包含间隔符,可用尖括号括起来,尖括号中的空格不被忽略。(4)宏定义使用中,如果形参个数大于实参个数,则用空代替,反之忽略多余的实参。,5.3 宏指令,5.3.3 宏定义的标号、注释及删除1宏定义中的标号2宏定义中的注释(1)宏注释符(2)行注释符(3)块注释3从内存中删除宏定义删除宏定义语句PURGE的使用形式为: PURGE , 宏定义名说明:汇编时将该语句所指的宏定义从内存中删除。5.3.4 宏的退出,5.4 条件汇编,条件汇编伪指令指示汇编程序根据条件

15、检测选择汇编不同的程序段。5.4.1 条件汇编语句格式: IFX (程序段1) ELSE (程序段2) ENDIF,5.4 条件汇编,5.4.2 条件汇编伪操作命令的功能(1)IFCONT(2)IFE CONT(3)IF1(4)IF2(5)IFDEFCONT(6)IFNDEF CONT(7)IFBCONT(9)IFIDNCHR1, CHR2(10)IFDIFCHR1, CHR2,5.4 条件汇编,5.4.3 条件汇编伪操作命令举例1IFENDIF:当指定的表达式的值为真时,IF和ENDIF之间的汇编语句才会被汇编。2IFELSEENDIF:若IF的表达式返回真,则在IF和ELSE之间的语句将被汇编。3IFDEFENDIF:只有当指定的标号、变量或符号被定义时,IFDEFENDIF条件伪指令才汇编一组汇编语言语句。4IFNDEFENDIF:只有当指定的标号、变量或符号不被定义时,IFNDEF ENDIF条件伪指令才汇编一组汇编语言语句。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号