微机原理与接口技术汇编语言程序教案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
器语言。该过程称为汇编,完成汇编任务的程序称为汇编程序,相应形成的机器语言程序称为
目标程序。汇编后形成的目标程序虽然是二进制代码,但还不能直接上机运行,必须经过连接
程序(LINK)连接,将库文件或其它目标文件连接到一起形成可执行文件后,才能送入计算机
执行。汇编语言程序从建立到汇编、连接形成可执行程序的整个过程如图所示。
ORG CONSTANT
EXPRESSION
如常量表达式的值为 N,则 ORG 伪指令可以使下一个字节的地址成
为常量表达式的值 N。
例如: VECTORS SEGMENT
ORG 10
VECT1 DW 47A5H
VECT2 DW 0C596H
ORG 20
VECTORS ENDS
则 VECTL 的偏移地址值为 0AH,而 VECT2 的偏移地址值为 14H。
5
8 个字节长)、TBYTE(DT,10 个字节长),这一点在数据定义伪操作中已作了说明。
在同一个程序中,同样的标号或变量的定义只允许出现一次,否则汇编程序会指示出错。
3. 标号
标号在代码段中定义,后面跟着冒号:,它也可以用 LABEL 或 EQU 伪操作来定义。此外,
它还可以作为过程名定义。标号经常在转移指令或 CALL 指令的操作数字段出现,用以表示转
运算结果为真时,表示为 0FFFFH,运算结果为假时,表示为 0000H。
指令 MOV BX,32 EQ 45 等价于 MOV
BX,0
指令 MOV BX,56 GT 30 等价于 MOV
BX,0FFFFH
4. 取值运算符
变量和标号具有段属性、偏移属性和类型属性等,要从变量和标号中析出它们的段地址、
偏移地址,变量的类型、元素的个数和占用内存的大小等,就要使用取值运算符(又称分析运
教
学
设
讲授内容
计
∕
备
注
第 4 章 汇编语言程序设计
4.1 汇编语言程序基本格式
4.1.1 汇编语言格式
机器语言是计算机能直接识别和执行的语言,用一串“0”、“1”数字代码表示。
汇编语言是一种符号语言,它用某种容易记忆的英文缩写去表示机器指令操作码(指令助
记符),用人们熟悉的数码及数学符号等表示操作数、地址。
例如:
Y1 EQU 7 ;定义 Y1 的值为 7
PURGE Y1
;解除 Y1 的定义
Y1 EQU 36 ;重新定义 Y1 的值为 36
2. 数据定义伪指令
格式:
[变量] 助记符 操作数,…,操作数 [;注释]
助记符字段说明所用伪指令的助记符,也即伪指令,说明所定义的数据类型。常用的有以
下几种:
DB 伪指令用来定义字节,其后的每个操作数都占有一个字节(8 位)。
┇Biblioteka Baidu
段名 ENDS
⑵ ASSUME
段寄存器指派伪指令。格式为:
ASSUME 段寄存器:段名[,段寄存器:段名……]
⑶ ORG
移动地址指针的伪指令。其格式为:
ORG 常量表达式
4. 过程定义伪指令 PROC 和 ENDP
过程名 PROC [NEAR/FAR] ┇
过程名 ENDP
5. 程序标题伪指令 TITLE
课程教案∕讲稿用纸
第 15 次课
教学课型:理论课√实验课□习题课□实践课□技能课□其它□
主要教学内容(注明:*重点#难点):
讲授过程:
1.汇编语言程序基本格式
2.汇编语言基本语法
3.伪指令
* 重点
汇编语言程序基本格式和伪指令的概念
# 难点
伪指令的应用和理解
教学目的要求:
了解: 汇编语言程序基本格式和汇编语言的基本语法; 掌握: 伪指令的应用
是有区别的。逻辑运算符的功能在汇编阶段完成,逻辑运算指令的功能在程序执行阶段完成。
在汇编阶段,指令 AND AL,78H AND 0FH 等价于指令 AND AL,08H。
3. 关系运算符
关系运算符有:EQ(相等)、LT(小于)、LE(小于等于)、GT(大于)、GE(大于等于)
NE(不等于)。
关系运算符要有两个运算对象。两个运算对象要么都是数值、要么都是同一个段内的地址。
段,是 16 位无符号数;对于 32 位段,则是 32 位无符号数。在当前段内给出变量的偏移值等于
当前地址计数器的值,当前地址计数器的值可以用$来表示。
类型属性:变量的类型属性定义该变量所保留的字节数。如 BYTE(DB,1 个字节长)、
WORD(DW,2 个字节长)、DWORD(DD,4 个字节长)、FWORD(DF,6 个字节长)、QWORD(DQ,
则称为 NEAR。对于 16 位段,指针长度为 2 字节;对于 32 位段,指针长度为 4 字节。如在段
外引用,则称为 FAR。对于 16 位段,指针长度为 4 字节(段地址 2 字节,偏移地址 2 字节);对
于 32 位段,指针长度为 6 字节(段地址 2 字节,偏移地址 4 字节)。
4.2.2 运算符与表达式
NUM DB 1,3,5,7
其中 DNUM 是字型并指向 NUM 所指的内存单元,DNUM 的存取以字为单位,而 NUM 仍
是字节类型。
4.3 伪指令
1. 符号定义伪指令
⑴ 等值伪指令 EQU
格式:<符号名>EQU<表达式>
例如:
CONSTANT EQU 256
;将数 256 赋以符号名
B EQU [BP+8]
DQ 伪指令用来定义 4 字,其后的每个操作数占有 4 个字(64 位),可用来存放双精度浮点
数。
DT 伪指令用来定义 10 个字节,其后的每个操作数占有 10 个字节,形成压缩的 BCD 码。
3
3. 段定义伪指令
⑴ SEGMENT 和 ENDS
段定义伪指令。该指令能对程序分段。其格式为:
段名 SEGMENT [定位类型][组合类型][‘类别’]
新符号名 EQU THIS 类型
原符号名 类型 参数,…
THIS 的功能与 PTR 相同,只是格式不同。THIS 语句中建立一个新的符号名并指定它有
THIS 后的类型,而新符号名指向下一语句的原符号名的内存地址。例如前面用 PTR 修改 NUM
类型可用下面的 THIS 语句代替。
DNUM EQU THIS WORD
1
⑵ 字符串常量
包含在单引号中的若干个字符形成字符串常量,字符串在计算机中存储的是相应字符的
ASCLL 码。如‘A’的值是 41H,‘AB’的值是 4142H 等。
⑶ 符号常量
常量用符号名来代替就是符号常量。
用 COUNT EQU 3 或 COUNT=3 定义后 COUNT 就是一个符号常量,与数值常量 3 等价。
向地址。标号有 3 种属性:段、偏移及类型。
段属性:定义标号的段起始地址,此值必须在一个段寄存器中,而标号的段则总是在 CS
寄存器中。
偏移属性:标号的偏移地址是从段起始地址到定义标号的位置之间的字节数。对于 16 位段
是 16 位无符号数;对于 32 位段则是 32 位无符号数。
类型属性:用来指出该标号是在本段内引用还是在其他段中引用的。如是在段内引用的,
4.1.3 汇编语言的特点 1. 执行速度快 2. 程序短小 3. 可以直接控制硬件 4. 可以方便地编译 5. 辅助计算机工作者掌握计算机体系结构
4.1.4 一般汇编语言程序的结构形式
4.2 汇编语言基本语法 4.2.1 常量、变量与标号
1. 常量 ⑴ 数值常量 汇编语言中的数值常量可以是二进制、八进制、十进制或十六进制数,书写时用加后缀的 方式标明即可,对于十进制数可以省掉后缀。对于十六进制数,当以 A~F 开头时,前面加数 字 0,以避免和名字混淆。
DW 伪指令用来定义字,其后的每个操作数占有一个字(16 位,其低位字节在第一个字节
地址中,高位字节在第二个字节地址中)。
DD 伪指令用来定义双字,其后的每个操作数占有两个字(32 位)。
DF 伪指令用来定义 6 个字节的字,其后的每个操作数占有 48 位,可用来存放远地址。这
一伪指令只能用于 386 及其后继机型中。
1. 算术运算符
算术运算符有:+(加)、-(减)、*(乘)、/(除)、MOD(取余除)。
MOV AL,4*8+5
;数值表达式
MOV SI,OFFSET BUF+12
;地址表达式
2. 逻辑运算符
逻辑运算符有:AND(与)、OR(或)、XOR(异或)、NOT(非)。
逻辑运算符只能用于数值表达式中,不能用于地址表达式中。逻辑运算符和逻辑运算指令
算符是 PTR 和 THIS。
① PTR 的格式:
类型 PTR 表达式
其中类型可以是 BYTE、WORD、DWORD、NEAR、FAR,表达式是被修改的变量或标号。
例如 NUM 被语句
NUM DB 1,3,5,7
定义为字节类型,若要将 NUM 开始两个字节的数据装入 AX,指令
② THIS 的格式:
7. 基数控制伪指令 ⑴ 二进制数 由一串 0 和 1 组成其后跟以字母 B,如 00101100B。 ⑵ 十进制数 由 0~9 的数字组成的数。一般情况下,后面不必加上标记,在指定其它基数的情况下,后 面可跟字母 D,例如 178D。 ⑶ 十六进制数 由 0~9 及 A~F 组成的数,后面跟字母 H。这个数的第一个字符必须是 0~9,所以如果第
4.1.2 汇编语言源程序和汇编程序
用汇编语言编写的程序称为汇编语言源程序,或简称为源程序。对程序员来讲,符号语言
简单直观、便于记忆,比二进制数表示的机器语言方便了许多。但计算机只“认识”机器语言
而不认识这些文字、数字、符号,为此人们创造了一种程序,叫汇编程序。如同英汉之间对话
需要“翻译”一样,汇编程序的作用相当于一个“翻译员”,自动地把汇编语言源程序翻译成机
;变址引用赋以符号名 B
⑵ 等号伪指令 =
例如:
EMP=6
或
EMP EQU 6
⑶ 定义符号名伪指令 LABEL: LABEL 伪指令可以定义变量或标号。
格式:<符号名> LABEL <类型>
⑷ 解除定义伪指令 PURGE:解除指定符号的定义。
格式:PURGE<符号 1,符号 2,…,符号 N>
解除符号定义后,可用 EQU 重新定义。
4
一个字符是 A~F 时,应在其前面加上数字 0,如 0FFFFH。 ⑷ 八进制数
由数字 0~7 组成的数,后面可跟字母 O 或 Q,如 1777O。 ⑸ .RADIX RADIX 伪指令可以把默认的基数改变为 2~16 范围内的任何基数。格式如下:
RADIX EXPRESSION ⑹字符串 字符串可以看成串常量,可以用单引号或双引号把字符串放在其中,得到的是字符串的 ASCII 码值,例如,'ABCD’。 作业: 教材习题 4.1,4.2,4.3,4.4
格式:TITLE 文本
其中,文本是用户给出的字符串,要求长度不超过 6 个字符。
6. 地址计数器与对准伪指令
⑴ 地址计数器$
例如:ARRAY DW 1,2,$+4,3,4,$+4
如汇编时 ARRAY 分配的偏移地址为 0074,则汇编后的存储区将如图 4.2 所示。
⑵ ORG 伪指令
ORG 伪指令用来设置当前地址计数器的值,其格式为:
算符)。这些运算符是 SEG、OFFSET、TYPE、LENGTH、SIZE。
例如:SCORE DW 30 DUP(0)
定义了一个变量,TYPE SCORE 为 2,LENGTH SCORE 是 30,而 SIZE SCORE 是 60。
2
5. 合成运算符
也称为修改属性运算符,它能修改变量或标号的原有的类型属性并赋予新的类型。这类运
教学方法和教学手段:
讲课思路: 从汇编语言程序基本格式开始介绍,接着讲解汇编语言基本语法,最后介绍了常用的伪指令 讲授方法:口头讲授结合例子,并采用电子投影的形式。 讲授过程: 1. 汇编语言程序基本格式 2. 汇编语言基本语法 3. 伪指令
讨论、思考题:
1. 执行性指令和伪指令的区别是什么?
参考书目:
2. 变量
变量在数据段、附加数据段或堆栈段中定义,后面不跟冒号。它也可以用 LABEL 或 EQU
伪操作来定义。变量经常在操作数字段出现。它也有段、偏移及类型三种属性。
段属性:定义变量的段起始地址,此值必须在一个段寄存器中。
偏移属性:变量的偏移地址是从段的起始地址到定义变量的位置之间的字节数。对于 16 位