,第3章寻址方式和指令系统 若是以寄存器BP间接寻址,则操作数在堆栈段区域中 即堆栈段寄存器SS左移4位后与BP相加作为操作数的地址。例如, MOV AX,[B門],操作数在数据段寄存器SS中,16位偏移量在BP中 设(SS)=3000H,(BP)=2000H,32000单元的内容为34H,32001H 单元的内容为12H,执行 MOV AX,[BP]后,AX的内容为1234H 指令的执行过程如图3-6所示
第3章 寻址方式和指令系统 ② 若是以寄存器BP间接寻址,则操作数在堆栈段区域中, 即堆栈段寄存器SS左移4位后与BP相加作为操作数的地址。例如, MOV AX,[BP],操作数在数据段寄存器SS中,16位偏移量在BP中。 设(SS)=3000H,(BP)=2000H,32000H单元的内容为34H,32001H 单元的内容为12H,执行MOV AX,[BP]后,AX的内容为1234H。 指令的执行过程如图3-6所示
,第3章寻址方式和指令系统 C股段 30000HSS t 2000H BP 操作码 32000H 昌 S 低 AX AH 34H32000 12H 昌 图3-6BP寄存器间接寻址示意图
第3章 寻址方式和指令系统 图3-6 BP寄存器间接寻址示意图 30000H S S + 2000H BP 32000H 操作码 … … 低 高 CS段 34H 12H … … S S段 低 AH AL 32000H 高 AX
,第3章寻址方式和指令系统 (2)32位寻址时,偏移地址放在以EAX、EBX、ECX、EDX ESⅠ、EDI、EBP、ESP寄存器中,段默认有两种情况: ①通用寄存器EAX、EBX、ECX、EDX、ESI、EDI默认段寄存 器为DS ②通用寄存器ESP、EBP默认段寄存器为SS
第3章 寻址方式和指令系统 (2) 32位寻址时,偏移地址放在以EAX、EBX、ECX、EDX、 ESI、EDI、EBP、ESP寄存器中,段默认有两种情况: ① 通用寄存器EAX、EBX、ECX、EDX、ESI、EDI默认段寄存 器为DS。 ② 通用寄存器ESP、EBP默认段寄存器为SS
,第3章寻址方式和指令系统 例3-5 MOV EBX,[EAX];默认DS为段基址,传送双字给EBX MOV DX,[EBX];默认DS为段基址,传送字给DX MOV CH,[EAX];默认DS为段基址,传送字节给CH
第3章 寻址方式和指令系统 例3-5 MOV EBX,[EAX];默认DS为段基址,传送双字给EBX MOV DX, [EBX];默认DS为段基址,传送字给DX MOV CH, [EAX];默认DS为段基址,传送字节给CH
,第3章寻址方式和指令系统 说明: ①如果操作数在默认段之外,指令中必须加段超越前缀。如 MOV AX,ES:[S∏];操作数在数据段寄存器ES中, 不在默认段DS中 MOV AX,DS:[BP];操作数在数据段寄存器DS中 不在默认段SS中 所以,“ES:”和“DS:”分别是两指令的段超越前缀 ②若在指令中规定是段超越的,则BP也可以与其它的段寄存器 相加,形成操作数地址,如 MOV AX,DS:[BP],BP不是与Ss段 寄存器形成操作数地址,而是与DS段寄存器形成操作数地址。 ③寄存器间接寻址的应用场合与直接寻址的应用场合相似。 ④源操作数与目的操作数的位数要匹配
第3章 寻址方式和指令系统 说明: ① 如果操作数在默认段之外,指令中必须加段超越前缀。如 MOV AX,ES∶[SI] ;操作数在数据段寄存器ES中, 不在默认段DS中 MOV AX,DS∶[BP] ;操作数在数据段寄存器DS中, 不在默认段SS中 所以,“ES∶”和“DS∶”分别是两指令的段超越前缀。 ② 若在指令中规定是段超越的,则BP也可以与其它的段寄存器 相加,形成操作数地址,如MOV AX,DS∶[BP],BP不是与SS段 寄存器形成操作数地址,而是与DS段寄存器形成操作数地址。 ③ 寄存器间接寻址的应用场合与直接寻址的应用场合相似。 ④ 源操作数与目的操作数的位数要匹配