4.第四章 汇编语言程序设计及其运行.ppt

上传人:s****8 文档编号:68597857 上传时间:2022-12-29 格式:PPT 页数:90 大小:862KB
返回 下载 相关 举报
4.第四章 汇编语言程序设计及其运行.ppt_第1页
第1页 / 共90页
4.第四章 汇编语言程序设计及其运行.ppt_第2页
第2页 / 共90页
点击查看更多>>
资源描述

《4.第四章 汇编语言程序设计及其运行.ppt》由会员分享,可在线阅读,更多相关《4.第四章 汇编语言程序设计及其运行.ppt(90页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第四四章章汇编语言的基本表达及其运行汇编语言的基本表达及其运行本章主要教学内容本章主要教学内容 l l汇编语言和汇编程序的基本概念汇编语言和汇编程序的基本概念l l汇编语言源程序书写规则、语句格式及程序分段汇编语言源程序书写规则、语句格式及程序分段l l伪指令语句的格式、功能及应用伪指令语句的格式、功能及应用 l lDOS系系统统功能功能调调用和用和BIOS中断中断调调用用 l l汇编语言源程序的建立、汇编、连接、调试及运行汇编语言源程序的建立、汇编、连接、调试及运行第四章第四章汇编语言程序设计及其运行汇编语言程序设计及其运行本章教学目的及要求本章教学目的及要求理解汇编语言和汇编程序的概念、

2、特点及其应用。理解汇编语言和汇编程序的概念、特点及其应用。掌握汇编语言源程序的书写规则、语句的基本格掌握汇编语言源程序的书写规则、语句的基本格式、程序的分段结构。式、程序的分段结构。熟悉汇编语言的基本表达、伪指令语句及其应熟悉汇编语言的基本表达、伪指令语句及其应用。用。熟悉汇编语言程序的上机运行、调试过程,掌握熟悉汇编语言程序的上机运行、调试过程,掌握基本操作技能。基本操作技能。4.14.1汇编语言和汇编程序的基本概念汇编语言和汇编程序的基本概念汇编语言和汇编程序的基本概念汇编语言和汇编程序的基本概念第四章第四章 汇编语言程序设计及其运行汇编语言程序设计及其运行4.24.2汇编语言源程序书写格

3、式汇编语言源程序书写格式汇编语言源程序书写格式汇编语言源程序书写格式 4.34.3 80868086汇编语言中的标识符汇编语言中的标识符汇编语言中的标识符汇编语言中的标识符、表达式和运算符表达式和运算符表达式和运算符表达式和运算符 4.64.6汇编语言程序设计汇编语言程序设计汇编语言程序设计汇编语言程序设计4.44.4伪指令语句伪指令语句伪指令语句伪指令语句 4.74.7汇编语言程序上机过程汇编语言程序上机过程汇编语言程序上机过程汇编语言程序上机过程 4.5DOS4.5DOS系统功能调用和系统功能调用和系统功能调用和系统功能调用和BIOSBIOS中断调用中断调用中断调用中断调用4.1汇编语言和

4、汇编程序的基本概念汇编语言和汇编程序的基本概念 4.1.1 汇编语言 汇编语言是一种面向CPU指令系统的程序设计语言,它采用指令系统的助记符来表示操作码和操作数,用符号地址表示操作数地址,因而易记、易读、易修改,给编程带来很大方便。用汇编语言编写的程序能够直接利用硬件系统的特性,直接对位、字节、字、寄存器、存储单元、I/O端口等进行处理,同时也能直接使用CPU指令系统和各种寻址方式编制出高质量的程序,这种程序不但占用内存空间少,而且执行速度快。4.1.2汇编程序汇编程序 用汇编语言编写的源程序在输入计算机后,需要将其翻译成目标程序,计算机才能执行相应指令,这个翻译过程称为汇编,完成汇编任务的程

5、序称为汇编程序。有 基 本 汇 编 ASM(Assembler)和 宏 汇 编MASM(MacroAssembler)两种。编缉程序 PROG.ASM 汇编程序 PROG.OBJ 连接程序 PROG.EXE源文件源文件ASM目的文件目的文件LINK可执行文件可执行文件目录目录4.2汇编语言源程序书写格式汇编语言源程序书写格式4.2.1 汇编语言源程序的分段结构 通常,一个汇编源程序应该由3 3个逻辑段组成个逻辑段组成,即数据段数据段、堆栈段堆栈段和代码段代码段。每个逻辑段以SEGMENT语句开始,以ENDS语句结束。整个源程序以END语句结束。NAME1 SEGMENT 语句 NAME1 EN

6、DS NAME2 SEGMENT 语句 NAME2 ENDS END 每个段以符号每个段以符号SEGMENT作为段的开始,以作为段的开始,以ENDS作为段的结束,两者都必须有名字,而作为段的结束,两者都必须有名字,而且名字必须相同。且名字必须相同。以下面具体例子说明一个完整汇编语言程序以下面具体例子说明一个完整汇编语言程序(2(2字相加字相加)的结构的结构 DATA SEGMENT ;DATA SEGMENT ;定义数据段定义数据段定义数据段定义数据段 DATA1 DW 0F865H ;DATA1 DW 0F865H ;被加数被加数被加数被加数 DATA2 DW 360CH ;DATA2 DW

7、 360CH ;加数加数加数加数 DATA ENDS ;DATA ENDS ;数据段结束数据段结束数据段结束数据段结束;EDATA SEGMENT ;EDATA SEGMENT ;定义附加段定义附加段定义附加段定义附加段 SUM DW 2 DUP(?);SUM DW 2 DUP(?);定义存和区定义存和区定义存和区定义存和区 EDATA ENDS ;EDATA ENDS ;附加段结束附加段结束附加段结束附加段结束;CODE SEGMENT ;CODE SEGMENT ;定义代码段定义代码段定义代码段定义代码段 ASSUME CS:CODE,DS:DATA,ES:EDATAASSUME CS:C

8、ODE,DS:DATA,ES:EDATA ;段分配伪指令段分配伪指令段分配伪指令段分配伪指令ASSUME,ASSUME,指明以上程序定义指明以上程序定义指明以上程序定义指明以上程序定义 ;的各段由哪个段寄存器寻址的各段由哪个段寄存器寻址的各段由哪个段寄存器寻址的各段由哪个段寄存器寻址.START:MOV AX,DATA START:MOV AX,DATA MOV DS,AX ;MOV DS,AX ;初始化初始化DS DS MOV AX,EDATA MOV AX,EDATA MOV ES,AX ;MOV ES,AX ;初始化初始化ES ES LEA SI,SUM ;LEA SI,SUM ;和的偏

9、移地址和的偏移地址 SI SI MOV AX,DATA1 MOV AX,DATA1 ADD AX,DATA2 ;ADD AX,DATA2 ;两数相加两数相加 MOV ES:SI,AX ;MOV ES:SI,AX ;和和附加段附加段SUMSUM HLT HLT CODE ENDSCODE ENDS END STARTEND START 4.2.2 4.2.2 汇编语言源程序的语句类型和语句格式汇编语言源程序的语句类型和语句格式1语句类型语句类型 8086宏汇编宏汇编MASM使用的语句可以分成使用的语句可以分成3种类型:种类型:指令语句:这类指令能够产生目标代码,是指令语句:这类指令能够产生目标代

10、码,是CPU可以执行的可以执行的能够完成特定功能的语句,主要由机器指令组成。在汇编时一条能够完成特定功能的语句,主要由机器指令组成。在汇编时一条指令语句被翻译成对应的机器码,对应着特定的操作。指令语句被翻译成对应的机器码,对应着特定的操作。指示性语句(伪指令语句):伪指令语句是为汇编程序和连指示性语句(伪指令语句):伪指令语句是为汇编程序和连接程序提供必要控制的管理性语句,它不产生目标代码,仅仅在接程序提供必要控制的管理性语句,它不产生目标代码,仅仅在汇编过程中告诉汇编程序应如何汇编,并完成相应的伪操作。汇编过程中告诉汇编程序应如何汇编,并完成相应的伪操作。宏指令语句:宏指令语句是由编程者按照

11、一定的规则来定义宏指令语句:宏指令语句是由编程者按照一定的规则来定义的一种较的一种较“宏大宏大”的指令,可包括多条指令或伪指令的指令,可包括多条指令或伪指令。2 2语句格式语句格式 一般情况下,汇编语言的语句可以由以下几部分组成:指令性语句:标号标号:操作符 操作数 ;注释 指示性语句:名字 操作符 操作数 ;注释 标号,它表示该指令所在存储单元的符号地址,后边加“:”。名字,通常表示变量名、段名、过程名,后边不加“:”。注意:标号和变量都具备3种属性段属性、偏移属性及类型属性。操作符可以是机器指令、伪指令和宏指令的助记符。操作数字段是操作符的操作对象。操作符在完成相应的操作时要求有一系列的操

12、作数。当有两个或两个以上的操作数时,各操作数之间用逗号隔开。注释字段是以“;”开头的说明部分,可以用英文或者中文书写。注释字段是语句的非执行部分。例如:START:MOV AX,DATA ;指令性语句 DATA1 DB 11H,22H,33H ;指示性语句,定义字节数据,“DB”是伪操作目录目录 4.3 4.3 4.3 4.3 数据项数据项数据项数据项、表达式和运算符表达式和运算符表达式和运算符表达式和运算符4.3.1 4.3.1 数据项数据项 1.1.常量常量(Constant)(Constant)包括包括:数字常量和字符串常量。数字常量和字符串常量。数字常量数字常量:十进制:如:十进制:如

13、:13D 13D 或或1313 二进制二进制:10101110B:10101110B 十十六六进进制制:81H,0F685H(:81H,0F685H(以以字字母母A AF F开开始始的的十十六六进进制制数数 ,前前面面加加“0 0”)字符串常量字符串常量:用单引号括起来的一个或多个用单引号括起来的一个或多个ASCIIASCII码码字符字符.如如ABAB。2.2.标号标号(label)(label)标号不能与助记符或伪指令重名标号不能与助记符或伪指令重名,也不允许数字打头也不允许数字打头.标号标号3 3属性属性:段、偏移量、类型段、偏移量、类型 段属性:标号所在段的段地址,程序引用一个标号,该标

14、号应该在代码段。段属性:标号所在段的段地址,程序引用一个标号,该标号应该在代码段。偏移量:该段起始地址到该标号地址之间的字节数,是偏移量:该段起始地址到该标号地址之间的字节数,是1616位无符号数。位无符号数。类型:近标号类型:近标号NEARNEAR,段内引用,地址为段内引用,地址为2 2字节;远标号字节;远标号FARFAR,其他段引用,其他段引用,地址为地址为4 4字节字节3.3.3.3.变量变量变量变量(variable)(variable)(variable)(variable)变量变量变量变量3 3 3 3属性属性属性属性:段、偏移量、类型段、偏移量、类型段、偏移量、类型段、偏移量、类

15、型 段属性:变量所在段的段地址段属性:变量所在段的段地址段属性:变量所在段的段地址段属性:变量所在段的段地址,变量在存储器的数据段和附变量在存储器的数据段和附变量在存储器的数据段和附变量在存储器的数据段和附 加段。加段。加段。加段。偏移量:该段起始地址到该变量地址之间的字节数。偏移量:该段起始地址到该变量地址之间的字节数。偏移量:该段起始地址到该变量地址之间的字节数。偏移量:该段起始地址到该变量地址之间的字节数。类型:类型:类型:类型:BYTEBYTEBYTEBYTE(字节),字节),字节),字节),WORDWORDWORDWORD(字),字),字),字),DWORDDWORDDWORDDWO

