《宏汇编语言小结》ppt课件

上传人:tia****nde 文档编号:69376459 上传时间:2019-01-13 格式:PPT 页数:55 大小:502.82KB
返回 下载 相关 举报
《宏汇编语言小结》ppt课件_第1页
第1页 / 共55页
《宏汇编语言小结》ppt课件_第2页
第2页 / 共55页
《宏汇编语言小结》ppt课件_第3页
第3页 / 共55页
《宏汇编语言小结》ppt课件_第4页
第4页 / 共55页
《宏汇编语言小结》ppt课件_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《《宏汇编语言小结》ppt课件》由会员分享,可在线阅读,更多相关《《宏汇编语言小结》ppt课件(55页珍藏版)》请在金锄头文库上搜索。

1、母亲卡,宏汇编语言 小结,宏汇编语言格式 表达式 (*)8086基本指令系统 常用的汇编伪指令,宏汇编语言格式,1 指令语句格式 2 伪指令语句格式,1 指令语句格式,指令语句的一般格式如下: 标号:指令助记符 操作数 ; 注释 标号:标号是机器指令语句存放地址的符号表示,代表该指令目标代码的第一个字节地址,后面必须紧跟冒号“:” 。 指令助记符:指令助记符为语句的核心成分,表示了该语句的操作类型。 操作数:操作数表示指令助记符的操作对象。 注释:注释均以分号开始,它可占一行或多行,一般放在一条语句的后面。,2 伪指令语句格式,伪指令语句格式如下: 符号名 伪指令符 操作数 ;注释 符号名:符

2、号名是伪指令语句的一个可选项。 伪指令符:伪指令符指定汇编程序要完成的具体操作,如数据定义伪指令DB、DW、DD,段定义伪指令SEGMENT,假定伪指令ASSUME等。 操作数:伪指令后面的操作数可以是常数、字符串、变量、表达式等,其个数由具体的伪指令决定,各个操作数之间必须以“逗号”分隔。 注释:伪指令的注释必须以“;”开始,其作用同指令语句中的注释部分。,汇编语句表达式,1 常量 2 数值表达式 3 变量 4 标号,1 常量,1)数值常量 2). 符号常量,1)数值常量,表3.1 各种形式数字常量格式对照表,数值类型常量有二进制、八进制、十进制和十六进制数字形式和字符串形式的常量。,字符串

3、常量是用单引号或双引号引起来的一个或多个字符。字符串常量是以各字符的ASC码表示的。如A用41H 表示,字符串A1B2用41H,31H,42H,32H表示。,字符串形式的常量,2). 符号常量,对经常使用的数值常量可以先为它定义一个名字,然后在语句中用名字来表示该常量。 符号常量需要用等价伪指令EQU和等号伪指令“=”来定义。,等价伪指令的基本格式为:,符号名 EQU 表达式 例:VAL EQU 100 ;表达式为一个常数 NUM EQU VAL+50 ;表达式为一个数值表达式 OPE EQU ADD ;表达式为一个指令助记符,等号伪指令的基本格式为:,符号名=常数表达式 例: COUNT=5

4、0 MOV BX,COUNT ;等价于MOV BX,50,注意:EQU语句不能重复定义,而“=”伪指令可以重复定义,其作用域从定义点到重新定义之前。,2 数值表达式,数值表达式,算术运算符包括:(加)、(减)、*(乘)、(除)、MOD(求模)几种,它既可以用于数值表达式又可用于地址表达式。,1)算术运算符,算术操作符例:,逻辑运算符包括:逻辑乘(AND)、逻辑加(OR)、按位加(XOR)、逻辑非(NOT)四种运算;另外还有SHL(左移)、SHR(右移)运算。由于逻辑运算是按位操作,且在汇编过程中完成,因而运算的结果仍为整数常量。,2)逻辑运算符,; AND AX,1,IN AL, PORT_V

5、AL ;61H OUT PORT_VAL AND 0FEH, AL ;60H,MOV AX, 0FFFFH SHL 2,; MOV AX,0FFFCH,关系运算符包括:相等(EQ),不等(NE),小于(LT),大于(GT),小于等于(LE)及大于等于(GE)。 【例】用关系运算符进行数值表达式运算。 NUM1 DB 10 LT 5 ;NUM1=0 NUM2 DB 0AAAAH GT 7FFFH ;NUM2=0FFH MOV AX,A EQ 41H ;0FFFFHAX MOV BX,NUM2 LT NUM1 ;0BX,3)关系运算符,4) 数值回送操作符 OFFSET、SEG、TYPE、 LEN

6、GTH、SIZE,SIZE 变量 功能:LENGTH * TYPE,OFFSET / SEG 变量 / 标号 功能:回送变量或标号的偏址 / 段址,TYPE 变量 / 标号 / 常数 DB DW DD DF DQ DT NEAR FAR 常数 1 2 4 6 8 10 -1 -2 0,LENGTH 变量 功能:回送由DUP定义的变量的单元数,其它情况回送1,ARRAY DW 100 DUP (?) TABLE DB ABCD ADD SI, TYPE ARRAY ; ADD SI, 2 ADD SI, TYPE TABLE ; ADD SI, 1 MOV CX, LENGTH ARRAY ;

7、MOV CX, 100 MOV CX, LENGTH TABLE ; MOV CX, 1 MOV CX, SIZE ARRAY ; MOV CX, 200 MOV CX, SIZE TABLE ; MOV CX, 1,属性操作符 PTR、段前缀操作符、SHORT、 THIS、HIGH、LOW、HIGHWORD、LOWWORD,HIGH和LOW CONS EQU 1234H MOV AH, HIGH CONS MOV AL, LOW CONS,类型 PTR 表达式 MOV WORD PTR BX, 5 段前缀操作符 MOV ES: BX, AL SHORT 标号 JMP SHORT NEXT,T

