汇编语言设计-8086指令系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
②、寄存器中:寄存器操作数
③、指令的一部分、且紧跟在操作码之后:立即操作数
④、存储器中:存储器操作数
⑤、I/O端口中:I/O操作数
寻址所需要的偏移址称为有效地址EA。有效 地址EA的计算方法见P60表4-4。
一、固定寻址
1、单操作数指令 其操作规定在CPU 的某个固定的寄 存器中进行,且这个寄存器又被隐含 在操作码中。
数 器,对它们进行寻址,所以叫 据 基址寻址。
68 段 说明:
①、在指令中,也可指定段超越前缀来取代其它段中的 操作数。如:
MOV AX,ES:[BX]
②、寄存器间接寻址通常用来对一维数组或表格进行 处理。
3、寄存器相对寻址
在寄存器相对寻址方式的指令中,也指定BX、BP、
SI、DI的内容进行间接寻址。但是,它与寄存器间接寻
MOV AX,ES:[4000H]
⑷、直接寻址方式通常用于处理存储器中的单个变量。
2、寄存器间接寻址
操作数在存储器中,但操作数的有效地址不像直接寻址 那样放在指令中,而是放在BX、BP、SI、DI之一中。
⑴、以BX、SI、DI为间址寄存器,则在数据段中,操
作数的物理地址为:
(BX)
PA=(DS)×16 + (SI) (DI)
例:DAA ;(AL)←把AL中的数调整为正确的十进制数 说明:这种寻址方式的指令大多数为单字节指令。例如: 加减法的十进制调整指令,其操作总固定在AL中进行。
2、双操作数指令 有一个操作数地址固定为堆栈栈顶
例:PUSH reg
POP reg
说明:①、固定寻地其固定操作数是被含了的。
②、固定寻址不需要计算EA。
例:MOV AX,[BX+DI] 或 MOV AX,[BX]+[DI]
DS 2000 0
BX 200 0 + DI 300 0
代 OP 码 段
使用说明同寄存器
① 2500 0

② AH AL
34 12
25000H 12 34

数 相对寻址
据 段
5、相对基址加变址寻址
操作数的有效地址是一个基址寄存器与一个变址寄存器
址不同的是:指令中还要指定一个8位或16位的位移量。
故有效地址为:
(BX)
(BP) EA= (SI) +
(DI)
Disp8 Disp16
⑴、基址相对寻址
①、对寄存器BX,段寄存器用DS。
物理地址: PA=DS16+Disp8(或Disp16)
例:MOV AX,[BX+COUNT]
2000 0 DS
若有二个操作数,则称双操作数指令。
操作码 操作数或操作数地址
二、8086机器指令和汇编指令
1、机器指令 8086采用变字节指令格式,其格式如下: (或参见P51图4-1)。
第一字节
第二 字节
第三至第六字节
7
654 操作
3210 7654 3 码 DW MOD REG
2 10 R/M
地址位移量或立即数
用时,可以在基址指针寄存器BP中存放堆栈栈顶的地址, 用位移量表示栈顶到数组第一个元素的距离,变址则用来 访问数组中的每一个元素。
⑵、以BP为间址寄存器,则操作数在堆栈段中,其物理
地址为: PA=(SS)×16 + (BP)
例:MOV AX,[BX] 例:MOV AX,[BP]
DS:2000 0

BX: 100 0 2100 0
OP 码

寻址示意图见P63图4-4(b) 注意:BX、BP叫基址寄存
AH AL

68 00 21000 00
直接寻址通常以数据段寄存器DS的内容为段的基地址, 因此操作数的实际地址为:
PA=(DS)16+EA
例:MOV AX,[4000H]
设:(DS)=2000H DS:2000 0
+
400 0
2400 0
AH AL ②
60 80

OP 代

00 码
40 段

20000 24000 80
数 据
60 段
的内容及8位或16位偏移量之和。故物理地址为:
PA=((DSSS))1166
+(BX)+(SI或DI)+(Disp8或Disp16) +(BP)+(SI或DI)+(Disp8或Disp16)
例:MOV AX,[BX+SI+COUNT]
其寻址过程见P66图4-8所示。
说明:此寻址方式为访问堆栈中的数组提供了方便。应
说明:
⑴、在汇编语言中,直接地址可用数值表示,被放在方 括号[ ]之中,表示偏移地址,以区别于立即数寻址。
⑵、在汇编语言中,直接地址也可以用符号地址表示。 例:MOV AX,VALUE ; VALUE为符号地址
⑶、在直接寻址方式下,操作数地址也可以位于数据段 以外的其它段。书写时应在操作数地址前用前缀指出段寄 存器名。例:
第四章 8086指令系统
前言
1、何谓指令 CPU(计算机)执行某种操作的命令。 2、何谓指令系统 计算机(CPU)所能执行的全部操
作命令的集合。
3、8086指令系统的特点 ⑴、兼容性好。
⑵、灵活的指令格式。 指令长度1∽6个字节。 ⑶、指令的寻址能力和数据存取能力强。
⑷、有处理多种类型的数据能力。如:
2、一条指令中,源操作数或目的操作数可以采用寄存 器寻址,还可以两者都采用寄存器寻址。
3、采用寄存器寻址的指令在执行时,其操作在CPU内 部进行,不需要执行总线周期,故指令执行速度快。
四、存储器寻址
存储器寻址其操作数一般位于代码段之外的数据段、
堆栈段、附加段的存储器中,指令中给出的是存储单元的 地址或产生存储单元地址的信息。
200 0 + 400 0
BX COUNT