16、RD(双字)双字)双字)双字)等等等等注意:注意:注意:注意:变量类型要与指令要求相符,如:变量类型要与指令要求相符,如:变量类型要与指令要求相符,如:变量类型要与指令要求相符,如:MOV AXMOV AXMOV AXMOV AX,VAR1 VAR1 VAR1 VAR1 ;VAR1VAR1VAR1VAR1必须定义为字变量必须定义为字变量必须定义为字变量必须定义为字变量 MOV BLMOV BLMOV BLMOV BL,VAR2 VAR2 VAR2 VAR2 ;VAR2VAR2VAR2VAR2必须定义为字节变量必须定义为字节变量必须定义为字节变量必须定义为字节变量 变量名指向该变量数据区的首地址

17、,如:变量名指向该变量数据区的首地址,如:变量名指向该变量数据区的首地址,如:变量名指向该变量数据区的首地址,如:NUM DB 11HNUM DB 11HNUM DB 11HNUM DB 11H,22H22H22H22H,33H 33H 33H 33H MOV AL,NUM+2 ;MOV AL,NUM+2 ;MOV AL,NUM+2 ;MOV AL,NUM+2 ;把把把把33H33H33H33H AL AL AL AL 4.3.2表达式和运算符表达式和运算符在表达式中,运算符充当着重要的角色。8086宏汇编有:算术运算符、逻辑运算符、关系运算符、分析运算符和综合运算符共5种。下面分别讨论5种运

