第5章 汇编语言程序设计(2010.10.11)

上传人:我*** 文档编号:137676013 上传时间:2020-07-11 格式:PPT 页数:114 大小:348KB
返回 下载 相关 举报
第5章 汇编语言程序设计(2010.10.11)_第1页
第1页 / 共114页
第5章 汇编语言程序设计(2010.10.11)_第2页
第2页 / 共114页
第5章 汇编语言程序设计(2010.10.11)_第3页
第3页 / 共114页
第5章 汇编语言程序设计(2010.10.11)_第4页
第4页 / 共114页
第5章 汇编语言程序设计(2010.10.11)_第5页
第5页 / 共114页
点击查看更多>>
资源描述

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

1、第5章 汇编语言程序设计,5.1 宏汇编语言的基本语法 5.2 伪指令 5.3 宏指令 5.4 汇编语言程序的结构 5.5 DOS系统功能调用 5.6 汇编语言程序设计方法,汇编语言,汇编语言是一种采用助记符表示的程序设计语言,即用助记符来表示指令的操作码和操作数,用符号或标号代表地址。,使用汇编语言编写的程序称作汇编语言源程序。汇编语言源程序不能由机器直接执行而必须翻译成由机器代码组成的目标程序,这个过程称为汇编。,把汇编语言源程序翻译成目标程序的软件称为汇编程序。,汇编过程的含义如图:,汇编语言 源程序,目标程序,汇编程序,汇编,5.1宏汇编语言的基本语法,5.1.1 常数、变量和标号,常

2、数、变量和标号是汇编语言能识别的数据项,是指令和伪指令语句中操作数的基本组成部分,其大小和属性与机器语言代码生成有直接关系。,变 量,标 号,常 数,常 数,常数是没有任何属性的纯数值。在汇编期间,它的值已经完全确定,而且在程序的运行中也不会发生变化,它可以有以下几种类型:,二进制数: 以字母B结尾的由一串“0”和“1”组成的序列。 例如:0010110B,5.1.1 常数、变量和标号,八进制数: 以字母O或Q结尾,由若干个0到7的数字组成的序列。 例如:255Q、377Q,3. 十进制数: 由若干个0到9的数字组成的序列,可以以字母D结尾,也可以省略字母。 例如:1234D或1234 。,4

3、. 十六进制数: 以字母H结尾,由若干个0到9的数字和字母A到F组成的序列,且必须以数字开头。 例如: 56H,0B3FH,5. 字符串常量: 用引号括起来的一个或多个字符。这些字符以ASCII码形式存在内存中。 例如: A的值是41H, B的值是42H,(字母打头必须前面补0,否则将出现汇编语法错误。),注意,常数 定义,常数名EQU(=)数值或字母 例如:AAEQU30 BB=1000H CCEQU10001010B DD= ABC MOV AX,AA MOV AL,AA MOV BX,BB MOV BH,BB;错BH将产生溢出,“=”可重复定义 EQU不可重复定义,变量通常是存放在某些存

4、储单元的数据,这些数据在程序运行期间可以修改。变量名可看成存放数据存储单元的符号地址。,变量,5.1.1 常数、变量和标号,经过定义的变量,每个变量均有三个属性:,段属性(SEGMENT) 表示变量存放在哪一个逻辑段中(即变量所在段的段地址)。,类型属性(TYPE) 表示变量占用存储单元的类型。,偏移属性(OFFSET) 表示变量的偏移地址,即在逻辑段中距段的起始点的字节数。,变量定义,例如: XDB0AH AAEQU 1ABCH YDWAA BUF_DIS DB ? STRDBABCD1234,12H,0ACH,重复子句表达式: NDUP(表达式) 例如: AADB10 DUP(0) BBD

5、W5 DUP(21*5),0DH,0AH TAB DB 100 DUP (5 DUP (1),2),字节 DB(8位)一个字节存贮单元 字 DW(16位)二个连续字节存贮单元 双字 DD (32位)四个连续字节存贮单元 四字 DQ(64位)8个连续字节存贮单元 五字 DT(80位)10个连续字节存贮单元,标号表示一条指令所在的地址,所以标号也是指令语句的地址符号,常用作转移指令(包含子程序调用指令)的操作数,即目标地址。 标号通常由字母数字串组成,但第一个字符必须为字母。,标号,5.1.1 常数、变量和标号,命名规则: 1)131个字符 2)AZ、az、09 、?、$及下划线构成。 3)?不能

