微机原理及应用第04章

上传人:我** 文档编号:117887653 上传时间:2019-12-11 格式:PPT 页数:123 大小:601KB
返回 下载 相关 举报
微机原理及应用第04章_第1页
第1页 / 共123页
微机原理及应用第04章_第2页
第2页 / 共123页
微机原理及应用第04章_第3页
第3页 / 共123页
微机原理及应用第04章_第4页
第4页 / 共123页
微机原理及应用第04章_第5页
第5页 / 共123页
点击查看更多>>
资源描述

《微机原理及应用第04章》由会员分享,可在线阅读,更多相关《微机原理及应用第04章(123页珍藏版)》请在金锄头文库上搜索。

1、复习 控制类指令 传送类指令 数据操作类指令 串操作类指令 第4章 汇编语言程序设计 本章主要内容: n汇编语言源程序的结构 n汇编语言语句格式 n伪指令 n功能调用 n汇编语言程序设计 4.1 4.1 汇编语言源程序汇编语言源程序 了解: n计算机的三种语言 n源程序的结构 n汇编语言语句格式 一、计算机设计语言一、计算机设计语言 机器语言 汇编语言 高级语言 面向机器 的语言 机器语言汇编语言高级语言 汇编程序汇编程序 n汇编语言源程序 用助记符编写 源程序的编译程序 汇编程序 汇编语言 源程序 机器语言 目标程序 汇编程序的功能 n汇编程序的主要功能是将由汇编语言(助记符)编写的 源程序

2、翻译成用机器语言(二进制代码)编写的目标程 序。下图可用以说明这个功能。 汇编程序的功能 n目标代码文件:其中的地址数据还是浮动的(相 对的),不能直接运行; n列表文件:包含程序的逻辑地址、代码程序及源 程序对照清单,附有引用符号表,可用DOS的 TYPE命令输出; n交叉索引文件:包含了符号定义行号和引用行号 ,不能用TYPE命令输出,需要执行CREF文件后 生成索引列表文件(REF)才能输出。 观察可得:汇编语言源程序作为汇编程序(MASM或 ASM)这个“翻译”的输入, 而这个“翻译”的输出是三 个文件: 二、汇编语言源程序结构二、汇编语言源程序结构 数据段名 SEGMENT 数据段名

3、 ENDS 附加段名 SEGMENT 附加段名 ENDS 堆栈段名 SEGMENT 堆栈段名 ENDS 代码段名 SEGMENT 代码段名 ENDS 三、汇编语言语句类型三、汇编语言语句类型 指令性语句 指示性语句 CPU执行的语句, 能够生成目标代码 CPU不执行,而由汇 编程序执行的语句, 不生成目标代码 四、汇编语言语句格式四、汇编语言语句格式 指令性语句: 标号: 前缀 助记符 操作数,操作数 ;注释 指令的符号地址, 标号后要有冒号 操作码注释前加分号 指示性语句格式: 名字 伪指令助记符 操作数 ,操作数, ;注释 变量的符号地址,其后不 加冒号 指示性语句中至少有一 个操作数 区

4、分标号和名字区分标号和名字 n标号后有冒号,在指令性语句前;名字后不 加冒号,在指示性语句前。 n名字由英文字母、数字及专用字符组成,最大 长度不能超过31个,且不能由数字打头,不能 用保留字(如寄存器名,指令助记符,伪指令) 。 操作码操作码 指令码 命令CPU要完成的操作 伪指令助记符 指示汇编程序要完成的操作 用来定义变量,分配存储单元 指示程序开始和结束等 注释注释 n用分号作为注释的开始 n用于说明程序或语句的功能,以便于阅读和理解 数据项及表达式数据项及表达式 寄存器 存储器单元 常量 变量或标号 表达式 操作数操作数 常量常量 n数字常量:没有任何属性的纯数值。在汇编期间 ,它的