18、算符的作用:(1)算术运算符算术运算符:(加法)、(减法)、(加法)、(减法)、*(乘法)、(除法)、(乘法)、(除法)、MODMOD(求余)、求余)、SHLSHL(左移)、左移)、SHRSHR(右移)共右移)共7 7种种 【例例】数组定义如下数组定义如下:ARRAY DB 1,2,3,4,5,6,7,8ARRAY DB 1,2,3,4,5,6,7,8 TRY DB 20 TRY DB 20 MOV AX,30*5 ;MOV AX,30*5 ;两两整数相乘的积整数相乘的积AX AX MOV CX,(TRYMOV CX,(TRYARRAY);ARRAY);数组长度数组长度 CX CX 汇编时汇编

19、时,计算表达式计算表达式,形成指令如下形成指令如下:MOV AX,150 MOV AX,150 MOV CX,8 MOV CX,8表达式表达式呀呀!原来原来,表达式的计算表达式的计算,在汇编时就完成了在汇编时就完成了(2 2 2 2)逻辑运算符)逻辑运算符)逻辑运算符)逻辑运算符:逻辑运算符的作用是对其操作数进行逻辑运算符的作用是对其操作数进行按位操作。逻辑运算符有按位操作。逻辑运算符有ANDAND(与)、与)、OROR(或)、或)、XORXOR(异或)和异或)和NOTNOT(非)。非)。【例例】MOV AL,NOT 0FFH MOV AL,NOT 0FFH MOV CH,8CH XOR 73

