汇编语言语句种类及其格式ff

上传人:mg****85 文档编号:50593069 上传时间:2018-08-09 格式:PPT 页数:85 大小:545KB
返回 下载 相关 举报
汇编语言语句种类及其格式ff_第1页
第1页 / 共85页
汇编语言语句种类及其格式ff_第2页
第2页 / 共85页
汇编语言语句种类及其格式ff_第3页
第3页 / 共85页
汇编语言语句种类及其格式ff_第4页
第4页 / 共85页
汇编语言语句种类及其格式ff_第5页
第5页 / 共85页
点击查看更多>>
资源描述

《汇编语言语句种类及其格式ff》由会员分享,可在线阅读,更多相关《汇编语言语句种类及其格式ff(85页珍藏版)》请在金锄头文库上搜索。

1、4.1 汇编语言语句种类及其格式第四章 汇编语言程序格式不同的汇编程序有不同的汇编语言编程规定。 目前支持Intel8086/8088系列微机,常用的汇编程 序有ASM、MASM、TASM、OPTASM等 。本章主要介绍汇编语言程序设计中的一些基本 书写格式与语法规则。1每一条指令语句在汇编时都要产生一个可供CPU执 行的机器目标代码,它又叫可执行语句。一、指令语句指令语句的一般格式为:标号指令助记符操作数注释;:,一条指令语句最多可以包含4个字段汇编语言的语句可以分为指令语句、伪指令语句 和宏指令语句(宏调用语句)。2标号是可选字段,它后面必须有“:”。标号是一条 指令的符号地址,代表了该指

2、令的第一个字节存放 地址。1.标号字段标号一般放在一个程序段或子程序的入口处,控制 程序的执行转到该程序位置。例 ADDR1:MOV AL,100在转移指令或子程序调用指令中,可直接引用这个 标号。3该字段是一条指令的必选项,它表示这条语句要求 CPU完成什么具体操作,如MOV、ADD、SHL等。2.指令助记符字段一条指令可以有一个操作数、两个操作数或者无操 作数。3.操作数字段有些指令还可以在指令助记符的前面加上前缀,实 现一定的附加操作。如串操作指令前所加的重复前 缀REP(见第7章介绍)等。如ADD、MOV指令需要两个操作数,INC、NOT指 令只需一个操作数,而CLC指令不需要操作数。

3、44.注释字段例:LABEL1:ADD AX,BX;功能为AXMOV AX ,0FF0FH MOV AL , NOT 0F0H =MOV AL , 0FH MOV BL , 55H AND 0F0H =MOV BL,50H MOV BH , 55H OR 0F0H =MOV BH, 0F5H MOV CL , 55H XOR 0F0H =MOV CL, 0A5H三、关系运算符关系运算符包括:EQ(等于)、NE(不等于)、LT(小 于)、 LE(小于等于)、GT(大于)、 GE(大于等于)39关系运算符用于比较两个表达式的大小。关系运算符 比较的两个表达式必须同为常数或同一逻辑段中的变量。如果是

4、常量的比较,则按无符号数进行比较;如果是 变量的比较,则比较它们的偏移量的大小。关系运算的结果只能是“真”(全1)或“假”(全0)MOV AX,0FH EQ 1111B =MOV AX ,0FFFFH MOV BX , 0FH NE 1111B =MOV BX, 0例1:VAR DW NUM LT 0ABH该语句在汇编时,根据符号常量NUM的大小来决定VAR 存储单元的值,当NUM0ABH时,则变量VAR的内容为 0FFFFH,否则VAR的内容为0。例240四、数值返回运算符该类运算符有5个,它们将变量或标号的某些特征值或存 储单元地址的一部分提取出来。取变量或标号所在段的段基值。1.SEG运

5、算符DATA SEGMENTK1 DW 1,2K2 DW 3,4 MOV AX , SEG K1 MOV BX , SEG K2例如:设DATA逻辑段的段基值为1FFEH ,则两条传送指令将被汇编为:MOV AX ,1FFEH MOV BX ,1FFEH作用41该运算符的作用是取变量或标号在段内的偏移量。2.OFFSET运算符例如:DATA SEGMENT VAR1 DB 20H DUP(0) VAR2 DW 5A49H ADDR DW VAR2 ;将VAR2的偏移量20H存入ADDR中.MOV BX,VAR2;(BX)=5A49HMOV SI , 0FFSET VAR2 ;(SI)=20HM

6、OV DI, ADDR ;DI的内容与SI相同MOV BP,OFFSET ADDR ;(BP)=22H42该运算符的作用为取变量或标号的类型属性,并用数字形式 来表示。对变量来说就是取它的字节长度。3.TYPE运算符变量BYTE 1 WORD 2 DWORD 4标号NEAR -1 FAR -2例如:V1 DB ABCDE V2 DW 1234H, 5678H V3 DD V2 ;存放V2的段基值和偏移量MOV AL , TYPE V1MOV CL , TYPE V2MOV CH , TYPE V3上述程序段汇编后的等效指令序列如下:43MOV AL,01H MOV CL,02H MOV CH,