6、单独作为标识符。 4)无独立的保留字及运算符。,3. 距离属性(或类型属性 TYPE) 表示标号作为段内或段间的转移属性。,2. 偏移属性(OFFSET) 表示标号的偏移地址,即标号地址在逻辑段中距段的起始点的字节数。,标号有三种属性:,段属性(SEGMENT) 表示标号所在段的段地址。,(1)NEAR(近) 表示本标号只能被标号所在段内的转移和调用指令访问(即段内转移),距离属性分为两种:,(2)FAR(远) 表示本标号可以被其他段(不是标号所在段)的转移和调用指令访问(即段间转移),例如: MOVSI,100H MOVDI,200H MOVCX,10H LOOP1:MOVAL,SI MOV

7、DI,AL INCSI INCDI LOOP LOOP1,标号定义,5.1.2 表达式与运算符,8086宏汇编语言允许使用的表达式有两种类型:,只产生数值结果。,数值表达式,它所产生的结果是一个存储器地址,如果这个地址存放的是数据,一般称它为变量,如果存放的是指令,一般称它为标号。,地址表达式,表达式的运算不是在执行程序时进行 的,而是由汇编程序在汇编时预先对它进 行运算,其结果作为操作数参加指令规定 的操作。,注意,运算符主要包括以下6种类型:,算术运算符 逻辑运算符 3. 关系运算符,分析操作符 综合运算符 6. 其他运算符,5.1.2 表达式与运算符,算术运算符,包括加(+)、减(-)、

8、乘(*)、除(/)、求余数(MOD)、左移(SHL)和右移(SHR),5.1.2 表达式与运算符,逻辑运算符,例5-2 AND DX, PORT AND 0FEH 其中第二个AND是逻辑运算符,在程序汇编时,计算PORT AND 0FEH 产生一个立即数作为指令操作数。而第一个AND是指令助记符,在汇编以后执行AND指令,DX的内容与上述立即数相“与”,结果放在DX中。,包括按位操作的与(AND)、或(OR)、异或(XOR)、和非(NOT)四种运算符。它们只适用于对常数进行逻辑运算。,5.1.2 表达式与运算符,关系运算符,包括EQ(相等)、NE(不相等)、LT(小于)、GT(大于)、LE(小

9、于或等于)、GE(大于或等于)共六种。运算结果为8或16位的值。若关系为假,则结果为0,否则结果为FFH或FFFFH。,5.1.2 表达式与运算符,5.1.2 表达式与运算符,分析操作符(数值返回运算符),(1)取地址的偏移量 格式: OFFSET 变量名或标号 功能:取变量名或标号所在段的段内偏移量。,(2)取段地址 格式: SEG 变量名或标号 功能:取变量名或标号所在段的段地址。,格式:TYPE 变量名或标号 功能:TYPE运算符加在变量名或标号前,返回一个数字值;返回的数值与属性的关系表如下。,求变量名或标号的类型值,(3),求段基址SEG MOV AX,SEGAA SEG AA为立即

10、寻址是AA的段地址,求符号名的类型值TYPE MOV AL,TYPECC 返回变量CC的类型的字节数。 字节数据: TYPE CC=1字数据: TYPE CC=2 双字数据: TYPE CC=4 标号:NEAR=0FFFFHFAR=0FFFEH,求偏移地址OFFSET MOV SI,OFFSET BB OFFSET BB 为立即寻址,是BB的偏移地址,(4)求长度 格式:LENGTH 变量名 功能:返回一个变量名所占的存储单元(字节、字或双字)的数目。,分析操作符(数值返回运算符),5.1.2 表达式与运算符,用DUP定义变量时为元素个数,否则=1 BUF DW N DUP(?) ;LENGT

