微机原理汇编语言.ppt
《微机原理汇编语言.ppt》由会员分享,可在线阅读,更多相关《微机原理汇编语言.ppt(58页珍藏版)》请在三一办公上搜索。
1、本章主要教学内容 l 汇编语言和汇编程序的基本概念 l汇编语言源程序书写规则、语句格式及程序分段 l 伪指令语句的格式、功能及应用 l 汇编语言源程序的建立、汇编、连接、调试及运行,第5章 汇编语言的基本表达及其运行,5.1 汇编语言和汇编程序的基本概念 5.1.1 汇编语言 汇编语言是一种面向CPU指令系统的程序设计语言,它采用指令系统的助记符来表示操作码和操作数,用符号地址表示操作数地址。,5.1.2 汇编程序 用汇编语言编写的源程序在输入计算机后,需要将其翻译成目标程序,计算机才能执行相应指令,这个翻译过程称为汇编,完成汇编任务的程序称为汇编程序。有基本汇编ASM(Assembler)和
2、宏汇编MASM(MacroAssembler)两种。汇编程序以汇编语言源程序文件作为输入,并由它产生两种输出文件:目标程序文件和源程序列表文件。目标程序文件经连接定位后由计算机执行;源程序列表文件将列出源程序、目标程序的机器语言代码及符号表。,5.2 汇编语言源程序书写格式 5.2.1 汇编语言源程序的分段结构 汇编源程序一般由3个逻辑段组成,即数据段、堆栈段和代码段。每个逻辑段以SEGMENT语句开始,以ENDS语句结束。整个源程序以END语句结束。数据段用来在内存中建立一个适当容量的工作区,以存放常数、变量等操作数据。堆栈段用来在内存中建立一个适当的堆栈区,以便在中断、子程序调用时使用。代
3、码段包括了许多以符号表示的指令,其内容就是程序要执行的指令。,注:必须用ASSUME伪指令告诉汇编程序,哪一段和哪一个段寄存器相对应,即某一段地址应该放入哪一个段寄存器在DOS环境下,通常采用DOS的4CH号中断功能调用使汇编语言返回DOS。不需要再对CS和SS进行初始化,5.2.2 汇编语言源程序的语句类型和语句格式 1语句类型 8086宏汇编MASM使用的语句可以分成3种类型:指令语句:这类指令能够产生目标代码,是CPU可以执行的能够完成特定功能的语句,主要由机器指令组成。在汇编时一条指令语句被翻译成对应的机器码,对应着特定的操作。伪指令语句:伪指令语句是为汇编程序和连接程序提供一些必要控
4、制的管理性语句,它不产生目标代码,仅仅在汇编过程中告诉汇编程序应如何汇编,并完成相应的伪操作。例如:告诉汇编程序源程序 有几个段,段名,定义变量和定义过程,给变量分配存储单元,给符号赋值,给数字或表达式命名。宏指令语句:可包括多条指令或伪指令。在汇编时,按照宏指令的定义,在出现宏指令的地方将其展开还原。,2语句格式 一般情况下,汇编语言的语句可以由以下几部分组成:名字 操作符 操作数;注释1)名字是一个符号,它表示本条语句的符号地址。一般来说,名字可以是标号和变量,统称为标识符。名字的组成字母A-Z,a-z;数字0-9;专用字符?.-$注:数字不能为名字的第一个位置.只能出现在名字的第一个位置
5、 名字最长31个字符组成2)指令语句和伪指令语句中名字的区别指令语句的名字之后要用冒号,而伪指令语句名字后不用例:LAB1:MOV AX,2050H;指令语句,LAB1是名字,也是指令第一字节的符号地址 VAR1 DW 1200H;伪指令语句,VAR1是名字,也是符号地址,VAR1和VAR1+1存放00 12,指令语句中的名字一般采用标号 NEXT:MOV AX,1234H一个标号与一条指令的地址相联系,因此标号可以作为JMP和CALL指令的操作数JNZ NEXTCALL APAR伪指令语句中的名字可以是变量名、段名、过程名、符号名等 BUF DW 1234HCODE SEGMENTAPAR
6、PROC,3)标号和变量的属性标号和变量都具备3种属性:段属性、偏移属性及类型属性。段属性:该属性定义了标号和变量的段起始地址标号的段由CS指示变量的段通常由DS或ES指示偏移属性:表示标号和变量相距段起始地址的字节数,16位类型属性:标号是在本段内引用NEAR还是在其他段中引用FAR。变量有几个字节长度。由定义变量的伪指令DB、DW和 DD等决定。,2.操作符字段 操作符可以是机器指令、伪指令和宏指令的助记符。操作数字段是操作符的操作对象。当有两个及以上的操作数时,用逗号隔开。注释字段是以“;”开头的说明部分,可以用英文或者中文书写。注释字段是语句的非执行部分。,5.3 8086汇编语言中的
7、标识符、表达式和运算符 5.3.1 标识符 汇编语言每条语句的第一个字段是它的名字字段,名字可以是标号或变量,这两者又称为标识符。重点是要掌握其组成规则和它的3个属性。5.3.2 表达式和运算符 在表达式中,运算符充当着重要的角色。8086宏汇编有算术运算符、逻辑运算符、关系运算符、分析运算符和综合运算符共5种。下面分别讨论5种运算符的作用:,(1)算术运算符用于完成算术运算,有(加法)、(减法)、(乘法)、(除法)、MOD(求余)、SHL(左移)、SHR(右移)共7种运算。例如,将字数组B1的长度值(字数)存入AX寄存器,可以写作:B1 DW 11,22,33,44,55,66 LB1 DW
8、?MOV AX,(LB1B1)/2汇编后指令成为 MOV AX,6,(2)逻辑运算符的作用是对其操作数进行按位操作。逻辑运算符有AND(与)、OR(或)、XOR(异或)和NOT(非)。例如:PORT_VAL EQU 20H OUT AL,PORT_VAL OR 5 汇编后指令成为 OUT AL,25H,(3)关系运算符的运算对象是两个性质相同的项目。其结果为:关系成立或不成立。有EQ(相等)、NE(不相等)、LT(小于)、GT(大于)、LE(小于或等于)、GE(大于或等于)共6种。结果为真,表示为0FFFFH,否则为0.,(4)分析运算符是对存储器地址进行运算的。有5个:SEG(求段基值)、O
9、FFSET(求偏移量)、TYPE(求变量类型)、LENGTH(求变量长度)和SIZE(求字节数)。,(1)SEG操作符格式为:SEG 变量名或 标号名 回送变量或标号的段地址值。例如:若DATA1是从存储器06000H物理地址开始的一个数据段的段名,PADD是该段中的一个变量名。则 MOV BX,SEG PADD 相当于MOV BX,0600H,例2已知数据段DATA从存储器实际地址03000H开始。作如下定义后,用SEG运算符求变量所在的段基址(2)OFFSET操作符格式为:OFFSET 变量名或 标号名 回送变量或标号的偏移地址值。例如:MOV BX,OFFSET PADD 相当于LEA
10、BX,PADD其中PADD是变量或标号例3,(3)TYPE操作符格式为:TYPE 变量名 或 标号名存储器操作数类型TYPE返回值BYTE1WORD2DWORD4NEAR-1FAR-2TYPE运算符加在变量前面,返回的是这个变量所对应的TYPE返回值,如TYPE VAR1=1TYPE运算符加在结构前面,返回的是结构包含的字节数如STUDENT STRUC NAME DB WANG NUMBER DB?STUDENT ENDS则:TYPE STUDENT=5TYPE运算符加在标号前面,返回标号的属性是NEAR还是FAR,(4)LENGTH操作符格式为:LENGTH 变量名 LENGTH和SIZE
11、操作符只能和数据存储器地址操作数(BYTE、WORD或者DWORD)一起使用。LENGTH对于变量中使用DUP时,回送分配给该变量的单元数;其它情况则回送1。例如:MULTI_WORDS DW 50 DUP(20)WORDS1 DW 20,30,40,50 则 MOV CX,LENGTH MULTE_WORDS相当于MOV CX,50而MOV CX,LENGTH WORDS1相当于MOV CX,1,(5)SIZE操作符格式为:SIZE 变量名SIZE操作符回送分配给该变量的字节数相当于LENGTH值和TYPE值的乘积。例如:MOV CX,SIZE MULTI_WORD相当于MOV CX,100
12、 MOV CX,SIZE WORDS1相当于MOV CX,2,5)属性操作符属性操作符主要有PTR、段操作符、SHORT、THIS、HIGH、LOW六种。(1)PTR操作符格式为:类型 PTR 存储器地址表达式 PTR将它左边的类型指定给右边的表达式类型可以是BYTE WORD DWORD NEAR FAR,它本身并不实际分配存储器。VAR1DB 30H,40HVAR2DW2050HMOVAX,WORD PTR VAR1;将4030HAXMOV BL,BYTE PTR VAR2;将50HBL,有时汇编程序分不清所存入的数据是字节还是字,此时必须用PTR来说明属性。例如:MOV DX,20格式是
13、错误的,必须写成 MOV BYTE PTR DX,20或者MOV WORD PTR DX,20,(2)段操作符段操作符用来明确表示变量或地址表达式的段属性,取消了它们原来的默认组合。也称为段跨越前缀。例如:MOV DX,ES:BP+DI表示源操作数在ES段,不是与BP原来的默认的SS段。(3)SHORT操作符,用来指示JMP指令中转向地址的属性。如:JMP SHORT PROG1;短转移 NEXT:.NEXT与JMP指令距离不能大于127个字节,(4)THIS操作符格式为:THIS 类型或属性 THIS和PTR有共同之处,建立一个特殊类型的存储器地址操作数,而不实际为它分配新的存储单元。例如:
14、ARRAY1 EQU THIS BYTE ARRAY2 DW 30 DUP(?)此时,ARRAY1的段地址和偏移地址与ARRAY2相同,但类型不同,ARRAY1是字节类型,ARRAY2是字类型。另外也可以按如下方法使用:BEGINEQU THIS FAR START:MOV AX,0 此时,MOV指令有一个FAR属性的地址BEGIN,允许其它段的JMP指令直接跳转到BEGIN来,同时允许本段指令 JMP NEAR START或者JMP SHORT START转移到MOV指令处,(5)HIGH和LOW操作符 HIGH和LOW操作符是字节分离操作符,它接收一个数或地址表达式,HIGH取其高字节,L
15、OW取其低位字节。例如:MEMOFFADD EQU 0123H指令 MOV CL,HIGH MEMOFFADD 汇编成MOV CL,01H MOV BH,LOW MEMOFFADD 汇编成MOV BH,23H,5.4 伪指令语句 在汇编语言中,伪指令是给汇编程序的命令,在汇编过程中由汇编程序进行处理。例如定义数据、分配存储区、定义段及定义过程等都采用伪指令表示。5.4.1 数据定义伪指令 数据定义伪指令用来定义一个变量的类型,并将所需要的数据放入指定的存储单元中,也可以只给变量分配存储单元,而不赋予特定的值。,1.数据定义伪指令的一般格式为:变量名 伪指令 操作数,操作数;注释2.常用的数据定
16、义伪指令 定义字节变量伪指令DB 定义字变量伪指令DW 定义双字变量伪指令DD 定义四字变量伪指令DQ 定义十字节变量伪指令DT,例DATASEGMENT;定义数据段B1DB10H,30H;存入两个字节10h,30hB2DB2*3+5;存入表达式的值0BHS1DB good!;存入5个字符W1DW1000H,2030H;存入两个字W2DD12345678H;存入双字S2 DBAB;存入41H,42HS3DW AB;存入42H,41HDATA ENDS;数据段结束,除了常数、表达式和字符串外,问号也可以作为数据定义伪指令的操作数,此时仅给变量保留相应的存储单元,而不赋予变量某个确定的初值。格式为
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 汇编语言

链接地址:https://www.31ppt.com/p-5975759.html