第三章微型计算机指令系统 指令系统是微处理器(CPU)所能执行的指令 的集合,它与微处理器有密切的联系,不同的微处 理器有不同的指令系统。在本章中我们主要讲解 INTEL公司生产的8086/8088CPU的寻址方式以及各 种指令系统,并通过具体实例讲述了各条指令的功 能和使用方法 通过本章的学习,读者应该掌握以下内容: 3种操作数的寻址方式 常用指令的格式、功能、以及对标志位的影响
第三章 微型计算机指令系统 指令系统是微处理器(CPU)所能执行的指令 的集合,它与微处理器有密切的联系,不同的微处 理器有不同的指令系统。在本章中我们主要讲解 INTEL公司生产的8086/8088CPU的寻址方式以及各 种指令系统,并通过具体实例讲述了各条指令的功 能和使用方法。 通过本章的学习,读者应该掌握以下内容: •3种操作数的寻址方式 •常用指令的格式、功能、以及对标志位的影响
3、18086/8088的寻址方式 本章主要介绍80868088的指令系统以及在指令中为 取得操作数地址所使用的寻址方式 汇编指令: 操作码 操作数 操作码:指令操作类型 操作数:指令所需操作数或操作数的地址;操作数可以 有一个,也可以有两个,一个源操作数,一个目的操作 数 例: MOV AX,CX;将CX的内容送入AX中
3、1 8086/8088的寻址方式 汇编指令: 操作码 操作数 操作码:指令操作类型; 操作数:指令所需操作数或操作数的地址;操作数可以 有一个,也可以有两个,一个源操作数,一个目的操作 数。 例: MOV AX,CX ;将CX的内容送入AX中。 本章主要介绍8086/8088的指令系统以及在指令中为 取得操作数地址所使用的寻址方式
3、1、1立即寻址方式 指令操作数部分直接给出指令的操作数,操作数与操作 码一起存入代码段中。立即数有8位和16位。 例: MOVAL,5 源操作数为立即寻址 指令执行后,AL=05H,8位数据05H存入AL寄存器 例: MOVAX,3064H;源操作数为立即寻址 指令执行后,AX=3064H,16位数据3064H存入AX寄存 命
3 、 1、1 立即寻址方式 指令操作数部分直接给出指令的操作数,操作数与操作 码一起存入代码段中。立即数有8位和16位。 例 :MOV AL,5 ;源操作数为立即寻址 指令执行后,AL=05H,8位数据05H存入AL寄存器。 例 :MOV AX,3064H ;源操作数为立即寻址 指令执行后,AX=3064H,16位数据3064H存入AX寄存 器
3、1、2寄存器寻址方式 寄存器寻址方式的操作数是寄存器的值,指令中直接 使用寄存器名,包括8位或16位通用寄存器和段寄存器。 可使用的16位寄存器:AX、BX、CX、DX、SI、DI SP、BP;其中:AX、BX、CX、DX可分成两8位使用。 例: MOVAX,CX (AX (CX) MOV AL (AL)(AL)-1 3、1、3内存寻址方式 在内存寻址方式中,操作数是某个内存单元的内容 (值),指令中给出的是内存单元的有效地址EA(即 偏移地址),段地址通常在隐含的某个段寄存器中
3、 1、2 寄存器寻址方式 寄存器寻址方式的操作数是寄存器的值,指令中直接 使用寄存器名,包括8位或16位通用寄存器和段寄存器。 可使用的16位寄存器:AX、BX、CX、DX、SI、DI、 SP、BP;其中:AX、BX、CX、DX可分成两8位使用。 例: MOV AX,CX ;(AX) (CX) MOV AL ;(AL) (AL)-1 3、1、3 内存寻址方式 在内存寻址方式中,操作数是某个内存单元的内容 (值),指令中给出的是内存单元的有效地址EA(即 偏移地址),段地址通常在隐含的某个段寄存器中
1、直接寻址方式 直接寻址方式的操作数的形式为:Ⅴ ariable或 Variable 在直接寻址方式中,操作数的偏移地址(有效地址EA) 直接用指令加以指定(有直接地址值和标号两种形式), 它存放在代码段中指定操作码之后,但操作数一般存放 在存储器的数据段中,所以必须先求出操作数的物理地 址,然后再访问存储器才能取得操作数。段地址隐含的 由DS指定,也可以ES指定,但需在指令中指明。最后 存储器地址为:DS:偏移地址或ES:偏移地址。 例:MOAX,ES:[2000 将ES:2000H单元内容送入AX。 例: MOV AX, LABLE或MOAX,[ LABELI 将标号为 LABLE(存放操作数单元的符号地址),即 DS: LABLE中的内容送入AX
1、直接寻址方式 直接寻址方式的操作数的形式为:Variable或[Variable] 在直接寻址方式中,操作数的偏移地址(有效地址EA) 直接用指令加以指定(有直接地址值和标号两种形式), 它存放在代码段中指定操作码之后,但操作数一般存放 在存储器的数据段中,所以必须先求出操作数的物理地 址,然后再访问存储器才能取得操作数。段地址隐含的 由DS 指定,也可以ES指定,但需在指令中指明。最后 存储器地址为:DS:偏移地址 或 ES:偏移地址。 例: MOV AX,ES:[2000H] 将ES:2000H单元内容送入AX。 例: MOV AX,LABLE 或 MOV AX,[LABEL] 将标号为LABLE(存放操作数单元的符号地址) ,即 DS:LABLE中的内容送入AX
2、寄存器间接寻址 寄存器间接寻址方式的操作数形式为:|regl 操作数的有效地址包含在基址寄存器BX,基址指针BP 或一个变址寄存器(S或D)中。寄存器间接寻址要 用方括号括起来,以便与寄存器操作数相区别。 例: MOVAX,[BX];将由BX决定的存储单元的内 容送到AX寄存器。 0000 数据段 0001 BB TAB: 0002 AA 0003 BX0001 AA BB AX AH AL 间接寻址
2、寄存器间接寻址 寄存器间接寻址方式的操作数形式为:[reg] 操作数的有效地址包含在基址寄存器BX,基址指针BP 或一个变址寄存器(SI或DI)中。寄存器间接寻址要 用方括号括起来,以便与寄存器操作数相区别。 例: MOV AX,[BX];将由BX决定的存储单元的内 容送到AX寄存器。 0000 0001 0002 0003 BB AA TAB: AX AH AL AA BB 间接寻址 数据段 BX 0001
操作数在存储器中,指令中寄存器内容作为操作数所在 单元的有效地址。 (BX) (SD 有效地址= 段寄存器为DS (DD (BP) 段寄存器为SS 物理地址计算方法: 物理地址=(DS)16+(BX)或(SI)或(DI 物理地址 (SS)*16+(BP)
操作数在存储器中,指令中寄存器内容作为操作数所在 单元的有效地址。 (BX) (SI) (DI) (BP) 有效地址 = 段寄存器为DS 段寄存器为SS 物理地址计算方法: 物理地址 = (DS)* 16 + (BX)或(SI)或(DI) 物理地址 = (SS)* 16 + (BP)
例:已知:(DS)=2100H,(DI)=2000H 指令: MOV AX,[DI;(AX)←((DI) 物理地址=(DS)*16+(DI 2100H*16+2000H =21000H+2000H 23000H 指令结果:将23000H单元内容送AL中, 将23001单元内容送AH中
例:已知:(DS)=2100H,(DI)=2000H 指令: MOV AX,[DI] ;(AX) ((DI)) 物理地址=(DS) * 16 + (DI) =2100H * 16 + 2000H =21000H + 2000H =23000H 指令结果:将23000H单元内容送AL中, 将23001H单元内容送AH中
3、寄存器相对寻址方式 操作数在存储器内,指令中寄存器内容与指令指定的位 移量(DISP)之和作为操作数所在单元的有效地址。 (BX) DISP8 有效地址=(S 段寄存器为DS (DD (BP) DISP16 段寄存器为SS 物理地址=(DS)*16+(BX)+DISP8 (SI)、(DI)、DISP16类同。 物理地址=(SS)*16+(BP)+DISP16
3、寄存器相对寻址方式 操作数在存储器内,指令中寄存器内容与指令指定的位 移量(DISP)之和作为操作数所在单元的有效地址。 (BX) DISP8 (SI) (DI) (BP) DISP16 有效地址 = 段寄存器为DS 段寄存器为SS + 物理地址 = (DS)* 16 +(BX)+DISP8 (SI)、(DI)、DISP16类同。 物理地址= (SS) *16 + (BP)+DISP16
例:如果(DS)=3000H,(SD=2000H, COUNT=3000, 则执行指令MOAX, CONUTIS,求出此种寻址方 式对应的有效地址和物理地址。 有效地址=2000H+3000H=5000H 物理地址=(DS)*16+5000H 30000H+5000H=35000H 4、基址变址寻址方式: 操作数在存储器中,指令将基址寄存器(BX或BP) 与变址寄存器(S或DI)内容之和作为操作数所在存 储单元的有效地址
例: 如果 (DS)=3000H, (SI)= 2000H, COUNT=3000H, 则执行指令 MOV AX,CONUT[SI],求出此种寻址方 式对应的有效地址和物理地址。 有效地址= 2000H + 3000H = 5000H 物理地址=(DS)*16 + 5000H =30000H + 5000H =35000H 4、基址变址寻址方式: 操作数在存储器中,指令将基址寄存器(BX或BP) 与变址寄存器(SI或DI)内容之和作为操作数所在存 储单元的有效地址