《汇编语言程序设计》电子教案 第3章 宏汇编语言

上传人:E**** 文档编号:89401816 上传时间:2019-05-24 格式:PPT 页数:69 大小:253.50KB
返回 下载 相关 举报
《汇编语言程序设计》电子教案 第3章  宏汇编语言_第1页
第1页 / 共69页
《汇编语言程序设计》电子教案 第3章  宏汇编语言_第2页
第2页 / 共69页
《汇编语言程序设计》电子教案 第3章  宏汇编语言_第3页
第3页 / 共69页
《汇编语言程序设计》电子教案 第3章  宏汇编语言_第4页
第4页 / 共69页
《汇编语言程序设计》电子教案 第3章  宏汇编语言_第5页
第5页 / 共69页
点击查看更多>>
资源描述

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

1、母亲卡,第3章 宏汇编语言,3.1 宏汇编语言格式 3.2 汇编语句表达式 3.3 伪指令 3.4 DOS系统功能调用 3.5 综合举例,开 始,3.1 宏汇编语言格式,3.1.1 指令语句格式 3.1.2 伪指令语句格式,返回本章首页,3.1.1 指令语句格式,指令语句的一般格式如下: 标号: 指令助记符 操作数 ;注释 1标号:标号是机器指令语句存放地址的符号表示,代表该指令目标代码的第一个字节地址,后面必须紧跟冒号“:” 。 2指令助记符:指令助记符为语句的核心成分,表示了该语句的操作类型。 3操作数:操作数表示指令助记符的操作对象。 4注释:注释均以分号开始,它可占一行或多行,一般放在

2、一条语句的后面。,返回本节,3.1.2 伪指令语句格式,伪指令语句格式如下: 符号名 伪指令符 操作数 ;注释 1符号名:符号名是伪指令语句的一个可选项。 2伪指令符:伪指令符指定汇编程序要完成的具体操作,如数据定义伪指令DB、DW、DD,段定义伪指令SEGMENT,假定伪指令ASSUME等。 3操作数:伪指令后面的操作数可以是常数、字符串、变量、表达式等,其个数由具体的伪指令决定,各个操作数之间必须以“逗号”分隔。 4注释:伪指令的注释必须以“;”开始,其作用同指令语句中的注释部分。,返回本节,3.2 汇编语句表达式,3.2.1 常量 3.2.2 变量 3.2.3 标号 3.2.4 表达式与

3、运算符 3.2.5 运算符的优先级,返回本章首页,3.2.1 常量,1数值常量 2. 字符串常量,1数值常量,表3.1 各种形式数字常量格式对照表,2. 字符串常量,字符串常量是用单引号或双引号引起来的一个或多个字符。字符串常量是以各字符的ASC码表示的。如A用41H 表示,字符串A1B2用41H,31H,42H,32H表示。,返回本节,3.2.2 变量,1变量 2变量的定义,(1)段属性 (2)偏移地址属性 (3)类型属性,1变量,表达式项是给变量或指定存储单元赋予初值,它有以下几种形式: (1)数值表达式 (2) 字符串表达式 (3)地址表达式(只适用DW和DD两个伪指令) (4)? 表达

4、式 (5)带DUP的表达式,2变量的定义,数据定义伪指令可以为一个或连续的存储单元设置数值初值。 【例3.1】为数据段分配存储单元。 DATA SEGMENT A DB 11H,12H,13H B DW 1122H,3344H C DD 12345678H DATA ENDS 上述变量的存储单元分配及初始化情况如下图3.1所示。,(1)数值表达式,图3.1 数据段中数据存储分配图,字符串表达式中的字符串必须用引号引起来。DB、DW、DD伪指令将字符串中的各字符均以ASC码形式存放在相应的存储单元,但表示形式各不相同。 【例3.2】为字符串分配存储单元。 DATA SEGMENT STR1 DB

