汇编程序及试验

上传人:san****019 文档编号:70823381 上传时间:2019-01-18 格式:PPT 页数:98 大小:448.01KB
返回 下载 相关 举报
汇编程序及试验_第1页
第1页 / 共98页
汇编程序及试验_第2页
第2页 / 共98页
汇编程序及试验_第3页
第3页 / 共98页
汇编程序及试验_第4页
第4页 / 共98页
汇编程序及试验_第5页
第5页 / 共98页
点击查看更多>>
资源描述

《汇编程序及试验》由会员分享,可在线阅读,更多相关《汇编程序及试验(98页珍藏版)》请在金锄头文库上搜索。

1、第4章 汇编语言程序设计,白 云 飞 ,微型计算机原理与接口技术,本章主要内容:,汇编语言源程序的结构 汇编语言语句格式 伪指令 功能调用 汇编语言程序设计,微型计算机原理与接口技术,4.1 汇编语言源程序,了解: 计算机的三种语言 源程序的结构 汇编语言语句格式,微型计算机原理与接口技术,一、计算机设计语言,机器语言 汇编语言 高级语言,面向机器 的语言,机器语言,汇编语言,高级语言,微型计算机原理与接口技术,汇编程序,汇编语言源程序,用助记符编写,源程序的编译程序,汇编程序,汇编语言源程序,机器语言目标程序,微型计算机原理与接口技术,汇编程序的功能,汇编程序的主要功能是将由汇编语言(助记符

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

3、量或标号的偏移地址 SEG 取得其后变量或标号的段地址,TYPE 取变量的类型 LENGTH 取所定义存储区的长度 SIZE 取所定义存储区的字节数,用于分析存储器操作数的属性,微型计算机原理与接口技术,取值运算符,取值运算符的格式: (1)SEG 求段基址 格式:SEG 符号名 (2)OFFSET 求偏移地址 格式:OFFSET 符号名 (3)TYPE 求符号名类型值 格式:TYPE 符号名,微型计算机原理与接口技术,取值运算符,(4)SIZE 求为符号名分配的字节数 格式:SIZE符号名 (5)LENGTH 求为符号名分配的项数 格式:LENGTH 符号名 注意:SIZE和LENGTH要求

4、为符号名定义的数据项必须是用重复格式DUP()定义的。,微型计算机原理与接口技术,取值运算符例,MOV AX,SEG DATA MOV DS,AX MOV BX,OFFSET DATA LEA BX,DATA,等价于,微型计算机原理与接口技术,取值运算符例,若BUFFER存储区是用如下伪指令定义: BUFFER DW 200 DUP(0) 则: TYPE BUFFER 等于2 LENGTH BUFFER 等于200 SIZE BUFFER 等于400 注意:SIZE=TYPE*LENGTH,微型计算机原理与接口技术,属性运算符,属性运算符PTR 用于指定其后存储器操作数的类型 格式:(类型)

5、PTR(符号名) 例1:MOV BYTE PTRBX,12H 例2:已知内存变量D1是字节属性,要把它 的两个字节内容送到AX中。 MOV AX, WORD PTR D1,微型计算机原理与接口技术,其它运算符,方括号: 方括号中内容为操作数的偏移地址 段重设符 段寄存器名: 用于修改默认的段基地址 例: MOV AX,BX MOV AX,ES:BX,微型计算机原理与接口技术,4.2 伪指令,掌握: 伪指令的格式及实现的操作 伪指令的应用,微型计算机原理与接口技术,伪指令,由汇编程序执行的“指令系统”。伪指令没有对应的机器指令,它不是由8086/8088CPU来执行,而是由MASM-86识别,并

6、完成相应的功能。 用于定义变量、分配存储区、定义逻辑段、指示程序开始和结束等,微型计算机原理与接口技术,标号名,伪指令,操作数,注释,,,伪指令语句格式,这是一个任选字段。标号名后面不能用冒号“:”,这是它与指令语句的突出区别。不同的伪指令,标号名可以是常量名、变量名、过程名、结构名、记录名等。它们可以作为伪指令语句和指令语句的操作数,这时,标号名就表示一个常量或存储器地址。,这是伪指令语句不可省略的主要成分。伪指令种类很多,如定义数据伪指令DB,DW,DD;段定义伪指令SEGMENT;定义过程伪指令PROC等。它们是伪指令语句要求汇编程序完成的具体操作命令。,本字段是否需要,需要几个,需要什

7、么样的操作数等都由伪指令字段中伪指令来确定。操作数可以是一个常数、字符串、常量名、变量名、标号、一些专用的符号等。,这是一个任选字段,它必须以分号为开始,它的作用与指令语句的注释字段相同。,伪指令语句格式,微型计算机原理与接口技术,伪指令,MASM-86识别的伪指令可分成以下几类: (1)符号定义伪指令 (8)定位伪指令 (2)内存数据定义伪指令 (9)列表伪指令 (3)段定义伪指令 (10)系统隐含进位制伪指令 (4)段寄存器说明伪指令 (11)连接伪指令 (5)子程序定义伪指令 (12)记录伪指令 (6)模块开始伪指令 (13)结构伪指令 (7)模块结束伪指令 (14)块注释伪指令 (15

8、)宏命令伪指令,微型计算机原理与接口技术,符号定义伪指令,格式: (1)名字EQU表达式 (2)名字=表达式 作用:把表达式的值赋给符号名。 区别:在同一程序中,用EQU语句赋值的符号名不能被重新赋值,但用“=”号赋值的符号名可以被重新赋值。 “ ”号表示此项不能缺省,但该符号不需要输入。,微型计算机原理与接口技术,符号定义伪指令,例: CONSTANT EQU 100 VAR EQU 30H+99H,EQU说明的表达式不占用内存空间,微型计算机原理与接口技术,内存数据定义伪指令,用于定义数据区中变量的类型 此指令主要有以下五大类:,字节定义伪指令DB 定义的变量为字节型 字定义伪指令DW 定

9、义的变量为字类型 四字节定义伪指令DD 定义的变量为双字型 八字节定义伪指令DQ 定义的变量为4字型 十字节定义伪指令DT 定义的变量为10字节型,微型计算机原理与接口技术,字节定义伪指令,格式: 名字 DB表达式或数据项表 表达式值或项表中的每一项是一个字节数,它们从符号名地址开始按字节连续存放,直到表中数据项结束(地址递增方向)。方括号 表示该项可以缺省。,字定义伪指令,格式: 名字 DW 表达式或数据项 除表达式值或项表中的每一项是两个字节数之外,其它与DB伪指令相同。,微型计算机原理与接口技术,四字节定义伪指令,格式: 名字 DD表达式或数据项 表达式值或项表的每一项是四个字节数。,八

10、字节定义伪指令,格式: 名字 DQ 表达式或数据项表 表达式值或数据项表的每一项是八字节数,各项从小地址一端连续存放,允许浮点数形式,与DD伪指令相同。高四个字节填0。,微型计算机原理与接口技术,十字节定义伪指令,格式: 名字 DT表达式或数据项表 表达式值或数据项表的每一项是10个字节数,允许浮点数形式,与DQ伪指令相同,若项表中的数据项是十进制整数书写的,汇编程序按组合的BCD码格式存放,最低字节在高地址一端存放,数据的最高字节的最高位是符号位,“0”表示正,“1”表示负。,微型计算机原理与接口技术,数据定义伪指令,该伪指令主要为数据项分配存储单元并预初值。 该伪指令构成的语句格式是: D

11、B 变量名+ DW +表达式1,表达式2, DD 其中表达式1,表达式2,是给变量赋予的初值。表达式可以有如下几种情况: (1)数值表达式 (2)?表达式 (3)字符串表达式 (4)带DUP表达式,微型计算机原理与接口技术,数值表达式,例如: DA_BYTE DB 50H, 50 DA_WORD DW 0A3F1H, 4981H 变量DA_BYTE的内容为50H,它的下一个字节为32H。DA_WORD字单元内容为0A3F1H,它的下一字单元为4981H。,?表达式,不带引号的?表示可预置任何内容。 例如: DA_B DB ?, ? DA_W DW ?, ? 第一条语句是要求汇编程序分配两个字节

12、单位,第二条语句是要求分配两个字单元。这些单元里现在可以是任意值。,微型计算机原理与接口技术,字符串表达式,DB伪指令:为字符串中每一个字符分配一个字节单元。字符串必须是用引号括起来且不超过255个字符。字符串自左至右以字符的ASCII码按地址递增的排列顺序依次存放。 DW伪指令:可以给两个字符组成的字符串分配两个字节存储器单元,且这两个字符ASCII码的存储顺序是前一字符在高字节,后一字符在低字节,每一个数据项不能多于两个字符。 DD伪指令:仅可给两个字符组成的字符串分配四个字节单元,且这两个字符ASCII码是存储在两个低字节中,两个高字节均存放00H。,微型计算机原理与接口技术,字符串表达

13、式,动画,STRING1 DB ABCDEF STRING2 DW AB,CD, EF STRING3 DD AB,CD,微型计算机原理与接口技术,带DUP表达式,DUP是定义重复数据操作符。 使用DUP操作符格式是: DB 变量名+ DW +表达式1 DUP (表达式2) DD 其中表达式1是重复的次数,表达式2是重复的内容 例如: BB1 DB 12H DUP(ABCD) BB2 DW 10H DUP(4),微型计算机原理与接口技术,ARRAY1 DB 2 DUP(0,1,2,?),ARRAY2 DB 100 DUP(0, 2 DUP(1,2), 0, 3),700bytes,ARRAY2

14、,例 题,动画,微型计算机原理与接口技术,内存数据定义伪指令例题, VAR1 DB 32H,ABC VAR2 DW 1234H,40H,AB DD 12345678H DB ?, 11000011B ARRY1 DB 2 DUP(0,1) ARRY2 DW 2 DUP(?,1) ,微型计算机原理与接口技术,段定义伪指令,存储器在逻辑上是分段的,各段的定义由伪指令实现 格式: 段名SEGMENT定位方式连接方式类 别名 : 段名ENDS 段定义伪指令为程序的汇编和连接说明了段名、分段的各种属性以及分段的开始和结束。段名是自定义符,开始的段名与结束的段名必须相同。段的长度不超过64KB(字节)。S

15、EGMENT后面的参数是可选项。,微型计算机原理与接口技术,定位方式,定位方式制定段的起始地址边界,方式有以下四种: (1)PAGE:指定起始地址的低8位是0,即其值能被256整除(称为页边界)。 (2)PARA:指定起始地址的低4位是0,即其值能16整除(称为段边界)。缺省值是PARA (3)WORD:指定起始地址的最低位是0,即其值能被2整除(称为字边界)。 (4)BYTE:指定起始地址是任意值。,微型计算机原理与接口技术,连接方式,连接方式告诉连接程序本段与其它段可按以下方式连接: (1)PUBLIC:告诉连接程序把本段与其它同名类别的段连接起来,公用一个段的起点地址,形成一个物理段。 (2)STACK:表示本段是堆栈段。 (3)空缺(NONE):表示本段不与任何段连接。 (4)COMMON:表示本段与同名同类别的段共用同一段起始地址,即同名同类的段相重叠,段的长度是最长段的长度。 (5)MEMORY:表示本段在连接时定位在所有段之上。 (6)AT表达式:本段定位在表达式值指定的段地址处。,微型计算机原理与接口技术,连接方式,NONE: 不组合,默认状态是NONE PUBLIC: 依次连接(顺序由LINK程序确定) COMMON: 覆盖连接 STACK: 堆栈段的依次连接 AT 表达式:段定义在表达式值为段基的节边

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

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

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