目录
操作码:操作的性质。
操作数:操作的对象。
寻址方式 :指令中说明操作数所在地址的方法。
源操作数 :对于双操作数指令,逗号右边的操作数。
立即数: 包含在指令中的8位或16位的常数。
目标操作数 :对于双操作数指令,逗号左边的操作数。
以MOV指令为例说明8086 的寻址方式
1. 立即寻址方式
Immediate Addressing
立即数
(1)工作特点:
- 当立即数为16位时,低字节存放在低地址单元;高字节存放在高地址单元。
- 立即数被翻译成机器码后,作为指令的一部分被存放在代码段。
- 目标操作数可以为寄存器,也可为存储单元。
- 用来给寄存器赋初值。
(2)要求:
- 立即数只能用于源操作数,不能作为目的操作数。
- 以A~F开头的立即数,前要加数字0作为区分。
常用来给寄存器赋初值。
2. 寄存器寻址方式
Register Addressing
寄存器名称
(1)工作特点:
- 寄存器内容可以作为端口地址,也可以直接作为内容
(2)要求:
- 源操作数的长度与目标操作数一致。
3. 存储器寻址方式
(1) 直接寻址方式
Direct Addressing
[立即数]
段地址:[立即数]
(1)工作特点:
- 指令中直接给出操作数的偏移地址
- 默认使用的段寄存器为数据段寄存器DS
- 有效地址存放代码段中,操作码的机器码之后
(2)要求:
(2) 寄存器间接寻址方式
Register Indirect Addressing
[基址/变址寄存器]
段地址:[基址/变址寄存器]
(1)工作特点:
- 相比于直接寻址方式,有效值用寄存器的内容代替
(2)要求:
- 只由四个通用寄存器存放偏移地址。BX,BP,SI,DI。
- 如果用寄存器BX, SI, DI存放有效地址,则以段寄存器DS的内容作为段地址。
- 如果用寄存器BP存放有效地址,则以段寄存器SS的内容作为段地址。
(3) 寄存器相对寻址方式
Register Relative Addressing
偏移量[基址/变址寄存器]
短地址:偏移量[基址/变址寄存器]
(1)工作特点:
- 主要用于一维数组。
(2)要求:
- 当指令中指定寄存器为BX,SI,DI时,段寄存器使用DS;
- 当指定寄存器位BP时,段寄存器为SS。
(4) 基址变址寻址方式
Based Indexed Addressing
[基址寄存器][变址寄存器]
[基址寄存器 + 变址寄存器]
(1)工作特点:
- 操作数的偏移地址是一个基址寄存器和一个变址寄存器组合而成。
(2)要求:
- 基址寄存器只能选BX,BP;且与段寄存器配合唯一 DS:BX,SS:BP。
- 变址寄存器只能选SI,DI。
(5) 相对基址变址寻址方式
Relative Based Indexed Addressing
位移量[基址寄存器][变址寄存器]
(1)工作特点:
- 有效地址是一个基址寄存器和一个变址寄存器的内容,再加上8位或16位的位移量。
(2)要求:
- DS:BX
- SS:BP
4. 其他寻址方式
(1) 隐含寻址
指令中不指明操作数,但已隐含规定。
(2) I/O端口寻址
① 直接端口寻址:端口地址由一个8位立即数表示,最多可访问256个端口。
② 间接端口寻址:端口地址由DX寄存去提供,最多可访问64K个端口。