计算机组成原理与汇编语言程序设计第5章课件

上传人:我*** 文档编号:144111519 上传时间:2020-09-06 格式:PPT 页数:86 大小:458.50KB
返回 下载 相关 举报
计算机组成原理与汇编语言程序设计第5章课件_第1页
第1页 / 共86页
计算机组成原理与汇编语言程序设计第5章课件_第2页
第2页 / 共86页
计算机组成原理与汇编语言程序设计第5章课件_第3页
第3页 / 共86页
计算机组成原理与汇编语言程序设计第5章课件_第4页
第4页 / 共86页
计算机组成原理与汇编语言程序设计第5章课件_第5页
第5页 / 共86页
点击查看更多>>
资源描述

《计算机组成原理与汇编语言程序设计第5章课件》由会员分享,可在线阅读,更多相关《计算机组成原理与汇编语言程序设计第5章课件(86页珍藏版)》请在金锄头文库上搜索。

1、2020/9/6,1,2020/9/6,2,第5章 汇编语言层,本章主要内容:,80 x86宏汇编语言的语句格式,80 x86宏汇编语言的语法规则,基本程序结构及程序设计方法,汇编语言程序的开发方法,2020/9/6,3,第1节 概述,1.汇编语言,一种面向机器的低级程序设计语言;,符号化的机器语言,汇编指令与机器指令一一对应。,2.汇编语言源程序,用汇编语言编制的程序;不能由计算机直接执行。,2020/9/6,4,3.汇编程序,应用汇编程序将汇编语言源程序翻译成目标代码(即机器语言程序)。,4.汇编语言的特点,高性能,对计算机的完全控制,有助于更好地使用高级语言编程,有助于了解计算机的结构,

2、2020/9/6,5,第2节 汇编语言语句格式,汇编语言源程序的基本组成单位是语句。,(2)伪指令语句,(1)指令语句(可执行语句),1. 语句的种类,表示计算机的某种具体操作,汇编时产生指令代码(即目标代码),在程序运行时实现。,指示汇编程序如何对源程序进行汇编,其功能在汇编时完成。除了所定义的数据项之外,其它项不产生目标代码。,(3)宏指令语句,在第4节中介绍,2020/9/6,6,2. 语句格式,(1)指令语句格式,(2)伪指令语句格式,2020/9/6,7,3. 标识符,标号和符号名统称为标识符,由若干字符构成,规则如下:, 字符个数 1 31;,第一个字符必须是字母或5个特殊字符之一

3、 (? 下划线 _ 点号 $);,从第二个字符开始,可以是字母 、数字和 特殊字符;, 不能与系统专用保留字相同。,2020/9/6,8,第3节 80 x86宏汇编语言数据、表达式和运算符,5.3.1 常数,纯数值数据、无属性、值不能改变,1. 数值常数,可用二进制、八进制、十进制、十六进制数表示,如11001010B、73Q、345D、4aEH、0AH,2. 字符常数,单引号或双引号扩起来的一个或多个字符,以ASCII码存储。,如A的ASCII码为41H,2020/9/6,9,5.3.2 变量,变量应先定义并预置初值,才能被引用。,1、变量定义,数据定义伪指令实现变量的定义,格式如下:,变量

4、名 数据定义伪指令 ,,可选,DB 定义字节 DW 定义字 DD 定义双字 DQ 定义8字节 DT 定义10字节,例: DATA1 DB 10H,2020/9/6,10,变量的3个属性,(1)段属性(SEG),表示变量存放在哪个逻辑段中,用变量所在段的段基值表示。,(2)偏移地址属性(OFFSET),表示变量在逻辑段中离段起始单元的距离,用字节数表示。,(3)类型属性(TYPE),表示单个变量占存储单元的字节数。,上述两个属性构成了变量的逻辑地址。,2020/9/6,11,变量的初值, 数值表达式,例:,DATA SEGMENTVA1 DB 10H DB 20H,30HVA2 DW 1234H

