时钟周期:时钟周期是CPU的基本时间计量单位,由CPU主频决定,数值上等于CPU主频的倒数。一个时钟周期又称为一个T状态,因此基本总线周期可以用T1、T2、T3、T4表示。
ALE:地址锁存信号,T1结束的时候,电平由高跳变至低,将地址锁存起来,由地址锁存器给CPU提供地址,T1时ALE为高电平:AB有效。
BHE非/S7:高8位总线允许信号,低,表示高8位有效,高,表示低8位有效。
DT/R(非):数据传送方向,高:CPU输出,低:CPU输入。
8086有20根地址线,可以配置1MB的内存储器。每个存储单元存储一个字节(8位)数据,若要存储一个字,则将其存放在两个相邻的存储单元中,高字节存放在高地址单元中,低字节存放在低地址单元中。每个存储单元由20位地址,1M个存储单元对应的地址为00000H~FFFFFH。
一个存储单元存放的信息称为该单元的内容,表示为:(00001)=9FH;含义是地址为10001的存储单元存放的数据是9FH;MOV AL,[0001](假设地址从0开始)。如果从地址为0011FH开始的连续的两个存储单元存放的字型数据为DF46H,记为(0011F)=DF46H;MOV AX,[0011F]
(1)立即数操作数:操作数包含在指令字节中。即指令格式中操作数部分就是操作数本身。
(2)寄存器操作数:操作数存放在CPU的某个内部寄存器中。
(3)存储器操作数:操作数在内存的数据区中。
(4)I/O端口操作数:操作数来自或送到I/O端口。
操作数可分为数据操作数和地址操作数,因此寻址方式也分为数据寻址方式和地址寻址方式。
#指令中的操作数直接存放在机器代码中,紧跟在操作码之后(操作数作为指令的一部分存放在操作码之后的主存单元中);
#可以是8位数值(00H~FFH)
也可以是16位数值(0000H~FFFFH);
#立即数寻址方式常用来给寄存器和存储单元赋值,多以常量形式出现。例:MOV AX,1234H;源操作数寻址方式即为立即数寻址方式。
#操作数存放在CPU内部寄存器中:
8位寄存器:AH,AL,BH,BL,CH,CL,DH,DL
16位寄存器:AX,BX,CX,DX,SI,DI,BP,SP
4个段寄存器:CS,DS,DS,SS,ES
#寄存器名表示其内容(操作数)
例如:MOV AX,CX
#直接端口寻址方式:当端口地址小于等于FFH时,直接给出端口地址,例:IN AL,21H;注意,此时21H是端口地址,而不是立即数。
#间接端口寻址方式:当端口地址大于FFH时,将端口地址先送到DX中,然后再进行操作。例:
MOV DX,1234H
OUT DX,AL
#操作数存放在存储器单元中,要存取操作数就必须知道其存储器的单元地址,在指令中可直接或间接给出操作数的地址。指令中给出的地址只是有效地址,由“[]”括起来。若要从存储器中存取操作数必须知道其物理地址。物理地址=(AS/BS/CS/DS×10H+偏移地址(物理地址=段基址×10H+有效地址)。
#有效地址可以由以下3种地址分量构成:位移量:存放在指令中的一个8位或16位数值;基址:存放在基址寄存器BX或BP中的内容;变址:存放在变址寄存器SI或DI中的内容。
a:直接寻址方式:有效地址在指令中直接给出,例:MOV AX,[2000H],默认的段地址在DS寄存器,[2000H]表示在内存中数据段段寄存器中偏移地址为2000H存储单元的内容,其物理地址为:DS×10H+2000H;MOV AX,ES:[2000H]表示内存中附加数据段中偏移地址为2000H存储单元中的内容送到AX中,其物理地址为:ES×10H+2000H。
例:MOV AL,[1064H]
b:寄存器间接寻址
#有效地址存放在基址寄存器BX、BP或变址寄存器SI、DI中
#段地址对应的BX/SI/DI寄存器默认是DS,对应BP寄存器默认是SS;可用段超越前缀改变。
例:MOV AX,[SI]
c:寄存器相对寻址方式
#有效地址是寄存器内容与有符号数8位或16位位移量之和,寄存器可以是BX/BP/SI/DI 有效地址=BX/BP/SI/DI+8/16位位移量
#段地址对应BX/SI/DI寄存器默认是DS,对应BP寄存器默认是SS;可用段超越前缀改变。
例:MOV CL,[BX+1064H]
d:基址加变址寻址方式
#有效地址由基址寄存器(BX/BP)的内容加上变址寄存器(SI/DI)的内容构成;有效地址=BX/BP+SI/DI
#段地址对应BX基址寄存器默认是DS,对应BP基址寄存器默认是SS;可用段超越前缀改变。
例:MOV AH,[BP] [SI]
(SS*10H+BP+SI)
e:基址加变址相对寻址
#有效地址是基址寄存器(BX/BP)、变址寄存器(SI/DI)与一个8位或16位位移量之和;
有效地址=BX/BP+SI/DI+8/16位位移量
#段地址对应BX基址寄存器默认是DS,对应BP基址寄存器默认是SS;可用段超越前缀改变。
例:MOV [BX+DI+1234H],AH