5、 1234 STR2 DW AB,CD,A STR3 DD AB DATA ENDS 其存储单元分配如下图3.2所示。,(2) 字符串表达式,图3.2 数据段存储分配图,(3)地址表达式(只适用DW和DD两个伪指令) 如果该地址表达式为一变量(或标号)名,用DW伪指令则是取它的偏移地址来初始化变量,用DD伪指令则是取它的段首址和偏移地址来初始化变量。 例如: BUF1 DW A BUF2 DD B,在表达式中使用重复数据操作符DUP,可以为连续的存储单元提供重复数据,其格式为: N DUP(表达式) 其中N为重复因子,只能取正整数,表示定义了N个重复数据存储单元,其类型由它前面的数据定义伪指令

6、确定,而每个数据存储单元中的初值由DUP后面圆括号中的表达式给定。 例如: BUF DB 100 DUP(0) 以上语句定义了以BUF为首址,大小为100个字节,初值为0的数据存储单元。,(5)带DUP的表达式,返回本节,3.2.3 标号,标号是一条指令语句的符号地址。在汇编源程序中,只有在需要转向一条指令语句时,才为该指令语句设置标号,以便在转移类指令(含子程序调用指令)中直接引用这个标号。因此,标号可作为转移类指令的操作数,即转移地址。 【例3.3】符号地址表示。 NEXT:MOV AL, SI ;带标号NEXT的指令 DEC CX JNE NEXT ;标号NEXT作转移指令的操作数,1段

7、属性 2偏移地址属性 3类型属性,标号也具有三种属性,返回本节,3.2.4 表达式与运算符,1算术运算符 2逻辑运算符 3关系运算符 4属性运算符 5数值返回运算符,算术运算符包括:(加)、(减)、*(乘)、(除)、MOD(求模)、SHL(左移)、SHR(右移)几种,它既可以用于数值表达式又可用于地址表达式。,1算术运算符, NUM1 EQU 25*4 50 ;NUM1=50 NUM2 EQU NUM1 / 7 ;NUM2=7 NUM3 DB NUM1 MOD 7 ;NUM3=1 VAR1 DB 1,2,3,4,5 VAR2 DB 12345 NUM4 EQU VAR2-VAR1 ;NUM4=

8、5 NUM5 EQU 0FH MOV AL,NUM5 SHL 4 ;(AL)=11110000B MOV BL,NUM5 SHR 4 ; (BL)=00000000B,【例3.4】用算术运算符进行数值表达式运算。,逻辑运算符包括:逻辑乘(AND)、逻辑加(OR)、按位加(XOR)、逻辑非(NOT)四种运算。由于逻辑运算是按位操作,且在汇编过程中完成,因而运算的结果仍为整数常量。 【例3.5】用逻辑运算符进行运算。 MOV AL,34H AND 0FH ;04HAL MOV BL,05H OR 30H ;35HBL MOV CX,NOT 00FFH ;0FF00HCX MOV DX,789AH

9、XOR 000FH ;7895HDX,2逻辑运算符,关系运算符包括:相等(EQ),不等(NE),小于(LT),大于(GT),小于等于(LE)及大于等于(GE)。 【例3.6】用关系运算符进行数值表达式运算。 NUM1 DB 10 LT 5 ;NUM1=0 NUM2 DB 0AAAAH GT 7FFFH ;NUM2=0FFFFH MOV AX,A EQ 41H ;0FFFFHAX MOV BX,NUM2 LT NUM1 ;0BX,3关系运算符,(1)PTR运算符 格式: 类型 PTR 地址表达式 PTR与EQU连用,可定义与PTR右边地址表达式类型不同的新变量名或新标号,但不另分配存储单元。,4

10、属性运算符,(1)SEG 运算符 (2)OFFSET运算符 (3)TYPE运算符 (4)LENGTH运算符 (5)SIZE运算符 (6)字节分离运算符,5数值返回运算符,(1)SEG 运算符 格式:SEG 变量或标号 功能:分离出其后变量或标号所在段的段首址。例如: MOV AX,SEG ARR MOV DS,AX (2)OFFSET运算符 格式:OFFSET 变量或标号 功能:分离出其后变量或标号的偏移地址。例如: MOV BX,OFFSET BUF,(3)TYPE运算符 格式:TYPE 变量或标号 功能:分离出其后变量或标号的类型。如果是变量,将返回该变量的类型对应字节数;如果是标号,则返

