第6章 6.1.2寻址方式 32位有效地址= 基址寄存器+(变址寄存器×比例)+位移量 >基址寄存器—任何8个32位通用寄存 器之 变址寄存器—除ESP之外的任何32 位通用寄存器之 比例—可以是1/2/4/8 位移量—可以是8/32位值
第 6 章 6.1.2 寻址方式 32位有效地址= 基址寄存器+(变址寄存器×比例)+位移量 ➢基址寄存器——任何8个32位通用寄存 器之一 ➢变址寄存器——除ESP之外的任何32 位通用寄存器之一 ➢比例——可以是1 / 2 / 4 / 8 ➢位移量——可以是8 / 32位值
第6章 32位寻址方式 (1) mov eax,44332211h (2) mov eax, ebx (3)mov eax,[1234h1 (4)mov eax, Tebx (5)mov eax, Tebx+80h] (6)mov eax, Tebx+esi] (mov eax, [ebx+esi+80hI (8)mov eax, [esi*2] (9) mov eax, [ebx+esi*4] (0) mov eax, Tebx+esi*8+80h
第 6 章 32位寻址方式 ⑴ mov eax, 44332211h ⑵ mov eax, ebx ⑶ mov eax, [1234h] ⑷ mov eax, [ebx] ⑸ mov eax, [ebx+80h] ⑹ mov eax, [ebx+esi] ⑺ mov eax, [ebx+esi+80h] ⑻ mov eax, [esi*2] ⑼ mov eax, [ebx+esi*4] ⑽ mov eax, [ebx+esi*8+80h]
第6章 6.1.3机器代码格式 字0字节12字节0字02字节012字 6位指令 指令前缀19超越|操码|m0tm位移量立叫 前缀 寻址方式 字节0字节0字节0字12字0字0字024字4字带节 031位指 指令前级|段超越 地址操伥数 长蔑是1燥码m7m位移量立明
第 6 章 6.1.3 机器代码格式
第6章 6.232位扩展指令 >16位指令系统从两个方面向32位扩展 (1)支持32位操作数 (2)支持32位寻址方式 mov ax bx ;16位操作数 mov eax ebx;32位操作数 mov ax,ebx];16位操作数,32位寻址方式 mov eax, [ebx];32位操作数,32位寻址方式 有些指令扩大了工作范围,或指令功能实现 了向32位的自然增强
第 6 章 6.2 32位扩展指令 ➢16位指令系统从两个方面向32位扩展 ⑴ 支持32位操作数 ⑵ 支持32位寻址方式 mov ax,bx ;16位操作数 mov eax,ebx ;32位操作数 mov ax,[ebx] ;16位操作数,32位寻址方式 mov eax,[ebx] ;32位操作数,32位寻址方式 ➢有些指令扩大了工作范围,或指令功能实现 了向32位的自然增强
第6章 将立即数压入堆栈 PUSH i8/116/i32 把16位或32位立即数i16/32压入堆栈。若是8 位立即数i,经符号扩展成16位后再压入堆栈 push 1234h ;压入16位立即数 push87654321h;压入16位立即数 call helloabc add esp, 6 ;平衡堆栈
第 6 章 将立即数压入堆栈 PUSH i8/i16/i32 ;把16位或32位立即数i16/i32压入堆栈。若是8 位立即数i8,经符号扩展成16位后再压入堆栈 push 1234h ;压入16位立即数 push 87654321h ;压入16位立即数 call helloabc add esp,6 ;平衡堆栈