★斗 寻址方式:寻找指令中操作数地址的方式。 操作数有三种可能的存放方式: °直接包含在指令中 立即数 立即寻址 包含在某个寄存器中 寄存器操作数 寄存器寻址 在内存中 存储器操作数(内存操作数) 存储器寻址
6 3.2 寻址方式 寻址方式:寻找指令中操作数地址的方式。 操作数有三种可能的存放方式: •直接包含在指令中 立即数 立即寻址 •包含在某个寄存器中 寄存器操作数 寄存器寻址 •在内存中 存储器操作数(内存操作数) 存储器寻址
1.立即寻址 操作数作为立即数直接存在指令中,可为字节、字 双字 MOVEAX,12345678H 低地址 操作码 78H EAX 12H 34H 56H 78H 56HDS段 34H 12H 高地址
7 1. 立即寻址 操作数作为立即数直接存在指令中,可为字节、字 、双字 MOV EAX, 12345678H 低地址 高地址 DS段 操作码 78H 56H 34H 12H EAX 12H 34H 56H 78H
2.寄存器寻址 操作数包含在指令规定的8位、16位、32位寄存器 中 MOV ECX. EDX ECX EDX 12H34H56H78H 12H34H56H78H 寄存器寻址由于无需从存储器中取操作数,故执行 速度快
8 2. 寄存器寻址 操作数包含在指令规定的8位、16位、32位寄存器 中 MOV ECX, EDX 12H 34H 56H 78H ECX 12H 34H 56H 78H EDX 寄存器寻址由于无需从存储器中取操作数,故执行 速度快
3.存储器寻址(内存寻址) X86系列处理器对内存采用分段式管理,程序员在指令中使 用的是逻辑地址,逻辑地址由两部分组成存储单元所在 段的基地址:段内偏移地址(偏移量) 段的基地址一般由操作系统将程序装入内存时设置,程序员 在编程时主要使用段内偏移地址,段内偏移地址也称为有效 把地址(EA) I MOV ES: 1300H), AL ES:称为段超越前缀(可选),指示处理器访问哪个逻辑段 3000H为段内偏移地址(有效地址)
9 X86系列处理器对内存采用分段式管理,程序员在指令中使 用的是逻辑地址,逻辑地址由两部分组成——存储单元所在 段的基地址:段内偏移地址(偏移量) 段的基地址一般由操作系统将程序装入内存时设置,程序员 在编程时主要使用段内偏移地址,段内偏移地址也称为有效 地址(EA) MOV ES:[3000H], AL ES:称为段超越前缀(可选),指示处理器访问哪个逻辑段 3000H为段内偏移地址(有效地址) 3. 存储器寻址(内存寻址)
段内偏移地址(有效地址)可以由如下四个部分组成 ★半 (称为偏移地址四元素) 基址寄存器内容 变址寄存器内容 比例因子 位移量 EA=基址寄存器+变址寄存器×比例因子+位移量 16位寻址 32位寻址: 基址寄存器:BX,BP 基址寄存器:任何32位通用寄存器 变址寄存器:SI,DI 变址寄存器:除ESP外的任何 比例因子:0,1 32位通用寄存器 位移量:0,8,16位 比例因子:1,2,4,8 位移量:0,8,32位
10 段内偏移地址(有效地址)可以由如下四个部分组成 (称为偏移地址四元素): •基址寄存器内容 •变址寄存器内容 •比例因子 •位移量 EA=基址寄存器+变址寄存器比例因子+位移量 16位寻址: 基址寄存器:BX,BP 变址寄存器:SI,DI 比例因子:0,1 位移量:0,8,16位 32位寻址: 基址寄存器:任何32位通用寄存器 变址寄存器:除ESP外的任何 32位通用寄存器 比例因子:1,2,4,8 位移量:0,8,32位