11、回代表标号类型的数值。它们之间的关系见表3.2所示。,(4)LENGTH运算符 格式:LENGTH 变量 功能:取出变量所含的数据存储单元个数。 【例3.12】取出变量占存储单元个数。 DATA SEGMENT A DB ABCDEF B DW 10 DUP(1,2DUP(2) C DB 3,20 DUP(0) DATA ENDS MOV AX,LENGTH A ;1AX MOV BX,LENGTH B ;10BX MOV CX,LENGTH C ;1CX ,(5)SIZE运算符 格式:SIZE 变量 功能:取出变量所含的数据存储区大小。其返回值为: LENGTH 变量 * TYPE 变量 例

12、如:上例中A、B、C三变量: SIZE A = LENGTH A*TYPE A = 1 SIZE B = LENGTH B*TYPE B = 20 SIZE C = LENGTH C*TYPE C = 1,(6)字节分离运算符 字节分离运算符包括:HIGH和LOW。 格式:HIGH 常量或地址表达式 LOW 常量或地址表达式 功能:HIGH 用来分离出其后16位常量或地址表达式的偏移量的高字节;LOW用来分离出其后16位常量或地址表达式偏移量的低字节。,返回本节,3.2.5 运算符的优先级,表3.3 运算符的优先级,返回本节,3.3 伪指令,3.3.1 数据定义伪指令 3.3.2 符号定义伪指

13、令 3.3.3 段定义伪指令SEGMENT/ENDS 3.3.4 假定伪指令ASSUME 3.3.5 置汇编地址计数器伪指令ORG 3.3.6 源程序结束伪指令,返回本章首页,3.3.1 数据定义伪指令,常用的数据定义伪指令有DB,DW,DD,DQ,DT。 格式:变量名 数据定义伪指令 表达式 , 功能:定义数据存储区,类型由数据定义伪指令确定,初值由表达式给定。,返回本节,3.3.2 符号定义伪指令,1等价伪指令 2等号伪指令 3定义符号名伪指令,1等价伪指令,格式:符号名 EQ 表达式 功能:为常量、表达式及其他各种符号定义一个等价的符号名,但它不申请存储单元。 用途: 用符号表示常量、数

14、值表达式,即定义符号常量。使用符号常量可使程序简单明了,增强程序的可读性和通用性。 EQU与属性运算符TR或THIS联合使用,可以给变量或标号定义新的类型属性并重新命名,但保持其段偏移地址属性不变。 利用EQU可以用一个符号名替代一个复杂的地址表达式和其他一些符号,如指令助记符、变量名、标号、段名、寄存器名、宏定义名等。,2等号伪指令,格式:符号名 = 表达式 功能:为常量、表达式及其他各种符号定义一个等价的符号名,并能对所定义的符号多次重复定义,且以最后一次定义的值为准。 【例3.17】定义等价符号名。 COST = 20 M = MOV LOST = LOST+10 ;30LOST M =

15、 ADD ;M=ADD ,3定义符号名伪指令,3定义符号名伪指令 格式:变量名或标号 LABEL 类型 功能:定义与原有变量类型不同的新变量或为指令语句定义有指定类型的标号。通常与数据定义伪指令连用,其功能类似语句“变量名或标号 EQU THIS 类型”。 【例3.18】定义新类型的变量。 DDBUF LABEL DWORD BUF DB 200 DUP(0) A LABEL FAR B: LEA DX,BUF ,返回本节,3.3.3 段定义伪指令SEGMENT/END,1段名 2定位方式 3类别 4组合方式,1段名 段名是为该段起的名字,用来指出汇编程序为该段分配的存储区起始位置。 2定位方

16、式 (1)PARA:表示本段必须从能被16整除的地址处开始存放,即段起始地址最低四位必须是0。 (2)WORD:表示本段要从一个偶数地址处开始存放,即段起始地址的最低一位必须是0。 (3)BYTE:表示本段起始地址可以从任一地址处开始存放。 (4)PAGE:表示本段要从能被256整除的地址处开始存放,即起始地址的最低八位必须是0。,【例3.19】对连接程序进行连接后存储区各段相对位置分布。 DATA1 SEGMENT DATA CODE SEGMENT CODE STACK1 SEGMENT STACK DATA2 SEGMENT DATA STACK2 SEGMENT STACK 经连接程序连

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

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

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