5、VA3 DD 12345678H DATA ENDS,2020/9/6,12, 字符串表达式,STRING1 DB STRING STRING2 DW ST, RI , NG STRING3 DD ST, RI , NG ,例:,存放字符的ASCII码,2020/9/6,13,“?” 表达式,只分配存储单元,不指定初值。,例: DB ?,?,?, 带DUP表达式,变量名 DUP(),VA1 DW 20H DUP(4),例:,: 04H 00H 04H : 00H :,存储器分配图,VA1,为连续存储单元重复预置一组数据,格式如下:,共40H 字节,2020/9/6,14,: 3 3 3 3 8

6、 : 3 3 3 3 8 :,DA2,内层DUP操作重复4次,共4字节,外层DUP操作重复10H次,共50H字节,存储器分配图,DUP操作符的嵌套使用,DA2 DB 10H DUP(4 DUP(3),8),2020/9/6,15,引用变量名,2、变量的使用,(1)在指令语句中引用变量名,变量名作为地址表达式的组成部分之一 。,那么几种含有变量名的地址表达式如下: 直接寻址: VAR、 VAR+08H 变址寻址:VAR SI、 VAR+5 DI 基址寻址:VAR BX、VAR+10H BP 基址变址寻址:VAR BXDI、VAR+06H BPSI,例如,设在某数据段中有如下的变量定义: VAR

7、DB 40H DUP(?),2020/9/6,16,(2)在数据定义语句中引用变量名,DW:引用变量名的偏移地址,在DW或DD数据定义语句的操作数字段上引用了变量名,那么在为DW或DD伪指令分配的存储单元中,将预置被引用变量名的地址部分(段基值和偏移地址)。,DD:引用变量的段基值和偏移地址,例如:NUM1 DB 10HDUP(?) NUM2 DW 10HDUP(?) ARRAY DB 10HDUP(ABCD ) ADR1 DW ARRAY ADR2 DD ARRAY,2020/9/6,17,5.3.3 标号,指令的符号地址,可作为转移类指令的目标地址。,LOP:INC SI JNZ LOP,

8、例如,有程序段如下:,1. 标号的属性,(1)段属性(SEG),表示指令在哪个逻辑段中,2020/9/6,18,(2)偏移地址属性(OFFSET),表示这条指令目标代码的首字节离段起始单元之间的字节数。,(3)类型属性(TYPE),表示指令的转移特性。,上述两个属性构成了指令的逻辑地址。,NEAR(近)段内转移,FAR(远) 段间转移,2. 标号类型的设置,(1)隐含方式,直接指定指令的标号,例如:NEXT: MOV AX,3000H,2020/9/6,19,(2)用LABEL伪指令设置标号类型,名字 LABEL 类型,格式如下:,标号 NEAR/FAR,变量名 BYTE/WORD/DWORD

9、,LABEL语句与指令语句配合使用,例:SUB1_FAR LABEL FAR SUB1: MOV AX,1234H,MOV语句有两个具有相同段和偏移地址属性的标号: SUB1_FAR和SUB1 ,但类型属性不同。,2020/9/6,20,LABEL语句与数据定义语句配合使用,例:DATA_BYTE LABEL BYTE DATA_WORD DW 20H DUP(567H),DATA_WORD和DATA_BYTE 具有相同的段和 偏移地址属性,但类型属性不同。,有语句如下:,MOV AX, DATA_WORD+4,MOV AL, DATA_BYTE+4,传送第3个字 (5、6字节),传送第5个字

10、节,2020/9/6,21,表达式,常用作指令语句或伪指令语句的操作数;,由常数、变量、标号通过运算符连接而成;,有数值表达式和地址表达式;,汇编时,经计算得到一个数值或地址。,5.3.4 表达式与运算符,运算符,算术运算符,逻辑运算符,关系运算符,数值返回运算符,属性运算符,2020/9/6,22,包括: +(加)、 (减)、(乘)、/(除)、MOD(模除)、SHL(左移)、SHR(右移),1、算术运算符,+、-、*、/ 运算的操作数和运算结果都是整数;,除法运算取商的整数,MOD运算取除法的余数;,减法运算可用于同一段内的两个变量;,例:,NUM=15*5,NUM=NUM / 8,NUM=

