宏汇编语言设计课件_第1页
宏汇编语言设计课件_第2页
宏汇编语言设计课件_第3页
宏汇编语言设计课件_第4页
宏汇编语言设计课件_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第四章 宏汇编语言设计第一节 概述第二节 MASM中表达式第三节 伪指令语句第一节 概述汇编语言与汇编程序汇编语言:用指令的助记符、符号常量、标量等语言书写的程序设计语言称为汇编语言。汇编语言编写的源程序与机器语言一一对应汇编程序:把汇编语言书写的源程序翻译目标代码的程序称为汇编程序汇编程序的功能: 1、将汇编语言源程序翻译成机器语言 2、按用户指定自动分配存储空间 3、自动把各种进制转换成两进制 4、把字符转换成ASCII码 5、计算表达式 6、自动对源程序进行检查,若有错,给出出错信息 汇编语言程序格式汇编语言语句有两类:指令性语句、指示性语句指令性语句: 与机器指令相对应,可翻成目标代码

2、指示性语句: 也称伪指令,告诉汇编语言应该进行什么操作。 指令性语句格式:标号: 指令助记符 操作数 ,操作数 ;注释标号为指令语句的符号地址,标号后面紧跟“:”可省略标号可用字符为字母(AZ,az)数字(09)特殊字符(、_、?) 第一字符不允许数字,长度为31个字符指令助记符 语句的指令名称,即指令的操作类型,不可省操作数按指令要求可跟一个、两个、可无,操作数和操作数之间用“,”分隔。注释可跟用户要求选用,注释前加“;” 指示性语句(伪指令)格式: 名字 伪指令指示符 操作数,操作数;注释名称为伪指令的符号地址,用空格分隔,可省略伪指令的名称是变量、段名、过程名、符号名伪指令指示汇编语言完

3、成的操作,不可省操作数按伪指令的要求给,可无,可一个、多个,多个操作数之间用“,”分隔。注释同前 数据项:汇编语言有常量、变量、标号三个数据项常量 固定值,没有属性。 常量的形式:二进制 10100111B、八进制 1073Q或1072O 、十进制5678 或1234D 、十六进制 0AF6H ASCII码 ABC。变量 指存储单元中值,运行过程可修改。 变量有三个属性:段属性、偏移属性、类型属性标号 可执行指令语句的符号地址 ,用于确定转移指令 的目标地址。 标号有三个属性 :段属性、偏移属性、距离属性字节 BYTE字 WORD 双 DWORD近 NEAR 远 FAR 第二节 MASM 表达

4、式表达式:由运算对象与运算符,经表达式运算后可以是数字,也可以是地址。MASM中的运算符有6类:算术运算符、逻辑运算符、关系运算符、数值返回运算符、属性修改运算符、其它运算符。 算术运算符:加(+)、减(-)、乘(*)、除(/) 模(MOD)、左移(SHL)、右移(SHR)若运算结果是地址,运算符仅限+、-运算符一、算术运算符 例1: ARRAY DB 1,2,3,4,5,6,7,8 TRY DB 20 MOV AX,30*5 ;MOV AX,150 MOV CX,(TRY-ARRAY) ;MOV CX,8例2: DA EQU 300 MOV AX,DA-80 ;MOV AX,220 MOV

5、BX,DA MOD 100 ;MOV BX,0 MOV CX,DA/100 ;MOV CX,3 MOV DH,01100100B SHR 2;MOV DH,19H 逻辑运算符:AND(与)、OR(或)、NOT(非) XOR(异或) MOV AL,NOT 0FFH ;MOV AL,0 MOV BL,8CH AND 73H ;MOV BL,0 MOV AH,8CH OR 73H ;MOV AH,0FFH MOV CH,8CH XOR 73H ;MOV CH,0FFH AND AL,55 AND 0FH二、逻辑运算符三、关系运算符关系运算符:EQ(相等)、NE(不相等)、 LE(小于或等于)、LT(

6、小于)、 GE(大于或等于)、GT(大于) 关系运算符结果有两个:例: MOV AX,10H GT 16 ;MOV AX,0 ADD BL, 6 EQ 0110B ;MOV BL,0FFH MOV CX,(PORT LT 5) AND 100) OR(PORT GE 5) AND 200) IF PORT=5; MOV CX,200真: 全1 假: 全0四、数值返回运算符数值返回运算符也称分析运算符1、OFFSET 格式 OFFSET 变量或标号 加在变量或标号前 回值是该变量或标号的偏移地址 MOV BX,OFFSET DA1 LEA BX,DA12、SEG 格式 SEG 变量或标号 加在变

