
第3章80x86指系统和寻址方式3.1.8086指令系统概述3.28086的寻址方式和指令系统3.380386的寻址方式和指令系统3.480486/Pentium微处理器新增指令
1 第3章 80x86指令系统和寻址方式 3.1 8086指令系统概述 3.2 8086的寻址方式和指令系统 3.3 80386的寻址方式和指令系统 3.4 80486/Pentium微处理器新增指令

第3章80x86指令系统和寻址方式8086指令系统概述3.1 81.数据类型无符号二进制数-Byte,Word,DoubleWord带符号二进制数BCD码一一非压缩的BCD码、压缩的BCD码定点数和浮点数■定点数纯整数、纯小数浮点数单精度:32(1,8,23)、双精度:64(1,11,52)、扩展精度:80(1, 15, 64)串数据一一位串、字节串、字串、双字串ASCII码数据指针类数据-近指针(16位)、远指针(32位)2
2 第3章 80x86指令系统和寻址方式 3.1 8086指令系统概述 1. 数据类型 ◼ 无符号二进制数——Byte, Word, Double Word ◼ 带符号二进制数 ◼ BCD码——非压缩的BCD码、压缩的BCD码 ◼ 定点数和浮点数 ◼ 定点数——纯整数、纯小数 ◼ 浮点数——单精度:32(1, 8, 23)、双精度:64(1, 11, 52)、扩展精度: 80(1, 15, 64) ◼ 串数据——位串、字节串、字串、双字串 ◼ ASCII码数据 ◼ 指针类数据——近指针(16位)、远指针(32位)

第3章80x86指令系统和寻址方式2.8086指令格式指令的操作码(OP)■指令格式OPDWOPSWIfD=lthento“reg"else“from"regIfW-lthenwordinstructionelsebyteinstructionIfSW=-01then16bitsofimmediatedataformtheoperand-If SW-11 then an immediate data byte is sign extended to formthe 16-bit operand3.指令的执行时间3
3 第3章 80x86指令系统和寻址方式 2. 8086指令格式 ◼ 指令的操作码(OP) ◼ 指令格式 ◼ If D=1 then to “reg” else “from” reg ◼ If W=1 then word instruction else byte instruction ◼ If SW=01 then 16 bits of immediate data form the operand ◼ If SW=11 then an immediate data byte is sign extended to form the 16-bit operand 3. 指令的执行时间 OP D W OP S W