11、H BUF=N X DD 12345678H ;LENGTH X=1,(5)求大小 格式:SIZE 变量名 功能:返回变量名所占存储单元的字节数,它等于LENGTH和TYPE两个运算符返回值的乘积。,分析操作符(数值返回运算符),5.1.2 表达式与运算符,例如: BUF1 DB N1,N2,N3,N10 BUF2 DB 10DUP(0) BUF3 DW 10DUP(?),TYPE BUF1=1, LENGTH BUF1=1, SIZE BUF1=1,TYPE BUF2=1,LENGTH BUF2=10,SIZEBUF2=10,TYPE BUF3=2,LENGTH BUF3=10,SIZEBU

12、F3=20,例5-7 MOV BYTE PTR DI,4 ; 指明目的操作数为字节类型 JMP DWORD PTR BP ; 指明目的操作数为双字节类型 ;(即指明转移操作为段间转移),(1)PTR 运算符 格式:类型 PTR 表达式 功能:用于指出变量、标号或地址表达式的类型属性,新的类型只在当前指令内有效。,综合运算符,5.1.2 表达式与运算符,(2) THIS 运算符 格式:THIS 类型 功能:把它后面指定的类型或距离属性赋给当前的变量、标号或地址表达式。,综合运算符,5.1.2 表达式与运算符,例如: XYZ EQU THIS BYTE;XYZ为字节类型的常数 ABC DW 432

13、1H,2255H;ABC为字类型的变量 ; XYZ、ABC表示同一存贮单元,这一单元有两种类型。 MOV AL,XYZ ;将XYZ,即21H送入AL MOV BX,ABC ;将ABC字单元4321H送入BX,其他运算符,5.1.2 表达式与运算符,(2) SHORT 运算符 格式:SHORT 标号 功能:当转移的目标地址与本转移指令的下一条指令之间的字节距离在 128 127 范围时,可以用SHORT运算符进行说明。,其他运算符,5.1.2 表达式与运算符,5.2 伪指令,8086 宏汇编语言,指令语句,伪指令语句,汇编,产生目的代码,汇编,不产生目的代码,伪指令语句汇编时被解释执行,其功能是

14、为汇编程序提供一些信息,让汇编程序在汇编过程中完成某些特定的功能。,5.2.1 伪指令语句的格式, 符号名字段 符号名用在伪指令语句的前面,用空格和定义符隔开。 定义符字段 在伪指令语句中,定义符表示该语句的伪操作功能。定义符由汇编程序规定,宏汇编程序中使用了数十种定义符。, 操作数字段 操作数可以是常数(二进制、十进制、十六进制等)、字符串、常量名、变量名、标号和一些专用符号等。 注释字段 这是一个任选字段,它必须以分号开始,和指令语句的注释功能一样。,5.2 伪指令,例5-11 ALFA EQU 100 COUNT EQU ALFA,1. 符号定义伪指令(赋值语句),(1)等值伪指令 格式

15、:符号名 EQU 表达式 功能:将表达式的值赋给符号名。,符号名一被 EQU 定义,就不能再赋值,既不能用EQU再为符号名重新赋值。,注意,5.2.2 常用伪指令,(2)等号伪指令 格式:符号名 = 表达式 功能:将表达式的值赋给符号名,等号伪指令可以在程序中不同的地方多次使用以重新为符号名赋值。,1. 符号定义伪指令(赋值语句),5.2.2 常用伪指令,(3)定义符号名伪指令 格式:符号名 LABEL 类型 功能:定义一个标号或变量,并指定其类型。,1. 符号定义伪指令(赋值语句),5.2.2 常用伪指令,2.数据定义伪指令,格式: 变量名 DB 表达式 ;定义字节 变量名 DW 表达式 ;

16、定义字 变量名 DD 表达式 ;定义双字 变量名 DQ 表达式 ;定义8个字节 变量名 DT 表达式 ;定义10个字节,5.2.2 常用伪指令,表达式是赋给变量的初始值,可以有一个,也可以有多个,常见 的有以下几种:,这实际上是为数据分配存储单元,并把变量名作为该存储单元的名称。,(1)数值表达式,常用伪指令,5.2.2,数据定义伪指令,2., DW伪指令可以为两个字符组成的字符串分配一个字单元。,例5-16 STRING1 DW AB,;等价于STRING1 DW 4142H,(2) ASCII字符串,可以用DB伪指令为ASCII字符串中的每一个字符分配一个字单元。,常用伪指令,5.2.2,数据定

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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