7、量或标号前 回值是该变量或标号的段地址 MOV AX,SEG M1 MOV DS,AX 3、TYPE 格式 TYPE 变量或标号加在变量前,回值是变量的类型属性加在标号前,回值是标号的距离属性DB 1 DW 2 DD 4 DQ 8 DT 10NEAR -1 FAR -2 例 A1 DB 20H,30H A2 DW 0438H A3 DD ? L1: MOV AH,TYPE A1 ; MOV AH,1 MOV BH,TYPE A2 ; MOV BH,2 MOV AL, TYPE A3 ; MOV AL,4 MOV BL,TYPE L1 ; MOV BL,0FFH 4、LENGTH 格式 LENG

8、TH 变量当变量中使用DUP时,LENGTH返回此变量所包含的单元数对其它变量,则返回1 M1 DW 100 DUP (?) M2 DW 1,2,3 M3 DB ABCD MOV CX,LENGTH M1 ;MOV CX,100 MOV BL,LENGTH M2 ;MOV BL,1 MOV AL,LENGTH M3 ;MOV AL,1 5、 SIZE 格式 SIZE 变量加在变量前,回值是该变量所包含的总字节数 SIZE=LENGTH*TYPE MOV CX,SIZE M1 ;MOV CX,200 MOV BL,SIZE M2 ; MOV BL,2 MOV AL,SIZE M3 ;MOV AL

9、,1 五、修改属性运算符修改属性运算符也称综合运算符1、段操作符 格式 段前缀:变量或地址表达式 例 MOV AX,ES:BX2、PTR 格式 类型/距离 PTR 变量/标号 例 N1 DB 15H,36H N2 DW 1122H,3344H LO: MOV AX,WORD PTR N1 ;(AX)=3615H MOV BL,BYTE PTR N2 ; (BL)=22H JMP LO 段内直接寻址 JMP FAR PTR LO 段间直接寻址 3、THIS 格式 变量/标号 EQU THIS 类型/距离 例 FIRST EQU THIS BYTE TABLE DW 200 DUP (?)FIRS

10、T 和TABLE具有相同的段属性,偏移属性,但FIRST是字节属性,TABLE是类型属性例 SP EQU THIS FAR SP1:MOV AX,100 JMP SP1 ;段内直接寻址 JMP SP ;段间直接寻址 4、SHORT 格式 SHORT 标号短转移符,使用该操作符指出转向的目标地址和本指令之间的距离在-128127L1: JMP SHORT L2 ;8位立即数L2; MOV AX,0 5、HIGH和LOW 格式 HIGH /LOW 变量或标号 HIGH 和LOW 为字节分离运算符,HIGH分离高 位字节,LOW分离低位字节例: K1 EQU 0ABCDH K2 EQU 1234H

11、MOV AH,HIGH K1;MOV AH,0ABH MOV BL,LOW K2 ;MOV BL,34H 6、其它运算符 (), ,, . ,MASK,WIDTH( ) 用于改变运算符的优先级 用于表示地址表达式或多重变量, 圆点.用于结构变量MASK,WIDTH用于记录 运算符计算时注意优先级第三节 伪指令语句数据定义语句表达式赋值语句段定义语句过程定义语句程序开始和结束语句一、数据定义语句格式1: 变量名 助记符 操作数,操作数, ;注释格式2: 变量名 助记符 n dup (操作数,操作数,) ;注释数据定义语句完成将操作数存入指定的内存单元助记符:DB 定义字节 DW 定义字 DD 定