2600 0 ②
OP 代 00 码 40 段

AH AL 12 34

26000H 34

12

数 据 段
②、对寄存器BP,段寄存器用SS。
物理地址: PA=SS16+Disp8(或Disp16)
ⅰ、寄存器相对寻址通常也用来访问一维数组中的元 素,位移量用来数组的起点。
⑴、第一字节:称操作码字节
D7∽D2位为操作码,表示操作类型。 D2:方向位,规定操作的方向。
若D2= 0 第二字节中REG字段指出的寄存器为源操作数 1 第二字节中REG字段指出的寄存器为目的操作数
D0:字/字节操作位 规定操作数的宽度。 ⑵、第二字节 寻址方式字节
指出该指令所用操作数存放在何处(是存储器还是 寄存器)以及存储器操作数有效地址EA的计算方法。
带符号数、无符号数,十进制数的8位、16位运算, 逻辑、移位、传送操作等。
⑸、便于构成多处理机系统。
第一节 8086指令的基本格式
一、指令的构成
1、操作码 指示计算机所要执行的操作类型。它可以 用一组二进制代码或助记符表示。
2、操作数
指出该操作所需的操作数或操作数地址
(即所需操作数在何处)。
若只有一个操作数,则称单操作数指令。
二、立即数寻址 操作数就直接放在指令中,且紧跟
在操作码之后,作为指令代码的一部 分,存放在代码段中。
例1:MOV AL,66H
AL

66
操作码 码
. 66 段

例2:MOV AX,2050H
AH AL
20 50
操作码 代
. 50 码 . 20 段

说明:
1、立即操作数可以是8位或16位二进制数;若为16位, 则高位字节存放在高地址中,低位字节存放在代地址中。
ⅱ、采用寄存器相对寻址的指令,也可合使用段超越
前缀,如: MOV DL,DS:COUNT[BP]
4、基址变址寻址
存储器操作数的有效地址EA是指定的一个基址寄存器 和一个变址寄存器的内容之和。即
EA
=
(BX) (BP)
+
(SI) (DI)
操作数的物理地址为:
PA =
(DS)16 +(BX)+(SI或DI) (SS)16 +(BP)+(SI或DI)
op d w mod reg r/m
机器语言难懂、难记、易出错。 计算机能直接识别,速度快。
3、汇编语言
用助记符表示相应机器指令的操作码和操作数。操 作码的助听符通常是表示指令功能的英文名词的缩写。 例:ADD 表示加法操作。
易记、易懂、不易出错。
第二节 8086的寻地方式
寻址方式:指令中用于说明操作数所在地址的方法。 8086的操作数通常有以下形式: ①、隐含在操作码中:隐含(固定)操作数
一条指令中,只能有一个存储器操作数,它是源操作 数或者是目的操作数。存储器寻址按EA的计算方法可分 为五种:
⑴、直接寻址
⑵、寄存器间接寻址
⑶、寄存器相对寻址 ⑷、基址变址寻址
⑸、相对基址变址寻址
1、直接寻址 操作数地址的16位偏移量(即EA)直
接存放在指令操作码之后,与操作码一
起存放在代码段区域中。
③、R/M(寄存器/存储器)字段
此字段受MOD字段控制,它用来指出寄存器操作数 的编码或存储器操作数中有效地址EA的计算方法。 R/M字段的编码及有效地址EA的计算公式见P60表4-4。 ⑶、第三至第六字节 操作数或ຫໍສະໝຸດ Baidu作数地址
2、机器语言指令举例 例:ADD CL,BH ;CL CL+BH 机器语言指令 000000 1 0 11 001 111 即02CFH
2、立即操作数只能为源操作数,不能作目的操作数。
3、立即寻址主要用来给寄存器或存储器单元赋初值。
三、寄存器寻址 操作数包含在CPU内部寄存器中。
例:MOV DS,AX
DS
AX
3000
. 3000
例:INC CX CX←CX+1
说明:
1、对于16位操作数,其寄存器可以为:AX、BX、 CX、DX、SI、DI、SP、BP。对于8位的操作数,寄存 器可以是:AL、BL、CL、DL和AH、BH、CH、DH。
①、MOD 寻址字段:规定是存储器还是寄存器操作数
MOD 编码
寻址方式
0 0 存储器方式 无位移量 0 1 存储器方式 带8位位移量(-128∽+127) 1 0 存储器方式 带16位位移量(-32768+32767)
1 1 寄存器方式 (两个操作数均为寄存器)
②、REG字段 寄存器字段 指出寄存器的编者码。 其编码见P60表4-3所示。
相关文档
最新文档