8、HIS 类型 TA EQU THIS BYTE TD DW 1234H NEXT EQU THIS FAR MOV AX,2,3 变量,1)变量 2)变量的定义,(1)段属性 (2)偏移地址属性 (3)类型属性,1)变量,变量是一个数据存储单元的名字。由于汇编语言中存储单元是分段使用的,所以变量具有三个属性:,变量定义伪指令: 在汇编语言中变量的主要类型有字节(BYTE)、字(WORD)、双字(DWORD)、四字(QWORD)和十字节(TBYTE)。 对应的变量定义伪指令即有:DB、DW、DD、DQ、和DT。,2)变量的定义,格式:变量名 变量定义伪指令 表达式,表达式: 表达式项是给变量或指

9、定存储单元赋予初值,它有以下几种形式: (1)数值表达式 (2) 字符串表达式 (3)地址表达式(只适用DW和DD两个伪指令) (4)? 表达式 (5)带DUP的表达式,变量定义伪指令可以为一个或连续的存储单元设置数值初值。 【例】为数据段分配存储单元。 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码形

10、式存放在相应的存储单元,但表示形式各不相同。 【例】为字符串分配存储单元。 DATA SEGMENT STR1 DB 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,可以为连续的存储单元提供重复数据,其格式为:

11、N DUP(表达式) 其中N为重复因子,只能取正整数,表示定义了N个重复数据存储单元,其类型由它前面的数据定义伪指令确定,而每个数据存储单元中的初值由DUP后面圆括号中的表达式给定。 例如: BUF DB 100 DUP(0) 以上语句定义了以BUF为首址,大小为100个字节,初值为0的数据存储单元。,(5)带DUP的表达式,综合举例,DATA SEGMENT A DW M BUF DB AB,0DH,0AH CON EQU 500H B DW 0FFAAH D DD BUF M DB 2 DUP (1),A DUP(2,B),123,1,2,3 DATA ENDS,4 标号,标号是一条指令语

12、句的符号地址。在汇编源程序中,只有在需要转向一条指令语句时,才为该指令语句设置标号,以便在转移类指令(含子程序调用指令)中直接引用这个标号。因此,标号可作为转移类指令的操作数,即转移地址。 【例】符号地址表示。 NEXT:MOV AL, SI ;带标号NEXT的指令 DEC CX JNE NEXT ;标号NEXT作转移指令的操作数,1段属性 2偏移地址属性 3类型属性,标号也具有三种属性,伪指令(伪操作),1 数据定义伪指令 2 符号定义伪指令 3 段定义伪指令SEGMENT/ENDS 4 假定伪指令ASSUME 5 地址计数器与对准伪操作 6 基数控制伪操作 7 源程序结束伪指令,1 数据定

13、义伪指令,常用的数据定义伪指令有DB,DW,DD,DQ,DT。 格式:变量名 数据定义伪指令 表达式 , 功能:定义数据存储区,类型由数据定义伪指令确定,初值由表达式给定。,2 符号定义伪指令,1)等价伪指令 2)等号伪指令 3)定义符号名伪指令,1)等价伪指令,格式:符号名 EQ 表达式 功能:为常量、表达式及其他各种符号定义一个等价的符号名,但它不申请存储单元。 用途: 用符号表示常量、数值表达式,即定义符号常量。使用符号常量可使程序简单明了,增强程序的可读性和通用性。 EQU与属性运算符PTR或THIS联合使用,可以给变量或标号定义新的类型属性并重新命名,但保持其段偏移地址属性不变。 利

14、用EQU可以用一个符号名替代一个复杂的地址表达式和其他一些符号,如指令助记符、变量名、标号、段名、寄存器名、宏定义名等。,2)等号伪指令,格式:符号名 = 表达式 功能:为常量、表达式及其他各种符号定义一个等价的符号名,并能对所定义的符号多次重复定义,且以最后一次定义的值为准。 【例】定义等价符号名。 COST = 20 COST = COST+10 ;30LOST ,3)定义符号名伪指令Label,格式:变量名或标号 LABEL 类型 功能:定义与原有变量类型不同的新变量或为指令语句定义有指定类型的标号。通常与数据定义伪指令连用,其功能类似语句“变量名或标号 EQU THIS 类型”。 【例

15、】定义新类型的变量。 DDBUF LABEL DWORD BUF DB 200 DUP(0) A LABEL FAR B: LEA DX,BUF ,3 段定义伪指令SEGMENT/ENDS,段定义的一般格式为: 段名 SEGMENT 定位类型 组合类型 类别 . . . 段名 ENDS,说明:汇编语言中的段定义伪指令等指示汇编程序把合适的连接信息写入到目标模块中,连接程序再根据目标模块中的连接信息进行连接操作。,1段名 段名是为该段起的名字,用来指出汇编程序为该段分配的存储区起始位置。,2定位方式 定位方式表示当前段对起始地址的要求,从而指示连接程序如何衔接相邻的两段。 (1)PARA:表示本段必须从能被16整除的地址处开始存放,即段起始地址最低四位必须是0。 (2)WORD:表示本段要从一个偶数地址处开始存放,即段起始地址的最低一位必须是0。 (3)BYTE:表示本段起始地址可以从任一地址处开始存放。 (4)PAGE:表示本段要从能被256整除的地址处开始存放,即起始地址的最低八位必须是0。,组合方式用于通知连接程序,如何把不同模块内段名相同的段组合到一起。组合方式有五种类型可供选择。 (1)PRIVATE 表示 本段与其他段逻辑上不发生关联,尽管在物理地址上可能相邻,但每段都有自己的段首址,这是隐含的组合类型。 (2)PU

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

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

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