20、H MOV CH,8CH XOR 73H 汇编时汇编时,计算表达式计算表达式,形成指令如下形成指令如下:MOV AL,0 MOV AL,0 MOV CH,0FFH MOV CH,0FFH逻辑运算符与逻辑运算符与8086指令助指令助记符记符AND、OR、XOR、NOT的符号完全相同,二的符号完全相同,二者会混淆吗?者会混淆吗?放心吧,不会的!放心吧,不会的!运算符是在汇编时进行的,运算符是在汇编时进行的,而指令助记符是在程序执行而指令助记符是在程序执行时进行的时进行的(3 3 3 3)关系运算符关系运算符关系运算符关系运算符:关系运算符的运算对象是两个性质相同的项目。关系运算符的运算对象是两个性

21、质相同的项目。关系运算符的运算对象是两个性质相同的项目。关系运算符的运算对象是两个性质相同的项目。其结果为:关系成立或不成立。有其结果为:关系成立或不成立。有其结果为:关系成立或不成立。有其结果为:关系成立或不成立。有EQEQEQEQ(相等)、相等)、相等)、相等)、NENENENE(不相等)、不相等)、不相等)、不相等)、LTLTLTLT(小于)、小于)、小于)、小于)、GTGTGTGT(大于)、大于)、大于)、大于)、LELELELE(小于或等于)、小于或等于)、小于或等于)、小于或等于)、GEGEGEGE(大于或等于)大于或等于)大于或等于)大于或等于)共共共共6 6 6 6种。种。种。

22、种。若结果为真,输出全若结果为真,输出全若结果为真,输出全若结果为真,输出全1 1 1 1(0ffH 0ffH 0ffH 0ffH 或或或或0ffffH0ffffH0ffffH0ffffH),),),),若结果为假,输出若结果为假,输出若结果为假,输出若结果为假,输出全全全全0 0 0 0。通常关系运算符通常关系运算符与与与与逻辑运算符组合起来使用逻辑运算符组合起来使用,见下面例子见下面例子:【例例例例】MOV AX,10H GT 16MOV AX,10H GT 16MOV AX,10H GT 16MOV AX,10H GT 16 MOV BL,6 EQ 110B MOV BL,6 EQ 11

23、0B MOV BL,6 EQ 110B MOV BL,6 EQ 110B MOV CX,(PORT LT 5)AND 100)OR(PORT GE 5)AND 200)MOV CX,(PORT LT 5)AND 100)OR(PORT GE 5)AND 200)MOV CX,(PORT LT 5)AND 100)OR(PORT GE 5)AND 200)MOV CX,(PORT LT 5)AND 100)OR(PORT GE 5)AND 200)汇编后汇编后汇编后汇编后,形成指令如下形成指令如下形成指令如下形成指令如下:MOV AX,0 MOV AX,0 MOV AX,0 MOV AX,0 M

24、OV BL,0FFH MOV BL,0FFH MOV BL,0FFH MOV BL,0FFH MOV CX,100 ;MOV CX,100 ;MOV CX,100 ;MOV CX,100 ;当当当当端口地址端口地址端口地址端口地址PORT PORT PORT PORT 5 5 5 5 时时时时 或或或或 MOV CX,200 ;MOV CX,200 ;MOV CX,200 ;MOV CX,200 ;当端口地址当端口地址当端口地址当端口地址PORT PORT PORT PORT 5 5 5 5 时时时时(4 4 4 4)分析运算符)分析运算符)分析运算符)分析运算符:分析运算符也称数值返回运算符