5、值已能完全确定,且在程序运行中,它也 不会发生变化。 n字符串常量:用引号引起的字符或字符串 例:A,ABCD 汇编时被译成对应的ASCII 码41H41H,42H42H,43H43H, ,44H44H 常数的应用 在程序中,常数主要出现在: 1)指令语句源操作数中做立即数,它应与目的操作数的 位数相一致,可以是8位或16位的。 2)在指令语句中的基址加变址的寻址方式中作位移量。 3)在数据定义伪指令中。 例如: MOV AX,1234H MOV BX,SI+32H DB 12H ;定义一个字节数据 变 量 变量是代表存放在某些存储单元的数据,这 些数据在程序运行期间随时可以修改。为了 便于对

6、变量的访问,它常常以变量名的形式 出现程序中,它可以认为是存放在数据存储 单元的符号地址。 (1) 变量的定义与预置 (2) 数据定义伪指令 变量的定义与预置 定义变量就是给变量分配存储单元,且对这个存 储单元赋予一个符号名,即变量名,同时将这些 存储单元预置初值。 VAR-DATA SEGMENT DATA1 DB 12H DATA2 DB 34H DATA3 DW 9876H VAR-DATA ENDS 变量的属性 定义变量是用数据定义伪指令DB,DW, DD等。经过定义的变量,每个变量均有三 个属性: (1)段属性(SEG) (2)偏移量属性(OFFSET) (3)类属性(TYPE) 段

7、属性 n段属性(SEG):表示变量存放在哪一个逻辑段中 ,即变量所在段的段基值。 例如: VAR-DATA SEGMENT DATA1 DB 12H DATA2 DB 34H DATA3 DW 9876H VAR-DATA ENDS 三个变量都存放在VAR_DATA逻辑段中。当在指令 中要对这些变量进行存取操作时,事先要把它们所 在段的段基值存放在某一个段寄存器中。 偏移量属性 n偏移量属性(OFFSET):表示变量在逻辑段中离 段起始点的字节 数。 例如变量DATA1的偏移量为0,而DATA2的偏移量 为1,DATA3的偏移量为2。 n段属性和偏移量属性构成了变量的逻辑地址。 类属性 n类属

8、性(TYPE):表示变量占用存储单元的字节数。 n类属性是由数据定义伪指令DB,DW,DD来规定的。 变量DATA1,DATA2的类属性为字节;而DATA3的 类属性为字;如果用DD定义,类属性为双字。 标号 n标号是一条指令目标代码的符号地址,它常作为转 移指令(含子程序调用指令)的操作数。 n与变量相似,每个标号亦具有三个属性: (1)段属性:表示这条指令目标代码在哪个逻辑 段中。 (2)偏移量属性:表示这条指令目标代码的首字 节在段内离段起始点的字节数。 (3)距离属性:表示本标号可作为段内或段间的 转移特性。距离属性又分为NEAR(近)属性和 FAR(远)属性。 五、 表达式与运算符

9、n表达式由操作数和运算符组成,而运算符主要 由以下几种类型组成: 一、算术运算符 二、逻辑运算符 三、关系运算符 四、取值运算和属性运算符 五、其它运算符 算术运算符 n+、-、*、/:加减乘除运算符 nMOD:除法取余运算符 例如: MOV AL, 32 MOD 5 ;(AL)= 2 逻辑运算符 nAND:逻辑“与”操作符 nOR:逻辑“或”操作符 nXOR:“异或”操作符 nNOT:逻辑“非”操作符 例如: MOV AL, 24H AND 0FH;(AL)=04H 24H XOR 0FH = 2BH 关系运算符 n参与关系运算的必须是两个数值,关系运算是数值 型的。 n关系运算是逻辑判定式

10、,当为“真”时结果取 0FFFFH,当为“假”时结果取0。 EQ 等于 LE 小于等于 NE 不等于 GT 大于 LT 小于 GE 大于等于 例如: 5 LT 6 = 0FFFFH 取值运算符 OFFSET 取得其后变量或标号的偏移地址 SEG 取得其后变量或标号的段地址 TYPE 取变量的类型变量的类型 LENGTH 取所定义存储区的长度 SIZE 取所定义存储区的字节数 用于分析存储器操作数的属性 取值运算符 n取值运算符的格式: (1)SEG 求段基址 格式:SEG 符号名 (2)OFFSET 求偏移地址 格式:OFFSET 符号名 (3)TYPE 求符号名类型值 格式:TYPE 符号名

