,第3章寻址方式和指令系统 例3-8 MOV EAX, BX+24 ;或 MOV EAX,24[BX] MOV ECX,[EBP+50];或 MOV ECⅩ,50[EBP MOV DX, EAX+1500 E MOV DX, 1500]
第3章 寻址方式和指令系统 例3-8 MOV EAX,[BX+24] ;或 MOV EAX,24[BX] MOV ECX,[EBP+50] ;或 MOV ECX,50[EBP] MOV DX, [EAX+1500] ;或 MOV DX,1500[EAX]
,第3章寻址方式和指令系统 例3-9设(DS)=2000H,(SI)=1200H,(21206H=56H,执行 指令 MOV AH,[SI+6]的结果是:(AH)=56H,执行过程见图3-9。 DS 2000H ×1OH SI12000 ④ 位移量|6 DSE 低 56H|21206 56H A 图3-9例3-9寄存器相对寻址执行情况
第3章 寻址方式和指令系统 例3-9 设(DS)=2000H,(SI)=1200H,(21206H)=56H,执行 指令MOV AH,[SI+6]的结果是:(AH)=56H ,执行过程见图3-9。 图3-9 例3-9寄存器相对寻址执行情况 12000H 6 + S I 位移量 ×10H 56H … … 低 高 DS段 56H AH 21206H DS 2000H +
,第3章寻址方式和指令系统 6.变址寻址 由指定的变址寄存器内容,加上指令中给定的偏移量(要由 个段寄存器作为地址基准)作为操作数的地址的寻址方式称为 变址寻址。 在变址寻址方式下,EA=[变址寄存器]+位移量,位移量跟 在操作码之后,与操作码一起存放在代码段中。变址寄存器的 使用规定对16位寻址和32位寻址是不一样的 (1)16位寻址时,仅SⅠ、DI可作变址寄存器,默认DS作为 段基址寄存器。如: MOV AX, COUNT [SI
第3章 寻址方式和指令系统 6.变址寻址 由指定的变址寄存器内容,加上指令中给定的偏移量(要由 一个段寄存器作为地址基准)作为操作数的地址的寻址方式称为 变址寻址。 在变址寻址方式下,EA=[变址寄存器]+位移量,位移量跟 在操作码之后,与操作码一起存放在代码段中。变址寄存器的 使用规定对16位寻址和32位寻址是不一样的。 (1) 16位寻址时,仅SI、DI可作变址寄存器,默认DS作为 段基址寄存器。如: MOV AX,COUNT[SI]
,第3章寻址方式和指令系统 (2)32位寻址时,除ESP外的任何通用寄存器均可作变址 寄存器,EBP默认SS作段基址寄存器,其余的以DS作段基址寄 存器。如: MOV EAX, 5 EBP] Mov ECX, DATALEAX EA的书写形式可以是“[变址寄存器]+位移量”,也可以 是“位移量[变址寄存器]”,即位移量可以写在[]里,也可以 写在[]外面;也可以是一个数字,或一个符号地址。以 MOV AX, COUNT[SI为例,默认段基址是DS,变址寻址的执行过程如图3 10所示
第3章 寻址方式和指令系统 (2) 32位寻址时,除ESP外的任何通用寄存器均可作变址 寄存器, EBP默认SS作段基址寄存器,其余的以DS作段基址寄 存器。如: MOV EAX,5[EBP] MOV ECX,DATA[EAX] EA的书写形式可以是“[变址寄存器]+位移量”,也可以 是“位移量[变址寄存器]”,即位移量可以写在[ ]里,也可以 写在[ ]外面;也可以是一个数字,或一个符号地址。以MOV AX, COUNT[SI]为例,默认段基址是DS,变址寻址的执行过程如图3- 10所示
,第3章寻址方式和指令系统 CS段 低 DS30000H 操作码 2000H 0OH偏移量H Count 3000Hk 30H偏移量L 35000H 高 DS段 AX AH AL 35000H 735001H 高 图3-10变址寻址示意图
第3章 寻址方式和指令系统 图3-10 变址寻址示意图 S I 2000H + COUNT 3000H 35000H 操作码 低 … 高 CS 段 … … DS 段 低 AH AL 35000H 高 AX 00H 偏移量H 30H 偏移量L … DS 30000H 35001H