汇编语言层[页]课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《汇编语言层[页]课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 课件
- 资源描述:
-
1、1第第5 5章章 汇编语言层汇编语言层第第3章微体系结构层为指令系统层提供了一个解释器,章微体系结构层为指令系统层提供了一个解释器,使指令系统的功能得以实现。使指令系统的功能得以实现。直接用机器指令代码编程非常困难直接用机器指令代码编程非常困难,而让微体系结,而让微体系结构层直接执行高级语言构层直接执行高级语言会导致硬件复杂、无通用性会导致硬件复杂、无通用性。人们为人们为所有的计算机都设计了一个汇编语言层所有的计算机都设计了一个汇编语言层,它,它位于指令系统层、操作系统层与面向问题语言层之位于指令系统层、操作系统层与面向问题语言层之间。从这一层看去,每一种计算机都有一套自己的间。从这一层看去,
2、每一种计算机都有一套自己的汇编语言和解释它的汇编器,以及相应的程序设计汇编语言和解释它的汇编器,以及相应的程序设计及开发方法。及开发方法。2本章主要内容:本章主要内容:5.2 80 x865.2 80 x86宏汇编语言的语句格式宏汇编语言的语句格式5.3 80 x865.3 80 x86宏汇编语言数据、表达式和运算符宏汇编语言数据、表达式和运算符5.6 5.6 汇编语言程序设计基本技术汇编语言程序设计基本技术5.1 5.1 概述概述5.4 80 x865.4 80 x86宏汇编语言伪指令宏汇编语言伪指令5.5 5.5 宏指令宏指令35.1 5.1 概述概述1.1.汇编语言汇编语言一种一种面向机
3、器面向机器的的低级低级程序设计语言程序设计语言;符号化符号化的机器语言;的机器语言;2.2.汇编语言源程序汇编语言源程序 用汇编语言编制的程序用汇编语言编制的程序;计算机不能直接执行。计算机不能直接执行。汇编指令与机器指令一一对应。汇编指令与机器指令一一对应。4 汇编语言与具体计算机硬件系统密切相关,通常是以某一汇编语言与具体计算机硬件系统密切相关,通常是以某一系列计算机为背景进行汇编语言程序设计。系列计算机为背景进行汇编语言程序设计。本章所讨论的汇编语言级程序设计是以本章所讨论的汇编语言级程序设计是以80 x86 CPU为硬件背为硬件背景,以景,以MASM 5.0MASM 6.0为为“汇编汇
4、编”环境。环境。例例:完成完成S (A+B)(C-D)运算的汇编语言程序如下:)运算的汇编语言程序如下:;设置数据段;设置数据段DATA SEGMENTADB 23H;数据数据 ABDB 14H;数据数据 BCDB 43H;数据数据 CDDB 3DH;数据数据 DSDW 0;存放结果单元存放结果单元DATAENDS5;设置堆栈段设置堆栈段STACK1SEGMENT PARA STACKDW 20H DUP(0)STACK1ENDS;设置代码段设置代码段CODESEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START:MOV AX,DATA;预置段寄存器预置段寄存
5、器 DSMOV DS,AXMOV BL,A;取数据取数据 AADD BL,B;计算计算BL(A+B)MOV AL,C;取数据取数据 CSUB AL,D;计算计算AL(C-D)MUL BL;完成乘法运算完成乘法运算AX (A+B)*(C-D)MOV S,AX;存放运算结果存放运算结果HLTCODEENDSEND START63.3.汇编程序汇编程序(Assembler)汇编程序(汇编器)汇编程序(汇编器)将将汇编语言源汇编语言源程序程序翻译成翻译成目标代码目标代码(即机器语言(即机器语言程序)程序)后才能直接由计算机执行后才能直接由计算机执行。上上例例汇编语言源程序经过汇编后得到的目汇编语言源程
6、序经过汇编后得到的目标代码(即机器语言程序)如标代码(即机器语言程序)如右右图所示。图所示。7汇编语言源程序中除有大量汇编指令语汇编语言源程序中除有大量汇编指令语句外,还有许多用于句外,还有许多用于定义数据、分配内定义数据、分配内存空间、构造源程序框架存空间、构造源程序框架等功能的伪指等功能的伪指令语句。令语句。从右图可以看出:从右图可以看出:汇编语言源程序中汇编语言源程序中一条指令语句对应一一条指令语句对应一组目标代码组目标代码(即机器语言的一条指令)。(即机器语言的一条指令)。如:汇编指令语句如:汇编指令语句“MOV DS,AX”对对应目标代码是应目标代码是“8E D8”两个字节代码。两个
7、字节代码。84.4.汇编语言的特点汇编语言的特点高性能高性能有助于更好地使用高级语言编程有助于更好地使用高级语言编程有助于了解计算机的结构有助于了解计算机的结构95.2 80 x865.2 80 x86宏汇编语言的语句格式宏汇编语言的语句格式 汇编语言源程序的汇编语言源程序的基本组成单位基本组成单位是是语句。语句。(2)伪指令语句)伪指令语句 (1)指令语句(可执行语句)指令语句(可执行语句)1.语句的种类语句的种类表示计算机的某种具体操作,汇编时产生指令代表示计算机的某种具体操作,汇编时产生指令代码(即目标代码),其功能在程序码(即目标代码),其功能在程序运行运行时实现。时实现。指示汇编程序
8、如何对源程序进行汇编,其功能在指示汇编程序如何对源程序进行汇编,其功能在汇编汇编时完成。除了所定义的数据项之外,其它项时完成。除了所定义的数据项之外,其它项不产生目标代码不产生目标代码。(3)宏指令语句)宏指令语句在在5.5节中介绍节中介绍 102.语句格式语句格式标号标号指令助记符指令助记符操作数操作数注释注释:;,(1)指令语句格式指令语句格式例如,前例中二条指令语句例如,前例中二条指令语句START:MOV AX,DATA;预置段寄存器预置段寄存器 DSMOV DS,AX11(2)伪)伪指令语句格式指令语句格式符号名符号名伪指令符伪指令符操作数操作数注释注释;,例如,前例中一条伪指令语句
9、例如,前例中一条伪指令语句ADB 23H;数据数据 A123.标识符标识符 标号标号和和符号名符号名统称为统称为标识符标识符,由,由若干字符构成,规则如下:若干字符构成,规则如下:字符数字符数 1 31;第一个字符必须是第一个字符必须是字母或字母或5个特殊字符之一:个特殊字符之一:?下划线下划线 _ 点号点号$;从第二个字符开始,可以是字母从第二个字符开始,可以是字母、数字和、数字和 特殊字符;特殊字符;不能与系统专用保留字相同。不能与系统专用保留字相同。135.3 80 x865.3 80 x86宏汇编语言数据、宏汇编语言数据、表达式和运算符表达式和运算符5.3.1 常数常数纯数值数据、无属
10、性、值不能改变纯数值数据、无属性、值不能改变1.数值常数数值常数 可用二进制、八进制、十进制、十六进制数表示可用二进制、八进制、十进制、十六进制数表示如:如:11001010B11001010B、73Q73Q、345D345D、4aEH4aEH、0AH0AH2.字符常数字符常数 单引号或双引号扩起来的一个或多个字符,以单引号或双引号扩起来的一个或多个字符,以ASCII码码存储。存储。如:如:A A的的ASCIIASCII码为码为41H41H145.3.2 变量变量变量应先变量应先定义定义并并预置预置初值,才能被引用。初值,才能被引用。1、变量定义、变量定义数据定义伪指令数据定义伪指令实现变量的
11、定义,格式如下:实现变量的定义,格式如下:变量名变量名 数据定义伪指令数据定义伪指令 1,可选可选DB 定义字节定义字节DW 定义字定义字DD 定义双字定义双字DQ 定义定义8字节字节DT 定义定义10字节字节例:例:DATA1 DB 10H15变量的变量的3个属性个属性(1 1)段属性()段属性(SEGSEG)表示变量存放在哪个逻辑段中,用变量所在表示变量存放在哪个逻辑段中,用变量所在段的段基值表示。段的段基值表示。(2 2)偏移地址属性()偏移地址属性(OFFSETOFFSET)表示变量在逻辑段中离段起始单元的距离,表示变量在逻辑段中离段起始单元的距离,用字节数表示。用字节数表示。(3 3
12、)类型属性()类型属性(TYPETYPE)表示单个变量占存储单元的字节数。表示单个变量占存储单元的字节数。上述两个属性构成了变量的上述两个属性构成了变量的逻辑地址逻辑地址。数值表达式数值表达式16变量的初值变量的初值字字双双字字:10H 20H 30H 34H 12H 78H 56H 34H 12H :VA1VA2VA3存储器分配图存储器分配图00000HFFFFFH例:DATA SEGMENTVA1 DB 10H DB 20H,30HVA2 DW 1234HVA3 DD 12345678H DATA ENDS17 字符串表达式字符串表达式 STRING1 DB STRING STRING2
13、DW ST,RI,NG STRING3 DD ST,RI,NG 例:存放字符的存放字符的ASCII码码18“?”表达式表达式只分配存储单元,不指定初值。只分配存储单元,不指定初值。例:例:DB?,?,?带带DUP表达式表达式变量名变量名 DUP()VA1 DW 20H DUP(4)例:重复次数重复次数重复数据的内容重复数据的内容:04H 00H 04H :00H:存储器分配图存储器分配图VA1为连续存储单元重复预置一组数据,格式如下:为连续存储单元重复预置一组数据,格式如下:共共40H字节字节19:33338:33338:DA2内层内层DUP操作重操作重复复4次,共次,共4字节字节外层外层DU
14、P操作操作重复重复10H次,次,共共50H字节字节存储器分配图存储器分配图DUPDUP操作符的嵌套使用。例:操作符的嵌套使用。例:DA2 DB 10H DUP(4 DUP(3),8)20引用变量名引用变量名2、变量的使用、变量的使用(1)在)在指令语句指令语句中引用变量名中引用变量名变量名作为变量名作为地址表达式的组成部分地址表达式的组成部分之一之一。那么几种含有变量名的地址表达式如下:那么几种含有变量名的地址表达式如下:直接寻址:直接寻址:VAR、VAR+08H变址寻址:变址寻址:VAR SI、VAR+5 DI基址寻址:基址寻址:VAR BX、VAR+10H BP基址变址寻址:基址变址寻址:
15、VAR BXDI、VAR+06H BPSI例如,设在某数据段中有如下的变量定义:例如,设在某数据段中有如下的变量定义:VAR DB 40H DUP(?)21(2)在在数据定义语句数据定义语句中引用变量名中引用变量名DW:引用变量名的偏移地址:引用变量名的偏移地址在在DW或或DD数据定义语句的数据定义语句的操作数字段操作数字段上引用上引用了变量名,那么在为了变量名,那么在为DW或或DD伪指令分配的存伪指令分配的存储单元中,将预置被引用变量名的储单元中,将预置被引用变量名的地址部分地址部分(段基值和偏移地址)。(段基值和偏移地址)。DD:引用变量的段基值和偏移地址:引用变量的段基值和偏移地址例如:
16、例如:NUM1 DB 10H DUP(?)NUM2 DW 10H DUP(?)ARRAY DB 10H DUP(ABCD)ADR1 DW ARRAY ADR2 DD ARRAY225.3.3 标号标号指令的指令的符号地址符号地址,可作为转移类指令的可作为转移类指令的目标地址目标地址。LOP:INC SI JNZ LOP 例如,有程序段如下:例如,有程序段如下:231.标号的属性标号的属性(1 1)段属性()段属性(SEGSEG)表示指令在哪个逻辑段中表示指令在哪个逻辑段中(2 2)偏移地址属性()偏移地址属性(OFFSETOFFSET)表示这条指令目标代码的首字节离段起始表示这条指令目标代码的
17、首字节离段起始单元之间的字节数。单元之间的字节数。(3 3)类型属性()类型属性(TYPETYPE)表示指令的转移特性。表示指令的转移特性。上述两个属性构成了指令的上述两个属性构成了指令的逻辑地址。逻辑地址。NEARNEAR(近)段内转移(近)段内转移FARFAR(远)(远)段间转移段间转移242.2.标号类型的设置标号类型的设置(1 1)隐含方式)隐含方式直接指定指令的标号,直接指定指令的标号,该标号就隐含为该标号就隐含为NEAR属性属性例如:例如:NEXT:MOV AX,3000H标号标号NEXT的类型属性为的类型属性为NEAR。(2)用)用LABEL伪指令伪指令设置标号类型设置标号类型名
18、字名字 LABEL 类型类型格式如下:格式如下:标号标号 NEAR/FAR变量名变量名 BYTE/WORD/DWORD 25LABELLABEL语句与指令语句配合使用语句与指令语句配合使用例:例:SUB1_FAR LABEL FAR SUB1:MOV AX,1234HMOV语句有两个具有语句有两个具有相同段和偏移地址属性相同段和偏移地址属性的标号:的标号:SUB1_FAR和和SUB1,但,但类型属性类型属性不同。不同。26LABELLABEL语句与数据定义语句配合使用语句与数据定义语句配合使用例:例:DATA_BYTE LABEL BYTE DATA_WORD DW 20H DUP(567H)
19、DATA_WORD和和DATA_BYTE 具有具有相同的段和相同的段和偏移地址属性偏移地址属性,但,但类型属性不同类型属性不同。利用上例数据定义的语句如下:利用上例数据定义的语句如下:MOV AX,DATA_WORD+4;MOV AL,DATA_BYTE+4;传送第传送第3 3个字个字(5 5、6 6字节)字节)传送第传送第5 5个字节个字节27表达式表达式 常用作常用作指令语句指令语句或伪指令语句的或伪指令语句的操作数操作数;由常数、变量、标号通过由常数、变量、标号通过运算符连接运算符连接而成;而成;有有数值表达式数值表达式和和地址表达式地址表达式;汇编时汇编时,经计算得到一个,经计算得到一
20、个数值数值或或地址地址。5.3.4 表达式与运算符表达式与运算符运算符运算符算术运算符算术运算符逻辑运算符逻辑运算符关系运算符关系运算符数值返回运算符数值返回运算符属性运算符属性运算符 表达式的数据计算或操作类型的确定是在表达式的数据计算或操作类型的确定是在汇编源程汇编源程序过程中完成的序过程中完成的,不是在程序运行时获得的不是在程序运行时获得的。28包括:包括:+(加)、(加)、(减)、(减)、(乘)、(乘)、/(除)、(除)、MOD(模除)、(模除)、SHL(左移)、(左移)、SHR(右移)(右移)1 1、算术运算符算术运算符+、-、*、/运算的操作数和运算结果都是整数;运算的操作数和运算
21、结果都是整数;除法除法运算取商的整数,运算取商的整数,MOD运算取除法的余数;运算取除法的余数;减法减法运算可用于同一段内的两个变量;运算可用于同一段内的两个变量;例:NUM=15*5NUM=NUM/8NUM=NUM MOD 5NUM=NUM+4NUM=NUM SHR 2在在汇编过程中汇编过程中完成运算。完成运算。29 AND、OR、XOR、NOT 2 2、只用于只用于数值表达式数值表达式;按位按位进行逻辑操作;进行逻辑操作;在在汇编过程中汇编过程中完成运算;完成运算;通常出现在源操作数中。通常出现在源操作数中。MOV AL,NOT 0F0HMOV BL,55H OR 0F0HAND BH,5
22、5H AND 0F0HXOR CX,55H XOR 50H例:例:3 3、关系、关系 EQ(相等)、(相等)、NE(不等)、(不等)、LT(小于)、(小于)、LE(小于等于)、(小于等于)、GT(大于)、(大于)、GE(大于等于)(大于等于)30DA1 DB 3 LT 8DA2 DB 10 NE 0AHMOV AL,10 EQ 0AHMOV BX,DA2 GE DA1格式:格式:比较两表达式的值,两表达式的比较两表达式的值,两表达式的性质相同性质相同;数值数值按无符号数比较,按无符号数比较,地址表达式地址表达式比较偏移量;比较偏移量;关系成立关系成立,结果为全,结果为全1;关系不成立关系不成立
23、,结果为,结果为0。例:例:31格式:格式:存储器操作数存储器操作数(1)SEG运算符运算符 返回段基值返回段基值变量名变量名标号标号(2)OFFSET运算符运算符返回偏移地址返回偏移地址(3)TYPE运算符运算符返回类型属性对应的数值,返回类型属性对应的数值,如右表。如右表。类型属性运算结果变量BYTE1WORD2DWORD4标号NEAR-1FAR-24 4、数值返回、数值返回SEG、OFFSET、TYPE、SIZE、LENGTH32(4)LENGTH运算符运算符若变量用若变量用DUPDUP定义,返回定义,返回外层外层DUPDUP的重复次数;的重复次数;若变量没用若变量没用DUPDUP定义,
24、则定义,则返回结果总是返回结果总是1 1。只用于变量只用于变量(5)SIZE运算符运算符只用于变量只用于变量是是TYPE和和LENGTH两个运算结果的两个运算结果的乘积乘积。ORG 20H VAR1 DB 10,15,20 VAR2 DW 0FFFFH,100H VAR3 DW 10H DUP(1,2,DUP(4)例:例:MOV AX,SEG VAR1MOV SI,OFFSET VAR2MOV BL,TYPE VAR2MOV CL,LENGTH VAR3MOV CH,SIZE VAR333为已分配的存储单元为已分配的存储单元临时设定类型属性临时设定类型属性5 5、属性修改、属性修改格式格式:类
25、型类型 PTR 例:例:DA_BYTE DB 20H DUP(0)DA_WORD DW 30H DUP(0)MOV WORD PTR DA_BYTE 10,AX MOV BYTE PTR DA_WORD DI,BL INC BYTE PTR SI SUB WORD PTR BX,30H JMP FAR PTR SUB1346 6、规则规则:*先高优先级,后低优先级先高优先级,后低优先级;*若有多个若有多个同优先级同优先级的运算符,则的运算符,则从左到右从左到右;*圆括号圆括号可改变运算顺序。可改变运算顺序。355.4 80 x865.4 80 x86宏汇编语言伪指令宏汇编语言伪指令5.4.1
展开阅读全文