第3章80x86指令系统和寻址方式3.28086的寻址方式和指令系统8086的寻址方式3.2.11.数据寻址方式立即寻址一在指令中直接给出操作数例:MOV AL, 5MOV AX, 1234H; 80386MOVEAX.12345678H寄存器寻址—操作数在寄存器中例:MOV AL, BHMOV AX, CX; 80386MOVEAX,EBX直接寻址一指令中给出有效地址EA(偏移地址例:;设DS=3000HMOV AX, [2000H]4
4 3.2 8086的寻址方式和指令系统 3.2.1 8086的寻址方式 1. 数据寻址方式 ◼ 立即寻址——在指令中直接给出操作数 例: MOV AL, 5 MOV AX, 1234H MOV EAX, 12345678H ; 80386 ◼ 寄存器寻址——操作数在寄存器中 例: MOV AL, BH MOV AX, CX MOV EAX, EBX ; 80386 ◼ 直接寻址——指令中给出有效地址EA(偏移地址) 例: MOV AX, [2000H] ; 设DS=3000H 第3章 80x86指令系统和寻址方式

第3章80x86指令系统和寻址方式■寄存器间接寻址一一有效地址在寄存器中(BX/BP/SI/DI例:;物理地址=DSx16+BXMOV AX, [BX];物理地址=DSx16+SIMOV BX, [SI];物理地址-DS×16+DIMOV [DI], DX;物理地址=SSx16+BPMOV [BP], BX;物理地址-ESx16+BXMOV AX, ES:[BX];物理地址=-DS×16+BPMOVDS:[BPI,DX■基址寻址有效地址为BX或BP的内容和位移量DISP之和例:;物理地址=DS×16+BX+08HMOV SI, 08H[BX];物理地址=DS×16+BX+100HMOV AX, [BX+100H];物理地址=SSx16+BP+08HMOV AL, [BP+08H];物理地址=SSx16+BP+0200HMOV0200H|BPI,AX5
5 ◼ 寄存器间接寻址——有效地址在寄存器中(BX/BP/SI/DI) 例: MOV AX, [BX] ; 物理地址=DS16+BX MOV BX, [SI] ; 物理地址=DS16+SI MOV [DI], DX ; 物理地址=DS16+DI MOV [BP], BX ; 物理地址=SS16+BP MOV AX, ES:[BX] ; 物理地址=ES16+BX MOV DS:[BP], DX ; 物理地址=DS16+BP ◼ 基址寻址——有效地址为BX或BP的内容和位移量DISP之和 例: MOV SI, 08H[BX] ; 物理地址=DS16+BX+08H MOV AX, [BX+100H] ; 物理地址=DS16+BX+100H MOV AL, [BP+08H] ; 物理地址=SS16+BP+08H MOV 0200H[BP], AX ; 物理地址=SS16+BP+0200H 第3章 80x86指令系统和寻址方式

第3章80x86指令系统和寻址方式变址寻址有效地址为变址寄存器(SIDD的内容和位移量DISP之和例:;设DS=3000H,SI-2000H,EA=35003HMOV AX,3003HJSI基址变址寻址一有效地址为基址寄存器和变址寄存器的内容之和,再加上DISP。例:1MOVAXMASK|BX+SII;物理地址-DS×16+BX+SI+MASK立即操作数一立即寻址寄存器操作数一寄存器寻址三种操作数存储器操作数一一直接寻址、寄存器间接寻址、基址寻址、变址寻址、基址变址寻址6
6 ◼ 变址寻址——有效地址为变址寄存器(SI/DI)的内容和位移量DISP之和 例: MOV AX, 3003H[SI] ; 设DS=3000H, SI=2000H, EA=35003H ◼ 基址变址寻址——有效地址为基址寄存器和变址寄存器的内容之和, 再加上DISP。 例: MOV AX, MASK[BX+SI]; 物理地址=DS16+BX+SI+MASK 第3章 80x86指令系统和寻址方式 三种操作数 立即操作数——立即寻址 寄存器操作数——寄存器寻址 存储器操作数——直接寻址、寄存器间接寻址、 基址寻址、变址寻址、基址变址寻址

第3章80x86指令系统和寻址方式2.程序寻址方式■段内直接寻址方式例:JMP 1000HCALL 1000H段内间接寻址方式例:JMIPBXCALL AXJMPWORDPTR[BP+TABLE]■段间直接寻址方式例:JMP 2500H:3600HCALL 2600H:3800H段间间接寻址方式例:JMPDWORDPTR[BX]CALL DWORDPTR[BX]7
7 2. 程序寻址方式 ◼ 段内直接寻址方式 例: JMP 1000H CALL 1000H ◼ 段内间接寻址方式 例: JMP BX CALL AX JMP WORD PTR [BP+TABLE] ◼ 段间直接寻址方式 例: JMP 2500H : 3600H CALL 2600H : 3800H ◼ 段间间接寻址方式 例: JMP DWORD PTR [BX] CALL DWORD PTR [BX] 第3章 80x86指令系统和寻址方式

第3章80x86指系统和寻址方式3.VO地址空间■直接端口寻址指由指令直接给出端口号,端口号可以为0~255。例如:INAL,32H;32H为8位端口地址■间接端口寻址由DX寄存器指出端口地址,这种方式给出的端口号可为0~65535。例如:IN AL,DX;DX寄存器的内容为端口地址注意:无论程序工作在16位还是32位模式,都用DX作为I/O空间的间址寄存器,这是因为I/O地址空间仅有64KB的缘故。8
8 3. I/O地址空间 ◼ 直接端口寻址 指由指令直接给出端口号,端口号可以为0~255。 例如:IN AL, 32H ; 32H为8位端口地址 ◼ 间接端口寻址 由DX寄存器指出端口地址,这种方式给出的端口号可为0~65535。 例如:IN AL, DX ; DX寄存器的内容为端口地址 注意:无论程序工作在16位还是32位模式,都用DX作为I/O空间 的间址寄存器,这是因为I/O地址空间仅有64KB的缘故。 第3章 80x86指令系统和寻址方式

第3章80x86指令系统和寻址方式4.段寄存器的确定80X86的指令在形式上只给出了地址偏移值(有效地址),未指明当前段寄存器,而是用默认规定指出所选用的隐含段寄存器,如下表。访存类型段寄存器段超越前缀的可用性代码CS不可用SS不可用PUSH、POP类代码不可用ES串操作的目标地址SS可用CS、DS,ES、FS、GS以(E)BP、(E)SP间址的指令其它DS可用CS、SS、ES、FS、GS例如:MOV BX,ES:[DI;源操作数在ES指定的段中。9
9 第3章 80x86指令系统和寻址方式 4. 段寄存器的确定 ◼ 80X86的指令在形式上只给出了地址偏移值(有效地址),未指明 当前段寄存器,而是用默认规定指出所选用的隐含段寄存器, 如下表。 ◼ 例如:MOV BX, ES:[DI] ; 源操作数在ES指定的段中。 访存类型 段寄存器 段超越前缀的可用性 代码 CS 不可用 PUSH、POP类代码 SS 不可用 串操作的目标地址 ES 不可用 以(E)BP、(E)SP间址的指令 SS 可用CS、DS,ES、FS、GS 其它 DS 可用CS、SS、ES、FS、GS

第3章80x86指令系统和寻址方式8086的指令系统3.2.2数据传送指令算术运算指令逻辑运算指令移位与循环移位指令控制转移指令串操作指令与重复前缀子程序调用与返回指令中断调用与返回指令处理机指令10
10 3.2.2 8086的指令系统 ◼ 数据传送指令 ◼ 算术运算指令 ◼ 逻辑运算指令 ◼ 移位与循环移位指令 ◼ 控制转移指令 ◼ 串操作指令与重复前缀 ◼ 子程序调用与返回指令 ◼ 中断调用与返回指令 ◼ 处理机指令 第3章 80x86指令系统和寻址方式