7、04H该运算符只能加在变量的前面。如果变量是用重复数 据操作符DUP说明的,则返回外层DUP给定的值。如果没 有用DUP说明,则返回值总是1。4.LENGTH运算符K1 DB 10H DUP(0) K2 DB 10H,20H,30H,40H K3 DW 20H DUP(0,1,2 DUP(0) K4 DB ABCDEFGH 44MOV AL, LENGTH K1; (AL)=10H MOV BL, LENGTH K2 ; (BL)=1 MOV CX, LENGTH K3 ; (CX)=20H MOV DX, LENGTH K4 ; (DX)=1该运算符只能作用于变量,SIZE取值等于LENGT

8、H和 TYPE两个运算符返回值的乘积。5.SIZE运算符例如,对于上面例子,加上以下指令:MOV AL ,SIZE K1 ;(AL)=10H MOV BL,SIZE K2 ; (BL)=1 MOV CL,SIZE K3 ; (CL)=20H*2=40H MOV DL,SIZE K4 ; (DL)=145五、属性修改运算符这一类运算符用来对变量、标号或存储器操作数的类 型属性进行修改或指定。1.PTR运算符类型 PTR 地址表达式使用格式:作用: 将地址表达式所指定的标号、变量或用其它形式表 示的存储器地址的类型属性修改为 “类型”所指的值。类型可以是BYTE、WORD、DWORD、NEAR和F

9、AR。 这种修改是临时性的,只在含有该运算符的语句内有效。46例如: DA_BYTE DB 20H DUP(0) DA_WORD DW 30H DUP(0). MOV AX , WORD PTR DA_BYTE10 ADD BYTE PTR DA_WORD20, BL INC BYTE PTR BX SUB WORD PTR SI, 100 JMP FAR PTR SUB1;指明SUB1不是本段中的地址2.HIGH/LOW运算符HIGH 表达式LOW 表达式使用格式:这两个运算符用来将一个数据分离出高字节和低字节。47如果表达式为一个常量,则将其分离成高8位和低8位 ;如果表达式是一个地址(段

10、基值或偏移量)时,则 分离出它的高字节和低字节。例如:DATA SEGMENT CONST EQU 0ABCDH DA1 DB 10H DUP (0) DA2 DW 20H DUP (0) DATA ENDS. MOV AH ,HIGH CONST MOV AL, LOW CONST MOV BH, HIGH (OFFSET DA1) MOV BL, LOW (OFFSET DA2) MOV CH, HIGH (SEG DA1) MOV CL, LOW (SEG DA2)设DATA段的段基值是0926H,则 上述指令序列汇编后的等效指令为:MOV AH , 0ABH MOV AL , 0CDH

11、 MOV BH , 00H MOV BL , 10H MOV CH , 09H MOV CL , 26H48注意:HIGH/LOW运算符不能用来分离一个变量、寄 存器或存储器单元的高字节与低字节。下面语句使用是错误的用法。DA1 DW 1234H MOV AH,HIGH DA1 MOV BH, LOW AX MOV CH,HIGH SI493、THIS运算符THIS运算符一般与等值运算符EQU连用,用来定 义一个变量或标号的类型属性。所定义的变量或标号的 段基值和偏移量与紧跟其后的变量或标号相同。例如:DATA_BYTE EQU THIS BYTEDATA_WORD DW 10 DUP (0)

12、MOV AX, DATA_WORDMOV BL, DATA_BYTE. 又如:LFAR EQU THIS FAR LNEAR:MOV AX,B标号LFAR与LNEAR具有相同的逻辑地址值,但类型 不同。LNEAR只能被本段中的指令调用,而LFAR可 以被其它段的指令调用。50六、运算符的优先级在一个表达式中如果存在多个运算符时,在计算时就有先 后顺序问题。不同的运算符具有不同的运算优先级别。优先级别 运算符(最高)1 LENGTH,SIZE ,圆括号2 PTR,OFFSET,SEG,TYPE,THIS3 HIGH,LOW4 *,/,MOD,SHR,SHL5 +,-6 EQ,NE,LT,LE,G

13、T,GE7 NOT8 AND (最低)9 OR,XOR51汇编程序在计算表达式时,按以下规则进行运算。 先执行优先级别高的运算,再算较低级别运算; 相同优先级别的操作,按照在表达式中的顺序,从 左到右进行; 可以用圆括号改变运算的顺序。例如:K1= 10 OR 5 AND 1 ;结果为K1=11 K2=(10 OR 5) AND 1 ;结果为K2=1524.5 程序的段结构8086/8088在管理内存时,需要按照逻辑段进行划 分,不同的逻辑段可以用来存放不同目的的数据。在 程序中使用四个段寄存器CS,DS,ES和SS来访问它们。在源程序设计时,使用伪指令来定义和使用这些逻辑段。53段名 SEG

14、MENT 定位类型 组合类型 类别名. . 本段语句序列 . 段名 ENDS一般格式:一、段定义伪指令伪指令SEGMENT和ENDS用于定义一个逻辑段。使 用时必须配对,分别表示定义的开始与结束。54段名是由用户自己任意选定的,符合标识符定义 规则的一个名称。段定义伪指令语句各部分的作用如下:1、段名最好选用与该逻辑段用途相关的名称。如第一个数 据段为DATA1,第二个数据为DATA2等。一个段的开始与结尾用的段名必须一致。552、定位类型定位类型用于决定段的起始边界,即第一个可存放数据 的位置(不是段基址)。它可以有4种取值。由于一个页面为256个字节,并且页面编号从0开始,因此 ,PAGE

15、定位类型的段起始地址的最后8位二进制数一定为0 ,即以00H结尾的地址。(1)PAGE: 表示该段从一个页面的边界开始(2)PARA:表示该段从一个小节的边界开始如果用户未选定位类型,则缺省为PARA。56(3)WORD:表示该段从一个偶数字节地址开始,即段起始 单元地址的最后一位二进制数一定是0。(4)BYTE:表示该段起始单元地址可以是任一地址值。注意:定位类型为PAGE和PARA时,段起始地址与段基址 相同。定位类型为WORD和BYTE时,段起始地址与段基址 可能不同。57(1) NONE:若未指定组合类型,表示本段与其它段无连接 关系。在装入内存时,本段有自己的物理段,因此有自己的 段基址。3、组合类型组合类型说明符用来指定段与段之间的连接关系和定位

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

当前位置:首页 > 生活休闲 > 科普知识

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