郑学坚《微型计算机原理及应用》笔记和课后习题详解(汇编语言与汇编程序)【圣才出品】
- 格式:pdf
- 大小:1.22 MB
- 文档页数:40
1 / 40
十万种考研考证电子书、题库视频学习平台
圣才电子书
www.100xuexi.com
第7章 汇编语言与汇编程序
7.1 复习笔记
一、符号指令中的表达式
1.常量
(1)概念
①常量是指那些在汇编时已经有确定数值的量。常量可以数值形式出现在符号指令中,
这种常量称作数值常量;也可将那些经常使用的数值预先给它定义一个名字,然后用该名
字来表示该常量,这种常量称作符号常量。
②符号常量由伪指令EQU或“=”号定义,如P EQU 314或P=314
(2)数值表达式
汇编语言允许对常量进行算术(+、-、×、/、MOD)、逻辑(AND、OR、XOR、
NOT)和关系(EQ、NE、LT、GT、LE、GE)3类运算。由常量和这3类运算符组成的有
意义的式子,称作数值表达式。
2.标号
(1)概念
标号是指令地址的符号表示,也可以是过程名。过程名是过程入口地址的符号表示,即
过程的第一条指令的地址。
(2)标号的定义方式
①用“:”定义,直接写在指令助记符前,如定义标号CYCLE。
2 / 40
十万种考研考证电子书、题库视频学习平台
圣才电子书
www.100xuexi.com
②用PROC和ENDP伪指令定义过程。
标号一般只在代码段中定义和使用,标号代表指令的地址,因而它具有3个属性段基
址、偏移地址和类型。
a.段基址。标号的段基址是定义该标号所在段的起始地址。
b.偏移地址。标号的偏移地址是标号所在段的段基址到该标号定义指令的字节距离。
c.类型。标号的类型有NEAR和FAR两种。用“:”定义的标号为NEAR类型,过
程名可以定义为NEAR类型也可以定义为FAR类型,NEAR类型的标号只能在定义该标号
的段内使用,而FAR类型的标号却无此限制。
3.变量
(1)变量和地址表达式
①变量是存储器中的数据或数据区的符号表示。变量名就是数据的地址或数据区的首地
址。指令中的存储器的地址可以用变量表示。
②变量有3重属性:段基址、偏移地址和类型。
③变量的段基址是指变量所在段的起始地址的高16位。当需要访问该变量时,其段基
址(段首址的高16位或段选择字)一定要在其相应的段寄存器中。变量的偏移地址是指变
量所在段的起始地址到该变量的字节距离。
(2)变量存储区域中数据的存放
8086/8088微处理器的所有操作既可以按字节为单位也可以按字为单位来处理。
80X86系统为了向上兼容,既能按字节和字进行操作,也能按双字进行操作,因此80X86
系统中的存储器是以8位二进制数(一个字节)为一个存储单元编址的。每一个存储单元
用唯一的一个地址码来表示。
3 / 40
十万种考研考证电子书、题库视频学习平台
圣才电子书
www.100xuexi.com
(3)变量的段基址和偏移地址的指定算符
变量的段基址和偏移地址分别用SEG或ΟFFSET两个分析运算符来指定,只要在操作
数中指定带SEG或ΟFFSET算符的变量名,就可以分别产生该变量的段基址或偏移地址。
(4)变量的类型属性及变量的定义
①变量的类型是指存取该变量中的数据所需要的字节数。变量的类型可以是字节
(Byte)、字(Word)、双字(Dword)、6字节(Fbyte)、4字(Qword)和10字节(Tbyte)。
②变量使用数据定义伪指令DB(定义字节)、DW(定义字)、DD(定义双字)、DF(定
义6字节)、DQ(定义4字)、DT(定义10字节)来定义。其格式:
③若无变量名则为定义无名数据区。表达式确定了变量的初值,所使用的表达式可以是
以下几种:
a.数值表达式;
b.ASCII码字符串;
c.地址表达式;
d.n DUP(表达式),其中DUP(duplicate)为重复字句,n是重复因子(只能取大
于等于1的正整数,它表示定义了n个表达式);
e.表示所定义变量无确定初值;
f.以上表达式组成的序列,各表达式用逗号分隔。
(5)地址表达式类型的变更
地址表达式的类型属性由其中的变量或标号(一个地址表达式不可能同时含有变量和标
号)决定。不含变量或标号,仅含寄存器(位于方括号中)的地址表达式没有类型属性。
组合运算符PTR可以用来明确地址表达式的类型属性,或者使它们临时兼有与原定义
4 / 40
十万种考研考证电子书、题库视频学习平台
圣才电子书
www.100xuexi.com
所不同的类型属性,但仍保持它们原来的段基址属性和偏移地址属性不变。其格式是:
类型 PTR 地址表达式
二、符号指令的寻址方式
符号指令的构成如下:操作助记符[操作数]。
两个操作数的符号指令构成如下:操作助记符目的操作数,源操作数。
1.寄存器寻址
(1)概念
操作数是寄存器,操作的数据在指令指定的寄存器中。如MOV BX,AX。
(2)优点
由于通用寄存器是微处理器的一部分,不需要访问存储器即可存取操作数据,因此采用
寄存器寻址方式可以提高工作效率。对于那些需要经常存取的操作数据,采用寄存器寻址方
式较为合适。
2.立即寻址
(1)概念
操作数是数值表达式,操作数就是操作的数据,这样的操作数称为立即数。立即数就在
指令中,实际上是不需要寻找的。
(2)条件
立即寻址方式只能用于源操作数,主要用来给寄存器或存储器赋初值,也可以与寄存器
操作数或存储器操作数进行算术逻辑运算。
3.直接寻址
操作的数据在存储器中,其偏移地址由不含寄存器的地址表达式给出,段基址或段选择
5 / 40
十万种考研考证电子书、题库视频学习平台
圣才电子书
www.100xuexi.com
字由当前数据段寄存器DS确定。若变量定义的段不是当前数据段DS而是其他段,则应在
地址表达式前加段名或段寄存器和冒号。
4.间接寻址
(1)概念
①操作的数据在存储器中,其偏移地址在指令给出的方括号中的寄存器中,即方括号中
的寄存器的内容为操作数据的偏移地址。
②只有4个16位通用寄存器BX、SI、DI和BP可以用于间接寻址;所有32位的通用
寄存器都可以用于间接寻址。
(2)优点
间接寻址的主要优点是只要对间址寄存器作适当修改,一条指令就可以对许多不同的存
储单元进行访问。循环程序设计中,多用间接寻址。
5.基址寻址
操作的数据在存储器中,其偏移地址就是指令中给出的地址表达式的偏移地址,段基址
或段选择字由变量和基址寄存器确定在哪一个段寄存器中。
段基址或段选择字的确定首先要看地址表达式是否含有变量名,若地址表达式中含有变
量名则段基址或段选择字由变量确定;若地址表达式中不含变量名则段基址或段选择字的确
定同问址。地址表达式中的寄存器只能是一个基址寄存器。
只有2个16位的通用寄存器BX和BP可以用作基址寄存器;32位的所有通用寄存器
都可以用作基址寄存器。
6.变址寻址
变址寻址与基址寻址类似,只不过是用变址寄存器取代基址寄存器。
16位的通用寄存器只有SI和DI可以用作变址寄存器;32位的所有通用寄存器都可以
6 / 40
十万种考研考证电子书、题库视频学习平台
圣才电子书
www.100xuexi.com
用作变址寄存器。
在变量数据区中存取数据可以使用间接寻址,也可以使用基址寻址或变址寻址。
7.基址变址寻址
操作的数据在存储器中,其偏移地址是指令中给出的地址表达式的偏移地址,地址表达
式中既有一个基址寄存器又有一个变址寄存器。
段基址或段选择字由变量和基址寄存器确定在哪一个段寄存器中。基址寄存器和变址寄
存器的位数要相同,即不能一个是16位的寄存器另一个是32位的寄存器。
8.比例变址寻址
操作的数据在存储器中,其偏移地址就是指令中给出的含有变址寄存器×比例因子的地
址表达式的偏移地址,段基址或段选择字的确定同变址寻址。比例因子可为且只可为1、2、
4、8。可将变址寻址看作是比例因子为1的比例变址寻址。
9.基址比例变址寻址
操作的数据在存储器中,其偏移地址就是指令中给出的地址表达式的偏移地址,地址表
达式中既有一个基址寄存器又含有变址寄存器X比例因子。
10.存储器寻址及存储器寻址中段基址或段选择字的确定
(1)存储器寻址与地址表达式
①操作的数据在存储器中的寻址方式统称为存储器寻址,包括直接寻址、间接寻址、基
址寻址、(比例)变址寻址和基址(比例)变址寻址。
②地址表达式的一般形式是
a.变量[基址寄存器+变址寄存器x比例因子+常量]或者[基址寄存器+变址寄存器X比
例因子+变量+常量]
b.地址表达式中若没有寄存器,其形式是: