NEXT MOV AX. O MOV BX. O MOV CX. O J0 NEXT ret 12A2:00054B80000 MOV AX,0000 2A2:0008BB0000 MOV BX,0000 12A2:000B↓B90000 MOV CX,0000 2A2:000E/70F5 30 0005 2A2:0010CB RETF 例: JMP NEAR PTR NEXT近转移-32768~+32767 IMP SHORT NEXT 短转移128~+127
16 例: JMP NEAR PTR NEXT 近转移 -32768 ~ +32767 JMP SHORT NEXT 短转移 -128 ~ +127
(2)段内间接寻址 转向的有效地址是一个寄存器或存储单元的内容。 (可用除立即数以外的任何一种数据寻址方式得到) vs ]: TABLE=20A2H(BX)=1256H (S)=528EH (DS)=2000H(232F8H)=3280H(264E4H)=2450H IMP BX ;(IP)=1256H JMP TABLEIBXI JMP WORD PTR TABLEBXI ;(IP)=3280H JMP BXISI JMP WORD PTR BXIISI (IP)=2450H
17 (2) 段内间接寻址 转向的有效地址是一个寄存器或存储单元的内容。 (可用除立即数以外的任何一种数据寻址方式得到) 例: TABLE = 20A2H (BX) = 1256H (SI) = 528EH (DS) = 2000H (232F8H) = 3280H (264E4H) = 2450H JMP BX ; (IP)=1256H JMP TABLE[BX] JMP WORD PTR TABLE[BX] ; (IP)=3280H JMP [BX][SI] JMP WORD PTR [BX][SI] ; (IP)=2450H
(3)段间直接寻址 用指令中提供的转向段地址和偏移地址取代CS和IP 例 code2 segment code1 segment next mp far ptrnext 0●● code2 ends code1 ends
18 code1 segment …… jmp far ptr next …… code1 ends code2 segment …… next: …... …… code2 ends (3) 段间直接寻址 用指令中提供的转向段地址和偏移地址取代CS 和 IP 例:
|4)段间间接寻址 用存储器中的两个相继字的内容取代CS和IP (存储单元的地址可用存储器寻址方式得到) 例 JMP DWORD PTR INTERS+BXI PA=(DS)X24+(BX)+INTERS (PA+1,PA)→|P (PA+3,PA+2)→CS
19 (4) 段间间接寻址 用存储器中的两个相继字的内容取代CS 和 IP (存储单元的地址可用存储器寻址方式得到) 例: JMP DWORD PTR [INTERS+BX] PA=(DS)×2 4 + (BX) + INTERS (PA+1, PA)→IP (PA+3, PA+2) →CS
80Xx86寻址方式的扩充 °支持32位数据操作 MOV EAX, 12345678H MOV EAX EBX °支持4GB存储空间寻址 MOV EAX[EBX+ES川 MOV EAX, EBX+ESI+20H
20 二、80x86 寻址方式的扩充 • 支持32位数据操作 MOV EAX, 12345678H MOV EAX, EBX • 支持4GB存储空间寻址 MOV EAX, [EBX +ESI] MOV EAX, [EBX+ESI+20H]