25、分析运算符也称数值返回运算符分析运算符也称数值返回运算符分析运算符也称数值返回运算符,是对存储器地是对存储器地是对存储器地是对存储器地址进行运算的。有址进行运算的。有址进行运算的。有址进行运算的。有5 5 5 5个:个:个:个:OFFSETOFFSETOFFSETOFFSET(求偏移量)、求偏移量)、求偏移量)、求偏移量)、SEGSEGSEGSEG(求段基值)、求段基值)、求段基值)、求段基值)、TYPETYPETYPETYPE(求变量类型)、求变量类型)、求变量类型)、求变量类型)、LENGTHLENGTHLENGTHLENGTH(求变量长度)和求变量长度)和求变量长度)和求变量长度)和SI

26、ZESIZESIZESIZE(求字节求字节求字节求字节数)。数)。数)。数)。OFFSETOFFSETOFFSETOFFSET 格式格式格式格式:OFFSET:OFFSET:OFFSET:OFFSET 变量或标号变量或标号变量或标号变量或标号【例例例例】MOV BX,OFFSET NUM MOV BX,OFFSET NUM MOV BX,OFFSET NUM MOV BX,OFFSET NUM;NUM;NUM;NUM;NUM是是是是数据段中一个变量数据段中一个变量数据段中一个变量数据段中一个变量,;汇编程序将汇编程序将汇编程序将汇编程序将变量变量变量变量NUMNUMNUMNUM偏移地址偏移地址

27、偏移地址偏移地址BX BX BX BX 相当于指令相当于指令相当于指令相当于指令 LEA BX,SUMLEA BX,SUMLEA BX,SUMLEA BX,SUM SEGSEGSEGSEG 格式格式格式格式:SEG :SEG :SEG :SEG 变量或标号变量或标号变量或标号变量或标号【例例例例】MOV AX,SEG VAR1 MOV AX,SEG VAR1 MOV AX,SEG VAR1 MOV AX,SEG VAR1 MOV DS,AX MOV DS,AX MOV DS,AX MOV DS,AX VAR1 VAR1 VAR1 VAR1是段名为是段名为是段名为是段名为DATADATADATA

28、DATA数据段中的一个变量数据段中的一个变量数据段中的一个变量数据段中的一个变量,假如假如假如假如DATADATADATADATA段段段段从从从从0500H0500H0500H0500H开始开始开始开始,该指令把该指令把该指令把该指令把0500H0500H0500H0500H作为立即数在连接时插入指令作为立即数在连接时插入指令作为立即数在连接时插入指令作为立即数在连接时插入指令,汇编成汇编成汇编成汇编成:MOV AX,0500H MOV AX,0500H MOV AX,0500H MOV AX,0500H MOV DS,AX MOV DS,AX MOV DS,AX MOV DS,AXn n T

29、YPETYPETYPETYPE 格式格式格式格式:TYPE TYPE TYPE TYPE 变量或标号变量或标号变量或标号变量或标号 TYPETYPETYPETYPE加在变量前加在变量前加在变量前加在变量前,返回变量的类型返回变量的类型返回变量的类型返回变量的类型属性属性属性属性,加在标号前返回标号的距离加在标号前返回标号的距离加在标号前返回标号的距离加在标号前返回标号的距离属性属性属性属性 【例例例例】A1 DW 0438H,30H A1 DW 0438H,30H A1 DW 0438H,30H A1 DW 0438H,30H A2 DD?A2 DD?A2 DD?A2 DD?L1:MOV AH

30、,TYPE A1 L1:MOV AH,TYPE A1 L1:MOV AH,TYPE A1 L1:MOV AH,TYPE A1 ADD AL,TYPE A2 ADD AL,TYPE A2 ADD AL,TYPE A2 ADD AL,TYPE A2 MOV BL,TYPE L1 MOV BL,TYPE L1 MOV BL,TYPE L1 MOV BL,TYPE L1 汇编时形成指令汇编时形成指令汇编时形成指令汇编时形成指令:MOV AH,2 MOV AH,2 MOV AH,2 MOV AH,2 ADD AL,4 ADD AL,4 ADD AL,4 ADD AL,4 MOV BL,0FFH MOV

31、BL,0FFH MOV BL,0FFH MOV BL,0FFH表:表:TYPE运算符返回值运算符返回值类型类型返回值返回值变量变量DBDWDDDQ1248标号标号NEARFAR-1(FFH)-2(FEH)n n LENGTHLENGTH格式格式格式格式:LENGTH :LENGTH 变量变量变量变量【例例例例】M1 DW 100 DUP(?)M1 DW 100 DUP(?)M1 DW 100 DUP(?)M1 DW 100 DUP(?)M2 DW 1,2,3 M2 DW 1,2,3 M2 DW 1,2,3 M2 DW 1,2,3 M3 DB A,B,C,D M3 DB A,B,C,D M3 D

