微机原理与接口技术幻灯片7

上传人:F****n 文档编号:88152861 上传时间:2019-04-20 格式:PPT 页数:45 大小:204.50KB
返回 下载 相关 举报
微机原理与接口技术幻灯片7_第1页
第1页 / 共45页
微机原理与接口技术幻灯片7_第2页
第2页 / 共45页
微机原理与接口技术幻灯片7_第3页
第3页 / 共45页
微机原理与接口技术幻灯片7_第4页
第4页 / 共45页
微机原理与接口技术幻灯片7_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《微机原理与接口技术幻灯片7》由会员分享,可在线阅读,更多相关《微机原理与接口技术幻灯片7(45页珍藏版)》请在金锄头文库上搜索。

1、第3章 MASM伪指令系统,3.1.1汇编语句种类与格式,汇编语言源程序中可以使用3类语句,指令性语句,伪指令语句,宏指令语句,(1)、指令性语句,能够被CPU所执行的语句,一条指令性语句对应于一条机器指令,指令性语句的种类取决与CPU的指令系统,(2)、伪指令语句,用于控制汇编过程,为汇编器提供必要的辅助信息的语句,如定义变量、定义符号常量等,该类语句也称为指示性语句。,(2)、伪指令语句与指令性语句间的区别,伪指令:汇编后不产生任何机器代码 指令性语句:汇编后产生机器代码,(3)、宏指令语句,为多次重复使用的一段程序起一个名字,在程序其他地方使用这段程序时,使用名字替代该段程序。被名字替换

2、的这段程序就叫宏。,宏展开:将名字还原为程序的过程,宏指令:用名字代替一段程序,宏名形成的指令称为宏指令。,第3章 MASM伪指令系统,3.1.2汇编语言语句的格式,指令性语句的一般格式为:,标号: 指令助记符 操作数1,操作数2 ;注释,指示性语句的一般格式为:,名字 伪指令定义符 参数,参数 ;注释,(1)、标号、名字,标号与符号统称符号,符号是一个字符串,可以使用字母、数字、特殊符号,字母:az ,AZ 数字:09 特殊符号:? . _ $等,(2)、助记符、定义符,助记符:定义了该语句实现的操作 定义符:定义了该伪指令所要实现的操作,(3)、参数,用于说明操作的对象,参数的类型和数目随

3、指令或伪指令而变。 参数可以是:常数、寄存器数、存储器数,(3)、参数,常数:二进制常数,由0和1组成,以字母B结尾 八进制常数,由07组成,以字母Q结尾 十六进制常数,以09及AF组成,以字母F结尾 串常量,用引号引起来的字符串,其值为ASCII码,(3)、参数,算术运算符: + - * / MOD,参与运算的数为整数,结果也为整数 如:ADD AX,100*4 + 2 SUB CX,101 / 2,(3)、参数,逻辑运算符: NOT,AND,OR,XOR,SHR,SHL 例如: MOV AX,1 SHL 3 OR AL,3 AND 58Q,(3)、参数,关系运算符: EQ,NE,LT,LE

4、,GT,GE 例如: MOV AX,123 GT 3,(3)、参数,注释: 用于说明程序的作用,可有可无,如果有,以;号开头,3.2常用伪指令,常用伪指令有一下几类,符号定义伪指令,数据定义伪指令,标号,析值/属性操作符,段定义伪指令,3.2.1符号定义伪指令,1、等值语句 EQU 格式:变量名 EQU 表达式 作用:通知汇编器,EQU左边和右边是等同的, 使用时,用变量名替代表达式 示例: COUNT EQU 15 MOV AX,COUNT,3.2.1符号定义伪指令,1、等值语句 EQU 使用注意事项: (1)EQU 所定义的符号,仅仅是用于替代右边的字符,不占用存储空间,也不产生目标代码

5、(2)符号必须先定义后使用 (3)同一源程序中,EQU所定义的符号不能重新定义,3.2.1符号定义伪指令,1、等号伪指令 格式:变量名 = 表达式 作用:与EQU类似,但表达式只能是数值表达式,且允许重复定义 示例: COUNT = 15 MOV AX,COUNT,3.2.2数据定义与变量伪指令,1、数据定义伪指令 格式: 变量名 DB 初值表达式 变量名 DW 初值表达式 变量名 DD 初值表达式 变量名 DQ 初值表达式 变量名 DT 初值表达式,3.2.2数据定义与变量伪指令,1、数据定义伪指令 DB:变量占1个字节存储空间 DW:变量占1个字存储空间 DD:变量占2个字存储空间 DQ:

6、变量占4个字存储空间 DT:变量占5个字存储空间,3.2.2数据定义与变量伪指令,2、功能: 定义变量,并指导汇编器为变量分配指定的存储空间,并初始化为变量定义语句中的初值表达式。 示例: B0 DB 2 B1 DB 3,5,?,9 B2 DW 10H,2 DUP(1234H,?) B3 DD 1,2 B4 DB 0,2 DUP(?,1,2 DUP(7),3.2.2数据定义与变量伪指令,3、注意事项: (1)每个初值所占用的空间取决于伪指令 (2)如果不想初始化,可以用?号,表示分配空间,但初值不确定 (3)对于重复的初值,可以用DUP描述,3.2.2数据定义与变量伪指令,4、变量的访问: 变

7、量名代表初值表达式列表所对应的存储单元的首地址,变量的访问类似于数组,变量名为该数组的首地址。,3.2.2数据定义与变量伪指令,5、示例: DA2 DB 1,3,5 MOV AL,DA2 MOV AH,DA2 + 2 MOV BL,DA2 + 1,3.2.2数据定义与变量伪指令,6、变量的属性: 变量定义后,具有以下3个属性: (1)、段属性:变量所在段的段基址 (2)、偏移属性:该变量的段内偏移量 (3)、类型属性:该变量所占用的存储单元,3.2.3标号及其属性,1、标号的概念: 标号是一条指令的符号地址,它常用作转移指令或子程序调用指令的操作数。,3.2.3标号及其属性,2、标号的属性:

8、段属性:标号所在段的段基址 偏移属性:标号所指出的机器码的段内偏移量 类型属性:该标号的有效范围,有NEAR类型和 FAR类型,3.2.3标号及其属性,3、标号的定义: 在指令助记符前加上标号,并用冒号:分隔,3.2.3标号及其属性,4、示例: MOV CX,20 AGAIN:ADD AX,AX DEC CX JNZ AGAIN,3.2.4析值/属性操作符,1、析值操作符: 析值操作符也称地址回送操作符,作用是把变量或标号的地址取出 (1) 取偏移地址操作符OFFSET 格式 :OFFSET 变量或标号 示例:MOV SI,OFFSET BUF (2) 取段基址操作符 SEG 格式:SEG 变

9、量或标号 示例:MOV AX,SEG BUF,3.2.4析值/属性操作符,2、属性改变操作符: 格式: 类型 PTR 地址表达式 功能:将地址表达式所指的内存单元临时指定为PTR前面所给定的类型 允许的类型有:BYTE,WORD,DWORD,NEAR,FAR,3.2.4析值/属性操作符,2、属性改变操作符: 用法: (1)、说明存储单元的类型 MOV BYTE PTR SI,5 (2)、改变存储单元属性 A_BYTE DB 1,2,3,4 MOV AX, WORD PTR A_BYTE (3)、建立FAR标号 L_NEAR : MOV AX,0 L_FAR EQU FAR PTR L_NEAR

10、,3.2.5段定义伪指令,1、段定义伪指令: 格式: 段名 SEGMENT 定位类型 组合类型 类别 段名 ENDS,3.2.5段定义伪指令,1、段定义伪指令: 说明: (1)、段名的命名方法同符号的命名方法 (2)、关键字SEGMENT开始一个段的定义,ENDS结束 一个段的定义 (3)、SEGMENT与ENDS之间的内容为一个逻辑段 (4)、段定义的参数可以省略,一般情况都省略,3.2.5段定义伪指令,1、段定义伪指令: 示例: DATA SEGMENT A DB , B DB ABCD DATA ENDS,3.2.5段定义伪指令,2、地址计数器: 每个逻辑段都有一个地址计数器,用于指出该

11、段已经使用的存储单元数,地址计数器名字为:$,在程序中可以使用$读取当前地址计数器的值 3、地址计数器的修改伪指令ORG: 用于调整地址计数器的值。,3.2.5段定义伪指令,示例: WW1 SEGMENT A1 DB 3 A2 DW 6,7 COUNT EQU $ - A2 ORG $ + 10 A3 DD 8 ORG 200H A4 DQ ? WW1 ENDS,3.3、程序的段结构,一个简单的汇编语言源程序 DATA SEGMENT VAR DB 12H DATA ENDS STACK SEGMENT STACK DB 300H DUP(?) STACK ENDS CODE SEGMENT

12、ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX INC VAR MOV AH,4CH,INT 21H CODE ENDS END STRAT,3.3.1、源程序的分段结构,段是程序的基本构成单位,8086的汇编程序由若干段组成,一般的小程序由数据段、堆栈段、代码段3个段构成。 一个程序必须有代码段,其余段根据需要定义。,3.3.2、段假设伪指令,格式:ASSUME 段寄存器:段名,段寄存器:段名, 功能:设定段和段寄存器的联系,设定好以后访问该段存储单元时可以省略段寄存器。 说明:可以多次使用ASSUME伪指令,一条AS

13、SUME伪指令可以设定14段寄存器,3.3.3、段寄存器的装填,ASSUME指令仅仅告诉汇编器段寄存器与段之间的对应关系,但并没有初始化这些段寄存器,因此必须对段寄存器装入对应的段基址,3.3.3、段寄存器的装填,(1)、DS和ES的装填 MOV AX,DATA MOV DS,AX,3.3.3、段寄存器的装填,(1)、SS的装填 第一种方法:定义堆栈段时,指出组合类型为STACK,SS和SP的初始化由操作系统自动完成 第二种方法:雷同DS,ES的初始化 MOV AX,STACK MOV SS,AX MOV SP,300H,3.3.3、段寄存器的装填,(3)、CS的装填 CS和IP的装填由DOS自动完成,3.3.4、DOS的返回,用户程序执行完成后,CPU不会因此停止,而是继续取指令和执行指令,但内存中的数据为随机数,被CPU执行后会得到不可预知的结果。 因此用户程序执行完成后,必须返回DOS操作系统。 常用的方法时利用DOS功能调用 MOV AH,4CH INT 21H,

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

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

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