11、 类型1字节2字节4字节8字节10字节近程远程 类型值12481012 取值运算符 (4)SIZE 求为符号名分配的字节数 格式:SIZE符号名 (5)LENGTH 求为符号名分配的项数 格式:LENGTH 符号名 注意:SIZE和LENGTH要求为符号名定义的数据项必 须是用重复格式DUP()定义的。 取值运算符例取值运算符例 MOV AX,SEG DATA MOV DS,AX MOV BX,OFFSET DATA LEA BX,DATA 等价于 取值运算符例取值运算符例 n若BUFFER存储区是用如下伪指令定义: BUFFER DW 200 DUP(0) 则: TYPEBUFFER 等于2

12、 LENGTH BUFFER等于200 SIZE BUFFER等于400 注意:SIZE=TYPE*LENGTH 属性运算符属性运算符 属性运算符PTR 用于指定其后存储器操作数的类型 格式:(类型) PTR(符号名) 例1:MOV BYTE PTRBX,12H 例2:已知内存变量D1是字节属性,要把它 的两个字节内容送到AX中。 MOV AX, WORD PTR D1 其它运算符其它运算符 n方括号: 方括号中内容为操作数的偏移地址 n段重设符 段寄存器名: 用于修改默认的段基地址 n例: MOV AX,BX MOV AX,ES:BX 4.2 4.2 伪指令伪指令 掌握: n伪指令的格式及实

13、现的操作 n伪指令的应用 伪指令伪指令 n由汇编程序执行的“指令系统”。伪指令没有对 应的机器指令,它不是由8086/8088CPU来执行 ,而是由MASM-86识别,并完成相应的功能。 n用于定义变量、分配存储区、定义逻辑段、指 示程序开始和结束等 标号名伪指令操作数注释 , 伪指令语句格式 v这是一个任选字段。标号名 后面不能用冒号“:”,这是它 与指令语句的突出区别。不同 的伪指令,标号名可以是常量 名、变量名、过程名、结构名 、记录名等。它们可以作为伪 指令语句和指令语句的操作数 ,这时,标号名就表示一个常 量或存储器地址。 这是伪指令语句不可省略的主 要成分。伪指令种类很多,如定 义

14、数据伪指令DB,DW,DD;段定 义伪指令SEGMENT;定义过程 伪指令PROC等。它们是伪指令语 句要求汇编程序完成的具体操作 命令。 本字段是否需要,需要几 个,需要什么样的操作数 等都由伪指令字段中伪指 令来确定。操作数可以是 一个常数、字符串、常量 名、变量名、标号、一些 专用的符号等。 v这是一个任选字段 ,它必须以分号为 开始,它的作用与 指令语句的注释字 段相同。 伪指令语句格式 伪指令 nMASM-86识别的伪指令可分成以下几类: (1)符号定义伪指令 (8)定位伪指令 (2)内存数据定义伪指令 (9)列表伪指令 (3)段定义伪指令 (10)系统隐含进位制伪指令 (4)段寄存器说明伪指令 (11)连接伪指令 (5)子程序定义伪指令 (12)记录伪指令 (6)模块开始伪指令 (13)结构伪指令 (7)模块结束伪指令 (14)块注释伪指令 (15)宏命令伪指令 符号定义伪指令 n格式: (1)名字EQU表达式 (2)名字=表达式 n作用:把表达式的值赋给符号名。 n区别:在同一程序中,用EQU语句赋值的符号名不能 被重新赋值,但用“=”号赋值的符号名可以被重新 赋值。 “ ”号表示此项不能缺省,但该符号不 需要输入。 符号定义伪指令 n

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

当前位置:首页 > 高等教育 > 大学课件

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