32、B A,B,C,D M3 DB A,B,C,D MOV CX,LENGTH M1 MOV CX,LENGTH M1 MOV CX,LENGTH M1 MOV CX,LENGTH M1 MOV BL,LENGTH M2 MOV BL,LENGTH M2 MOV BL,LENGTH M2 MOV BL,LENGTH M2 MOV AL,LENGTH M3 MOV AL,LENGTH M3 MOV AL,LENGTH M3 MOV AL,LENGTH M3汇编时形成指令汇编时形成指令汇编时形成指令汇编时形成指令:MOV CX,100 ;:MOV CX,100 ;:MOV CX,100 ;:MOV C

33、X,100 ;此变量包含此变量包含此变量包含此变量包含100100100100个字单元个字单元个字单元个字单元 MOV BL,1MOV BL,1MOV BL,1MOV BL,1 MOV AL,1 MOV AL,1 MOV AL,1 MOV AL,1 当变量中使用当变量中使用当变量中使用当变量中使用DUPDUPDUPDUP时时时时,LENGTH,LENGTH,LENGTH,LENGTH返回此变量所包含的单元数返回此变量所包含的单元数返回此变量所包含的单元数返回此变量所包含的单元数,对其它变量返回对其它变量返回对其它变量返回对其它变量返回,1,1,1,1 SIZESIZE格式格式格式格式:SIZE

34、 :SIZE 变量变量变量变量 SIZE=LENGTH*TYPE,SIZE=LENGTH*TYPE,即返回变量包含的总字节数即返回变量包含的总字节数即返回变量包含的总字节数即返回变量包含的总字节数 【例例例例】入上例定义的入上例定义的入上例定义的入上例定义的 M1,M2,M3M1,M2,M3M1,M2,M3M1,M2,M3 MOV CX,SIZE M1 MOV CX,SIZE M1 MOV CX,SIZE M1 MOV CX,SIZE M1 汇编时形成指令汇编时形成指令汇编时形成指令汇编时形成指令:MOV CX,200:MOV CX,200:MOV CX,200:MOV CX,200 MOV

35、BL,SIZE M2 MOV BL,2 MOV BL,SIZE M2 MOV BL,2 MOV BL,SIZE M2 MOV BL,2 MOV BL,SIZE M2 MOV BL,2 MOV AL,SIZE M3 MOV AL,1 MOV AL,SIZE M3 MOV AL,1 MOV AL,SIZE M3 MOV AL,1 MOV AL,SIZE M3 MOV AL,1(5 5)综合运算符综合运算符综合运算符综合运算符:综合运算符又称为属性修改运算符。综合运算符又称为属性修改运算符。综合运算符又称为属性修改运算符。综合运算符又称为属性修改运算符。有有有有6 6 6 6个综个综个综个综合运算符

36、:段属性前缀、合运算符:段属性前缀、合运算符:段属性前缀、合运算符:段属性前缀、PTRPTRPTRPTR、THISTHISTHISTHIS、SHORTSHORTSHORTSHORT、HIGHHIGHHIGHHIGH和和和和LOWLOWLOWLOW在在在在程序运行过程中程序运行过程中程序运行过程中程序运行过程中,通过通过通过通过属性修改运算符属性修改运算符属性修改运算符属性修改运算符,改变量或标号的属性。改变量或标号的属性。改变量或标号的属性。改变量或标号的属性。段属性前缀段属性前缀段属性前缀段属性前缀:格式格式格式格式:段前缀段前缀段前缀段前缀:变量或地址表达式。如:变量或地址表达式。如:变量

37、或地址表达式。如:变量或地址表达式。如:ES:BXES:BXES:BXES:BXPTRPTRPTRPTR 格式格式格式格式:类型类型类型类型/距离距离距离距离 PTR PTR 变量或标号变量或标号变量或标号变量或标号 【例例例例】LO:MOV BYTE PTR BX,10H ;BX LO:MOV BYTE PTR BX,10H ;BX LO:MOV BYTE PTR BX,10H ;BX LO:MOV BYTE PTR BX,10H ;BX 10H 10H 10H 10H MOV WORD PTR BX,10H ;BX+1,BX MOV WORD PTR BX,10H ;BX+1,BX MOV

