在微机原理课程中,本章内容非常重要!!!
主要内容:
1,8086/8088指令格式
2,8086指令的寻址方式
3,8086指令系统
一,指令格式
8086/8088指令系统采用了一种灵活的、由1-6个字节组成的、变字长的指令格式,包括操作码、寻址方式以及操作数三个部分。
不同字长的指令码格式不同,如下图:
第一字节:操作码字节(OPCODE),规定指令的操作类型
第二字节:寻址方式字节(MOD),规定操作数的寻址方式
字节3~6:依据指令的不同而取舍,可变字长的指令主要体现在这里,一般由它指出存储器操作数地址的位移量或立即数。
操作码/寻址方式字节格式如下:
第一个字节为操作码,它指出指令所要进行的操作。
W指示操作数类型:
W=0 操作数为字节
W=1 操作数为字
D指示REG操作数的传送方向:
D=0 表示REG操作数为源操作数
D=1 表示REG操作数为目的操作数
第二个字节为寻址方式,它指出所用的两个操作数存放的位置。
REG字段规定了一个寄存器操作数,它是传送方向已由D字段决定
REG字段选择寄存器的具体规定如下表所示:
MOD字段用来区分另一个操作数在寄存器中(寄存器寻址)还是在存储器中(存储器寻址)
若为存储器寻址,还用来指出该字节后面有无偏移量、有多少位偏移量。
R/M字段受MOD字段控制。
若MOD=11为寄存器方式,R/M字段将指出第二操作数所在寄存器编号;
若MOD=00、01、10则为存储器方式,R/M字段指出如何计算存储器中操作数的偏移地址。
例:
具体关系如下图所示:
二,寻址方式
1,操作数的种类
指令中操作的对象为操作数。8086/8088指令系统中操作数的种类有两种,数据操作数和地址操作数。
1)数据操作数
数据操作数是与数据有关的操作数,即指令中操作的对象是数据。根据其位置可分为:
a,立即数操作数:指令中要操作的数据包含在指令中。
b,寄存器操作数:指令中要操作的数据存放在指’n定的寄存器中。
c,存储器操作数:指令中要操作的数据存放在指定的存储单元中。
d,I/O操作数:即指令中要操作的数来自或送到I/O端口。