大学汇编课件第5章.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《大学汇编课件第5章.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大学 汇编 课件
- 资源描述:
-
1、第第5 5章章 汇编语言层汇编语言层本章主要内容:本章主要内容:8080 x86x86宏汇编语言的语句格式宏汇编语言的语句格式8080 x86x86宏汇编语言的语法规则宏汇编语言的语法规则基本程序结构及程序设计方法基本程序结构及程序设计方法汇编语言程序的开发方法汇编语言程序的开发方法5.1 5.1 概概 述述1.1.汇编语言汇编语言一种一种面向机器面向机器的的低级低级程序设计语言;程序设计语言;符号化符号化的机器语言,汇编指令与机器指令一的机器语言,汇编指令与机器指令一一对应。一对应。2.2.汇编语言源程序汇编语言源程序用汇编语言编制的程序用汇编语言编制的程序;不能由计算机直接;不能由计算机直
2、接执行。执行。3.3.汇编程序汇编程序应用应用汇编程序汇编程序将将汇编语言源程序汇编语言源程序翻译成翻译成目标目标代码代码(即机器语言程序)。(即机器语言程序)。4.4.汇编语言的特点汇编语言的特点高性能高性能对对计算机的完全控制计算机的完全控制有助于更好地使用高级语言编程有助于更好地使用高级语言编程有助于了解计算机的结构有助于了解计算机的结构5.2 5.2 汇编语言语句格式汇编语言语句格式 汇编语言源程序的汇编语言源程序的基本组成单位基本组成单位是是语句。语句。(2)伪指令语句)伪指令语句 (1)指令语句(可执行语句)指令语句(可执行语句)1.语句的种类语句的种类表示计算机的某种具体操作,汇
3、编时产生指令代码表示计算机的某种具体操作,汇编时产生指令代码(即目标代码),在程序(即目标代码),在程序运行运行时实现。时实现。指示汇编程序如何对源程序进行汇编,其功能在指示汇编程序如何对源程序进行汇编,其功能在汇编汇编时完成。除了所定义的数据项之外,其它项时完成。除了所定义的数据项之外,其它项不产生目不产生目标代码标代码。(3)宏指令语句)宏指令语句在在5.5中介绍中介绍 2.语句格式语句格式标号标号指令助记指令助记符符操作数操作数注释注释:;,(1)指令语句格式指令语句格式(2)伪)伪指令语句格式指令语句格式符号名符号名伪指令符伪指令符操作数操作数注释注释;,3.标识符标识符标号标号和和符
4、号名符号名统称为标识符,由若干字符构成,规统称为标识符,由若干字符构成,规则如下:则如下:字符个数字符个数 1 31;第一个字符必须是字母或第一个字符必须是字母或3个特殊字符之一个特殊字符之一 (?(?下划线下划线 _ ););从第二个字符开始,可以是字母从第二个字符开始,可以是字母、数字和、数字和 特殊字符;特殊字符;不能与系统专用保留字相同。不能与系统专用保留字相同。5.3 805.3 80 x86x86宏汇编语言数据、表达宏汇编语言数据、表达式和运算符式和运算符5.3.1 常数常数纯数值数据、无属性、值不能改变纯数值数据、无属性、值不能改变1.数值常数数值常数 可用二进制、八进制、十进制
5、、十六进制数表示可用二进制、八进制、十进制、十六进制数表示如如1100101011001010B B、73Q73Q、345D345D、4aEH4aEH、0AH0AH2.字符常数字符常数 单引号或双引号扩起来的一个或多个字符,以单引号或双引号扩起来的一个或多个字符,以ASCII码码存储。存储。如如AA的的ASCIIASCII码为码为4141H H5.3.2 变量变量变量应先变量应先定义定义并并预置预置初值,才能被引用。初值,才能被引用。1、变量定义、变量定义数据定义伪指令数据定义伪指令实现变量的定义,格式如下:实现变量的定义,格式如下:变量名变量名 数据定义伪指令数据定义伪指令 1,可选DB 定
6、义字节DW 定义字DD 定义双字DQ 定义8字节DT 定义10字节例:例:DATA1 DB 10H变量的变量的3个属性个属性(1)段属性()段属性(SEG)表示变量存放在哪个逻辑段中,用变量所在段的段基值表示。(2)偏移地址属性()偏移地址属性(OFFSET)表示变量在逻辑段中离段起始单元的距离,用字节数表示。(3)类型属性()类型属性(TYPE)表示单个变量占存储单元的字节数。上述两个属性构成了变量的逻辑地址。逻辑地址。DATA SEGMENTDA1 DB 12HDA2 DW 1234HDA3 DD 12345678HDATA ENDS变量的初值变量的初值 数值表达式数值表达式字字双双字字:
7、10H 20H 30H 34H 12H 78H 56H 34H 12H :VA1VA2VA3存储器分配图存储器分配图00000HFFFFFH例:DATA SEGMENTVA1 DB 10H DB 20H,30HVA2 DW 1234HVA3 DD 12345678H DATA ENDS 字符串表达式字符串表达式 STRING1 DB STRING STRING2 DW ST,RI,NG STRING3 DD ST,RI,NG 例:存放字符的存放字符的ASCII码码“?”表达式表达式只分配存储单元,不指定初值只分配存储单元,不指定初值。例:例:DB?,?,?带带DUP表达式表达式变量名变量名 D
8、UP()VA1 DW 20H DUP(4)例:重复次数重复次数重复数据的内容重复数据的内容为连续存储单元重复预置一组数据,格式如下:为连续存储单元重复预置一组数据,格式如下::04H 00H 04H :00H:存储器分配图存储器分配图VA1共共40H字节字节:33338:33338:DA2内层内层DUP操作重操作重复复4次,共次,共4字节字节外层外层DUP操作操作重复重复10H次,次,共共50H字节字节存储器分配图存储器分配图DUPDUP操作符的嵌套使用操作符的嵌套使用DA2 DB 10H DUP(4 DUP(3),8)引用变量名引用变量名2、变量的使用、变量的使用(1)在)在指令语句指令语句
9、中引用变量名中引用变量名变量名作为变量名作为地址表达式的组成部分地址表达式的组成部分之一之一。那么几种含有变量名的地址表达式如下:直接寻址:VAR、VAR+08H变址寻址:VAR SI、VAR+5 DI基址寻址:VAR BX、VAR+10H BP基址变址寻址:VAR BXDI、VAR+06H BPSI例如,设在某数据段中有如下的变量定义:VAR DB 40H DUP(?)(2)在在数据定义语句数据定义语句中引用变量名中引用变量名DW:引用变量名的偏移地址在DW或DD数据定义语句的操作数字段上引用了变量名,那么在为DW或DD伪指令分配的存储单元中,将预置被引用变量名的地址部分(段基值和偏移地址)
10、。DD:引用变量的段基值和偏移地址例如:NUM1 DB 10H DUP(?)NUM2 DW 10H DUP(?)ARRAY DB 10H DUP(ABCD)ADR1 DW ARRAY ADR2 DD ARRAY5.3.3 标号标号指令的指令的符号地址符号地址,可作为转移类指令的可作为转移类指令的目标地址目标地址。LOP:INC SI JNZ LOP 例如,有程序段如下:例如,有程序段如下:1.标号的属性标号的属性(1)段属性()段属性(SEG)表示指令在哪个逻辑段中表示指令在哪个逻辑段中(2)偏移地址属性()偏移地址属性(OFFSET)表示这条指令目标代码的首字节离段起始单元之间的表示这条指令
11、目标代码的首字节离段起始单元之间的字节数。字节数。(3)类型属性()类型属性(TYPE)表示指令的转移特性。表示指令的转移特性。上述两个属性构成了指令的逻辑地址。NEAR(近)段内转移FAR(远)段间转移2.标号类型的设置标号类型的设置(1)隐含方式)隐含方式直接指定指令的标号例如:例如:NEXT:MOV AX,3000HNEXT:MOV AX,3000H(2)用)用LABEL伪指令伪指令设置标号类型设置标号类型名字名字 LABEL 类型类型格式如下:格式如下:标号标号 NEAR/FAR变量名变量名 BYTE/WORD/DWORD LABELLABEL语句与指令语句配合使用语句与指令语句配合使
12、用例:SUB1_FAR LABEL FAR SUB1:MOV AX,1234HMOV语句有两个具有相同段和偏移地址属性的标号:语句有两个具有相同段和偏移地址属性的标号:SUB1_FAR和和SUB1,但类型属性不同。但类型属性不同。LABELLABEL语句与数据定义语句配合使用语句与数据定义语句配合使用例:DATA_BYTE LABEL BYTE DATA_WORD DW 20H DUP(567H)DATA_WORD和和DATA_BYTE 具有相同的段和具有相同的段和偏移地址属性,但类型属性不同偏移地址属性,但类型属性不同。有语句如下:MOV AX,DATA_WORD+4MOV AL,DATA_
13、BYTE+4传送第传送第3 3个字个字(5 5、6 6字节)字节)传送第传送第5 5个字节个字节表达式表达式 常用作指令语句或伪指令语句的常用作指令语句或伪指令语句的操作数操作数;由常数、变量、标号通过运算符连接而成;由常数、变量、标号通过运算符连接而成;有有数值表达式数值表达式和和地址表达式地址表达式;汇编时汇编时,经计算得到一个,经计算得到一个数值数值或或地址地址。5.3.4 表达式与运算符表达式与运算符运算符运算符算术运算符算术运算符逻辑运算符逻辑运算符关系运算符关系运算符数值返回运算符数值返回运算符属性运算符属性运算符包括:包括:+(加)、(加)、(减)、(乘)、/(除)、MOD(模除
14、)、SHL(左移)、SHR(右移)1 1、+、-、*、/运算的操作数和运算结果都是整数;运算的操作数和运算结果都是整数;除法除法运算取商的整数,运算取商的整数,MOD运算取除法的余数;运算取除法的余数;减法减法运算可用于同一段内的两个变量;运算可用于同一段内的两个变量;例:NUM=15*5NUM=NUM/8NUM=NUM MOD 5NUM=NUM+4NUM=NUM SHR 2 AND、OR、XOR、NOT 2 2、只用于数值表达式;按位进行逻辑操作;在汇编过程中完成运算;通常出现在源操作数中。MOV AL,NOT 0F0HMOV BL,55H OR 0F0HAND BH,55H AND 0F0
15、HXOR CX,55H XOR 50H例:3 3、关系、关系 EQ(相等)、NE(不等)、LT(小于)、LE(小于等于)、GT(大于)、GE(大于等于)DA1 DB 3 LT 8DA2 DB 10 NE 0AHMOV AL,10 EQ 0AHMOV BX,DA2 GE DA1格式:比较两表达式的值,两表达式的性质相同;数值按无符号数比较,地址表达式比较偏移量;关系成立,结果为全1;关系不成立,结果为0。例:4 4、数值返回SEG、OFFSET、TYPE、SIZE、LENGTH格式:存储器操作数(1)SEG运算符返回段基值返回段基值变量名变量名标号标号(2)OFFSET运算符返回偏移地址返回偏移
16、地址(3)TYPE运算符 返回类型属性对应的数值返回类型属性对应的数值类型属性运算结果变量BYTE1WORD2DWORD4标号NEAR-1FAR-2(4)LENGTH运算符若变量用若变量用DUPDUP定义,返回定义,返回外层外层DUPDUP的重复次数;的重复次数;若变量没用若变量没用DUPDUP定义,则定义,则返回结果总是返回结果总是1 1。只用于变量只用于变量(5)SIZE运算符只用于变量只用于变量是是TYPETYPE和和LENGTHLENGTH两个运算结果的两个运算结果的乘积乘积。ORG 20H VAR1 DB 10,15,20 VAR2 DW 0FFFFH,100H VAR3 DW 10
17、H DUP(1,2 DUP(4)例:MOV AX,SEG VAR1MOV SI,OFFSET VAR2MOV BL,TYPE VAR2MOV CL,LENGTH VAR3MOV CH,SIZE VAR3为已分配的存储单元为已分配的存储单元临时设定类型属性临时设定类型属性5、属性修改格式:类型 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 SUB
18、1例:例:DA3 DB 82H,76H,56H,0ADH,7FH MOV CX,WORD PTR DA3 AND CX,0FH MOV AL,DA3+3 SHL AL,CL上述程序段运行后,上述程序段运行后,AL中的内容是什么?中的内容是什么?(AL)=0B4H例:例:ORG 0202H DW1 DW 20H,30H MOV AL,BYTE PTR DW1+1 MOV AH,BYTE PTR DW1 MOV BX,OFFSET DW1 MOV CL,BYTE PTR DW1+2 MOV CH,TYPE DW1上述指令序列执行后,上述指令序列执行后,AX、BX、CX寄存器的内容寄存器的内容分别是
19、什么?分别是什么?(AX)=2000H (BX)=0202H (CX)=0230H6 6、规则规则:先高优先级,后低优先级先高优先级,后低优先级;若有多个若有多个同优先级同优先级的运算符,则的运算符,则从左到右从左到右;圆括号圆括号可改变运算顺序。可改变运算顺序。例:NUM1 DB (12 OR 6 AND 2)GE 0EH NUM2 DB (12 XOR 6 AND 2)LE 0EH上述两条语句汇编后,NUM1和NUM2两字节存储单元中的内容分别是什么?NUM1:0FFHNUM2:0FFH5.4 805.4 80 x86x86宏汇编语言伪指令宏汇编语言伪指令5.4.1 符号定义语句符号定义语
20、句格式:格式:符号符号 EQU 功能功能:将表达式的值赋给符号将表达式的值赋给符号1 1、等值语句、等值语句EQUEQU常数常数/数值表达式数值表达式地址表达式地址表达式变量变量/标号标号/指令助记符指令助记符例:COUNT EQU 5ADR1 EQU DS:BP+14L1 EQU SUBSTART EQU伪指令伪指令不分配存储单元;不分配存储单元;在同一源程序中,在同一源程序中,同一符号不能同一符号不能用用EQU伪指令伪指令重新定义;重新定义;例:DA1 EQU BYTE PTR DA2 DA2 DW 0ABCDH SHL DA1,1 SHR DA2,1上述两条指令执行后,DA2字存储单元中
21、的内容是什么?2 2、等号语句、等号语句 =格式:格式:符号符号=表达式表达式功能功能与与EQU语句相同;语句相同;区别区别在于等号语句在于等号语句可重新定义符号可重新定义符号。例:NUM=15*5NUM=NUM/8NUM=NUM MOD 5NUM=NUM+4NUM=NUM SHR 25.4.3 段结构伪指令段结构伪指令1 1、段定义伪指令、段定义伪指令SEGMENT/ENDSSEGMENT/ENDS段名 SEGMENT 定位类型 组合类型 使用类型 类别名段名 ENDS格式:格式:功能:功能:指定逻辑段的名字和范围、段的起始边界、指定逻辑段的名字和范围、段的起始边界、段与段之间的连接关系等。
22、段与段之间的连接关系等。(1)段名)段名必选,开始与结尾的段名一致必选,开始与结尾的段名一致(2)定位类型)定位类型可选,指定装入时的起始边界要求可选,指定装入时的起始边界要求4种:种:PAGE(页)、页)、PARA(节)、节)、WORD(字)、字)、BYTE(字节)字节)默认默认(3)组合类型)组合类型可选,指定段与段之间的连接方式可选,指定段与段之间的连接方式6种种:NONE(隐含)、隐含)、PUBLIC、COMMON、STACK、MEMORY、AT(4)使用类型)使用类型可选,指定可选,指定386386以上以上CPUCPU的段模式的段模式(5)类别名)类别名可选,单引号括起来可选,单引号
23、括起来2 2、段寻址伪指令、段寻址伪指令 ASSUMEASSUME格式:格式:ASSUME sr1:seg1,sr2:seg2,功能:功能:建立段名与段寄存器之间的联系建立段名与段寄存器之间的联系段寄存器名段寄存器名段名段名DS_DATA SEGMENTVAR1 DB 12HDS_DATA ENDSES_DATA SEGMENTVAR2 DB 34HES_DATA ENDSCODE SEGMENTVAR3 DB 56H ASSUME CS:CODE,DS:DS_DATA,ES:ES_DATASTART:INC VAR1INC VAR2INC VAR3CODEENDSEND START例:例:3
24、 3、段寄存器的装载、段寄存器的装载(1)DS 和和 ES 的装载的装载用数据传送指令用数据传送指令例:例:MOV AX,DATA_DS ;设置设置DSMOV DS,AXMOV AX,DATA_ES;设置;设置ESMOV ES,AX (2)SS 的装载的装载自动装载自动装载:定义堆栈段时,定义堆栈段时,组合类型置为组合类型置为STACK。STACK1SEGMENT PARA STACK DW 40H DUP(0)STACK1ENDS用执行指令的方法装载用执行指令的方法装载:与:与DS/ESDS/ES的装载方法类似的装载方法类似。(3)CS 的装载的装载使用使用结束伪指令结束伪指令ENDEND,
25、格式如下格式如下:END END 执行执行转移类指令转移类指令时,时,CPUCPU自动修改自动修改CSCS和和IPIP。例:STACK2 SEGMENT DW 30H DUP(0)TOP LABAL WORD STACK2 ENDS CODE SEGMENT MOV AX,STACK2 MOV SS,AX MOV SP,OFFSET TOP ;设置SP 5.4.6 定位和对准伪指令定位和对准伪指令1 1、位置计数器(、位置计数器($)2 2、定位伪指令、定位伪指令(ORG)ORG)记录正在汇编的数据或指令的目标代码在当前段内记录正在汇编的数据或指令的目标代码在当前段内的的偏移地址。偏移地址。$
展开阅读全文