38、 WORD PTR BX,10H ;BX+1,BX MOV WORD PTR BX,10H ;BX+1,BX 00 10H 00 10H 00 10H 00 10H 也可用也可用也可用也可用PTRPTRPTRPTR改变距离属性:改变距离属性:改变距离属性:改变距离属性:JMP FAR PTR LO ;JMP FAR PTR LO ;JMP FAR PTR LO ;JMP FAR PTR LO ;可以把可以把可以把可以把JMPJMPJMPJMP安排在其它段中,实现段间转移。安排在其它段中,实现段间转移。安排在其它段中,实现段间转移。安排在其它段中,实现段间转移。THISTHISTHISTHIS

39、格式格式格式格式:变量变量变量变量/标号标号标号标号 EQU THIS EQU THIS 类型类型类型类型/距离距离距离距离 功能功能功能功能:把把把把THIS THIS 右边的类型右边的类型右边的类型右边的类型/距离属性赋给左边的变量距离属性赋给左边的变量距离属性赋给左边的变量距离属性赋给左边的变量/标号标号标号标号 ,该变量该变量该变量该变量/标号标号标号标号的段地址和偏移地址与下一存储单元地址相同。的段地址和偏移地址与下一存储单元地址相同。的段地址和偏移地址与下一存储单元地址相同。的段地址和偏移地址与下一存储单元地址相同。BYTE,WORD,NEAR,FAR【例例例例】FIRST EQU

40、 THIS BYTE;FIRST FIRST EQU THIS BYTE;FIRST FIRST EQU THIS BYTE;FIRST FIRST EQU THIS BYTE;FIRST与与与与TABLETABLETABLETABLE段地址、偏移地址相同段地址、偏移地址相同段地址、偏移地址相同段地址、偏移地址相同 TABLE DW 200 DUP(?)TABLE DW 200 DUP(?)TABLE DW 200 DUP(?)TABLE DW 200 DUP(?);区别:;区别:;区别:;区别:FIRSTFIRSTFIRSTFIRST是是是是字节变量字节变量字节变量字节变量,TABLETAB

41、LETABLETABLE是是是是字变量字变量字变量字变量 又如:又如:又如:又如:SP1 EQU THIS FAR ;SP1 EQU THIS FAR ;SP1 EQU THIS FAR ;SP1 EQU THIS FAR ;标号标号标号标号SP1SP1SP1SP1被赋予被赋予被赋予被赋予FARFARFARFAR属性,属性,属性,属性,MOV AX,100 MOV AX,100 MOV AX,100 MOV AX,100 ;该语句前有标号;该语句前有标号;该语句前有标号;该语句前有标号SP1,SP1,SP1,SP1,允许其它段允许其它段允许其它段允许其它段JMPJMPJMPJMP到到到到SP1

42、SP1SP1SP1地址地址地址地址 SHORTSHORTSHORTSHORT 格式格式格式格式:SHORT :SHORT 标号标号标号标号 SHORTSHORT指出转移指令转向的目标地址与本指令之间的距离在指出转移指令转向的目标地址与本指令之间的距离在指出转移指令转向的目标地址与本指令之间的距离在指出转移指令转向的目标地址与本指令之间的距离在 -128-128 +127 +127之间。之间。之间。之间。【例例例例】L1:JMP SHORT L2 L1:JMP SHORT L2 L1:JMP SHORT L2 L1:JMP SHORT L2 L2:MOV AX,0 L2:MOV AX,0 HIG

43、H HIGH HIGH HIGH 和和和和 LOWLOWLOWLOW 格式格式:HIGH/LOW HIGH/LOW HIGH/LOW HIGH/LOW 标号或变量标号或变量 HIGH HIGH HIGH HIGH 和和和和 LOW LOW LOW LOW 称为字节分离运算符称为字节分离运算符称为字节分离运算符称为字节分离运算符,对一个数或地址表达式对一个数或地址表达式对一个数或地址表达式对一个数或地址表达式,HIGH,HIGH,HIGH,HIGH从中分离从中分离从中分离从中分离 出高字节出高字节出高字节出高字节,LOW,LOW,LOW,LOW从中分离出低字节。从中分离出低字节。从中分离出低字节

44、。从中分离出低字节。【例例例例】K1 EQU 0ABCDH K1 EQU 0ABCDH K1 EQU 0ABCDH K1 EQU 0ABCDH K2 EQU 1234H K2 EQU 1234H K2 EQU 1234H K2 EQU 1234H 汇编时形成指令:汇编时形成指令:汇编时形成指令:汇编时形成指令:MOV AH,HIGH K1 MOV AH,0ABH MOV AH,HIGH K1 MOV AH,0ABH MOV AH,HIGH K1 MOV AH,0ABH MOV AH,HIGH K1 MOV AH,0ABH MOV BL,LOW K2 MOV BL,34H MOV BL,LOW