12、义双字 DQ 定义八个字节 DT 定义十个字节操作数:常数、字符串、变量、标号、表达式 多个操作数用“,”分隔注释和变量名可有,可无 例1: DA1 DB 10H,52H DA2 DW 1122H,34H DA3 DD 5*20,0FFEEH105222113400A0000000EEFF0000 DA1DA2DA3 例2 操作数是字符串 FIRST DB HELLO SECOND DW OK例3 操作数用? M1 DB ? M2 DW 0D55H,?48 45 44 44 4F 4B4FFIRSTSECOND- 550D- - M1M2 例4 用DUP重复定义 ONE DB 5 DUP(0)

13、 TWO DW 10 DUP(?) THREE DB 4 DUP (1,2 DUP (20)0 0 0 0 0 - - 1 20 201 202020byte5 byte重复4ONETWOTHREE 例5 用地址表达式定义变量PAR1 为变量 ADR2,ADR3为标号 ONE DW PAR1 TWO DW ADR2 THREE DD ADR3ONETWOTHREEPAR1的偏移地址ADR2的偏移地址ADR3的偏移地址ADR3的段地址 例6 变量类型属性可通过属性操作符PTR指令 OPE1 DB 1,2 OPE2 DW 2233H,5566H MOV AX,OPE1+1 MOV AX,WORD

14、PTR OPE1+1 MOV AL,OPE2 MOV AL,BYTE PTR OPE2二、表达式赋值语句赋值语句EQU 格式: 符号名 EQU 表达式使用赋值语句可以给变量、标号、常数、指令、表达式定义符号名 COUNT EQU 100 DATA EQU COUNT+2 A1 EQU BX+SI B1 EQU OFFSET A1 C1 EQU ADD 赋值语句不可重复定义,重复定义前用PURGE解除EQU语句如有变量或表达式,则在该语句前须定义它 等号语句=等号语句与EQU 语句具有相同功能,但EQU 语句不允许重复定义,而=可重复定义例 COUNT=100 COUNT =COUNT+10 A

15、1=BX+SI MOV AX,A1 A1=BX MOV CX,A1三、段定义语句段定义语句 SEGMENT ENDS格式:段名 SEGMENT 段名 ENDS段名:逻辑段的标识符,不可省略,SEGMENT与END前的段名必须一致SEGMENT ENDS:段定义伪指令助记符,不可省SEGMENT 后面的三个参数可根据要求选用 1、定位类型 表示段对起始边界的要求* PARA 以节为起始边界 (默认值) XXXXXXXXXXXXXXXX0000* BYTE以字节为起始边界 XXXXXXXXXXXXXXXXXXXX* WORD以字为起始边界 XXXXXXXXXXXXXXXXXXX0* PAGE以页为

16、起始边界 XXXXXXXXXXXX00000000 2、组合类型:指示连接程序,该段和其他段的关系*NONE 该段与其它同名段不发生关系*PUBLC 该段与其它模块中同名段连接时,由低地址到高地址连接起来,组成一个逻辑段*COMMON 该段在连接时与其他模块中的同名段有相同的起始地址,即以覆盖方式连接,连接长度为各分段最大长度*AT 表达式 定位该段的起始地址在表达式所指出的节边界*STACK 指定该段为堆栈段,此参数在堆栈段中不可省*MOMORY 表示该段放在模块的最后,即最高地址 3、分类名用单引号把分类名括起来,分类名不超过40字符,主要作用是汇编程序连接时将所有分类名相同的逻辑段组成一个段组 段分配语句 格式如下: ASSUME CS :段名,DS:段名,SS:段名,ES:段名该语句用于建立段与段寄存器之间的关系。四、过程定义语句格式: 过程名 PROC NEAR或FAR RET 过程名 ENDP过程一经定义,通过CALL 过程名调用它同标号一样,过程名有三个属性:段属性,偏移属性,距离属性,且过程名不可省,前后必须一致CALL 和JMP 一样有段内,段间过程和段可以相互嵌套,但不能交叉覆盖过程体五、程序开始和结束语句NAME 功能:为源程序的目标模块赋名字(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论