11、NUM MOD 5,NUM=NUM + 4,NUM=NUM SHR 2,2020/9/6,23,AND、OR、XOR、NOT,2、逻辑运算符,只用于数值表达式;按位进行逻辑操作;,在汇编过程中完成运算;,通常出现在源操作数中。,MOV AL ,NOT 0F0H MOV BL ,55H OR 0F0H AND BH ,55H AND 0F0H XOR CX ,55H XOR 50H,例:,3、关系运算符,EQ(相等)、NE(不等)、LT(小于)、LE(小于等于)、GT(大于)、GE(大于等于),2020/9/6,24,DA1 DB 3 LT 8 DA2 DB 10 NE 0AH MOV AL,1

12、0 EQ 0AH MOV BX,DA2 GE DA1,格式: ,比较两表达式的值,两表达式的性质相同;,数值按无符号数比较,地址表达式比较偏移量;,关系成立,结果为全1;关系不成立,结果为0。,例:,4、数值返回运算符,SEG、OFFSET、TYPE、SIZE、LENGTH,2020/9/6,25,格式: ,存储器操作数,(1)SEG运算符,返回段基值,变量名,标号,(2)OFFSET运算符,返回偏移地址,(3)TYPE运算符,返回类型属性对应的数值,2020/9/6,26,(4)LENGTH运算符,若变量用DUP定义,返回外层DUP的重复次数; 若变量没用DUP定义,则返回结果总是1。,只用

13、于变量,(5)SIZE运算符,只用于变量,是TYPE和LENGTH两个运算结果的乘积。,ORG 20H VAR1 DB 10,15,20 VAR2 DW 0FFFFH,100H VAR3 DW 10H DUP(1,2,DUP(4),例:,MOVAX,SEG VAR1,MOVSI, OFFSET VAR2,MOVBL,TYPE VAR2,MOVCL,LENGTH VAR3,MOVCH,SIZE VAR3,2020/9/6,27,为已分配的存储单元临时设定类型属性,5、属性修改运算符PTR,格式: 类型 PTR ,例:,DA_BYTE DB 20H DUP(0) DA_WORD DW 30H DU

14、P(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 SUB1,2020/9/6,28,6、运算符的优先级,规则:先高优先级,后低优先级; 若有多个同优先级的运算符,则从左到右; 圆括号可改变运算顺序。,2020/9/6,29,第4节 80 x86宏汇编语言伪指令,5.4.1 符号定义语句,格式: 符号 EQU ,功能: 将表达式的值赋给符号,1、等值语句EQU,常数/数值表达式,地址表达式,变量/标号/指令助记符,例:,COUN

15、T EQU 5 ADR1 EQU DS:BP+14 L1 EQU SUBSTART,EQU伪指令不分配存储单元;,在同一源程序中,同一符号不能用EQU伪指令重新定义;,2020/9/6,30,2、等号语句 =,格式: 符号 = 表达式,功能与EQU语句相同;,区别在于等号语句可重新定义符号。,5.4.2 处理器选择伪指令,用于确定选择使用哪种指令系统,缺省时为 8086/8088指令系统和8087协处理器指令集。,.8086 .286 .286P,.486 .486P,通常放在源程序的开头位置。,其中,“P”表示保护模式,.386 .386P,.586 .586P,2020/9/6,31,5.

16、4.3 段结构伪指令,1、段定义伪指令SEGMENT/ENDS,格式:,功能:指定逻辑段的名字和范围、段的起始边界、 段与段之间的连接关系等。,(1)段名,必选,开始与结尾的段名一致,(2)定位类型,可选,指定装入时的起始边界要求,4种:PAGE(页)、PARA(节)、 WORD(字)、 BYTE(字节),2020/9/6,32,(3)组合类型,可选,指定段与段之间的连接方式,6种:NONE(隐含)、PUBLIC、COMMON、 STACK、MEMORY、AT,(4)使用类型,可选,指定386以上CPU的段模式,2种:USE16 段基值和偏移地址都是16位 USE32 段基值16位,偏移地址32位,(5)类别名,可选,单引号扩起来,2、段寻址伪指令 ASSUME,格式:,ASSUME

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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