45、K2 MOV BL,34H MOV BL,LOW K2 MOV BL,34H MOV BL,LOW K2 MOV BL,34H 各各类类运运算算符符和和常常数数、寄寄存存器器名名、标标号号、变变量一起共同组成表达式。量一起共同组成表达式。在在计计算算具具有有多多个个运运算算符符的的表表达达式式值值时时,按按以下规则操作:以下规则操作:l l优先级高的先运算,优先级低的后运算。优先级高的先运算,优先级低的后运算。l l当当优优先先级级相相同同时时,按按表表达达式式中中从从左左到到右右的的顺顺序进行运算。序进行运算。l l使用使用括号可以提高表达式运算的优先级。括号可以提高表达式运算的优先级。运算

46、符运算符 优先级 1 (),LENGTH,SIZE 2 PTR,OFFSET,SEG,TYPE,THIS,CS:,DS:SS:,ES:3 HIGH,LOW 4 *,/,MOD,SHL,SHR 5 +,-6 EQ,NE,LT,LE,GT,GE 7 NOT 8 AND 9 OR,XOR 10 SHORT 表表.运算符优先级运算符优先级目录目录 4.4 4.4 伪指令语句伪指令语句伪指令语句伪指令语句 在汇编语言中,伪指令是给汇编程序的命令,由在汇编语言中,伪指令是给汇编程序的命令,由汇编程序(汇编程序(MASMMASM)进行处理。伪指令语句没有对)进行处理。伪指令语句没有对应的机器代码。应的机器代

47、码。例如定义变量、分配存储区、定义段、段分配及例如定义变量、分配存储区、定义段、段分配及定义过程等都采用伪指令表示。定义过程等都采用伪指令表示。4.4.1 4.4.1 数据定义伪指令数据定义伪指令数据定义伪指令数据定义伪指令 数据定义伪指令用来数据定义伪指令用来定义一个变量的类型定义一个变量的类型定义一个变量的类型定义一个变量的类型,并将所需要的数据放入指定的存储单元中,也可并将所需要的数据放入指定的存储单元中,也可以只给变量分配存储单元,而不赋予特定的值。以只给变量分配存储单元,而不赋予特定的值。1.1.1.1.数据定义伪指令数据定义伪指令数据定义伪指令数据定义伪指令格式格式格式格式1 1

48、1 1:变量名变量名 伪指令伪指令 操作数操作数 ,操作数,操作数 ;注释;注释 格式格式格式格式2 2 2 2:变量名变量名 伪指令伪指令 n n DUPDUP(操作数操作数 ,操作数,操作数);注释;注释 (n (n必须是正整数,表示括号中必须是正整数,表示括号中操作数的重复次数。操作数的重复次数。2.2.常用的常用的常用的常用的数据定义伪指令数据定义伪指令数据定义伪指令数据定义伪指令 定义定义字节字节变量伪指令变量伪指令DBDB 定义定义字字变量伪指令变量伪指令DWDW 定义定义双字双字变量伪指令变量伪指令DDDD 定义定义四字四字变量伪指令变量伪指令DQDQ 定义十字节变量伪指令定义十

49、字节变量伪指令DTDT【例例例例1 1】操作数是常数或表达式操作数是常数或表达式操作数是常数或表达式操作数是常数或表达式DA1DB10H,52H;DA1DB10H,52H;变量变量变量变量DA1DA1装入装入装入装入10H,52H10H,52HDA2DW1122H,34H;DA2DW1122H,34H;变量变量变量变量DA2DA2装入装入装入装入 22H,11H,34H,00H22H,11H,34H,00HDA3DD5*20H,0FFEEH;DA3DD5*20H,0FFEEH;变量变量变量变量DA3DA3装装装装A0H,00H,00H,00H,EEH,FFH,00H,00HA0H,00H,00

50、H,00H,EEH,FFH,00H,00H【例例例例2 2】操作数是字符串操作数是字符串操作数是字符串操作数是字符串HELLOHELLO的的的的ASCIIASCII码码码码FIRSTDBHELLO;FIRSTFIRSTDBHELLO;FIRST开始的单元依次是开始的单元依次是开始的单元依次是开始的单元依次是:48H,45H,4CH,4CH,4FH:48H,45H,4CH,4CH,4FHSECONDDWOK;SECONDSECONDDWOK;SECOND开始的单元依次是开始的单元依次是开始的单元依次是开始的单元依次是:4BH,4FH:4BH,4FH 【例例例例3 3】用?定义不确定值的变量;用?

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

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