汇編语言程序设计 (2)寄存器间接寻址 此寻扯方式中,操作数的有效地扯BA存放在SI、DⅠ、BX或BP四个 夺器之一中,即:BA=(B)或(BP)或(SI)或(DI)。 汇編格式:[R](其中R是奇存器SI、DI、B、BP之一) SI、DI、BX、BP在这里叫间扯岢存器。考用BX、SI或D间址寻址时,则 操作数獻认在数据段中,且用DS内容作为段首址。操作数的物理地址为 (BX) PA=(DS)×16+{(SI (DI) 【例3.4】 MOV DL,[B] 考指令中使用BP间址寻址时,则操作教默认在堆栈段中,且用SS的内客 作为段首址,操作数的物理地址为:PA=(SS)×16+(BP)。 例3.5】M0[BP],AX
汇编语言 程序设计 (2)寄存器间接寻址 此寻址方式中,操作数的有效地址EA存放在SI、DI、BX或BP四个寄 存器之一中,即:EA=(BX)或(BP)或(SI)或(DI)。 汇编格式: [ R ] (其中R是寄存器SI、DI、BX、BP之一) SI、DI、BX、BP在这里叫间址寄存器。若用BX、SI或DI间址寻址时,则 操作数默认在数据段中,且用DS内容作为段首址,操作数的物理地址为: (BX) PA=(DS)×16+(SI) (DI) 【例3.4】 MOV DL,[ BX ] 若指令中使用BP间址寻址时,则操作数默认在堆栈段中,且用SS的内容 作为段首址,操作数的物理地址为: PA=(SS)×16 +(BP)。 【例3.5】 MOV [ BP ] ,AX
汇編语言程序设计 (3)基址寻址 此寻址操作数的有效地址EA是指令中指定的基址睿夺器的内容与指令 中给出的位移量之和,即:BA台(BX)+移量 (BP) 汇鳊格式:(a)Disp[BX]或Disp[BP] (b)[Bx +Disp st BP + Disp 该寻址方式中若以B作为基址岢存器。则操作数脒认在数据段中:若以 BP作为基址睿存器,则操作数赋认在堆栈段中,因而操作数的物理地址为: PA=「(DS)×16+(Bx)+Disp (SS)×16+(BP)+Disp 若操作数不在脒认段中,则应使用段超越前级明确指定。 【例3.6】MOVA,[BX+7CH] mov AX.[ BP+CoUNT
汇编语言 程序设计 (3)基址寻址 此寻址操作数的有效地址EA是指令中指定的基址寄存器的内容与指令 中给出的位移量之和,即:EA=(BX)+位移量 (BP) 汇编格式:(a)Disp [ BX ] 或 Disp [ BP ] (b)[ BX +Disp ] 或 [ BP +Disp ] 该寻址方式中若以BX作为基址寄存器,则操作数默认在数据段中;若以 BP作为基址寄存器,则操作数默认在堆栈段中,因而操作数的物理地址为: PA= (DS)×16+(BX)+Disp (SS)×16+(BP)+Disp 若操作数不在默认段中,则应使用段超越前缀明确指定。 【例3.6】 MOV AX,[ BX+7CH ] MOV AX,[ BP+COUNT ]
汇編语言程序设计 (4)变址寻址 喪址寻址与基址寻扯类似,其操作数的有效地址EA是变扯睿夺器的 内容与位移量之和,即:EA=(SI)+位移量 (DI) 汇編格式:(a)Disp[SⅠ]或Disp[DI (b)[ Si +Disp] xt[ Di +Disp 该寻址方式默认段是教据段,因而操作数的物理地址为 PA=(DS)X16+(SI)+ Disp (DI) 若操作数不在默认段中,则应使用段超越前级明确指定。 【例3.7】MWD, COUNT[DI] Mov ES: 3480H SI ] AX
汇编语言 程序设计 (4)变址寻址 变址寻址与基址寻址类似,其操作数的有效地址EA是变址寄存器的 内容与位移量之和,即:EA=(SI)+位移量 (DI) 汇编格式:(a)Disp [ SI ] 或 Disp [ DI ] (b)[ SI +Disp ] 或 [ DI +Disp ] 该寻址方式默认段是数据段,因而操作数的物理地址为: PA=(DS)×16+(SI)+ Disp (DI) 若操作数不在默认段中,则应使用段超越前缀明确指定。 【例3.7】 MOV DX,COUNT [ DI ] MOV ES:3480H [ SI ],AX
汇編语言程序设计 (5)基址加变址寻址 此寻址方式中操作数的有效地扯EA是指令中的基扯粵存器的内容、变址 寄存器的内容、位移量互个地址分量之和,即:EA=(BX)十(SI)+移量 (BP)+(DI) 汇編格式:(a)Disp[B或BP+SI或DI] (b)[B或BP+S或DI+Disp] 该寻址方式中若基址睿存器采用B,则操作数默认在数据段中; 若基址岢存器采用BP,则操作教脒认在堆栈段中,因而操作教的物理 地址为:PA=(S)×16+(B)+(SI)+Disp (DI) (SS)16+(BP)+(Si)+Disp (DI)
汇编语言 程序设计 (5)基址加变址寻址 此寻址方式中操作数的有效地址EA是指令中的基址寄存器的内容、变址 寄存器的内容、位移量三个地址分量之和,即:EA=(BX)+(SI)+位移量 (BP)+(DI) 汇编格式:(a)Disp [ BX 或BP+SI或DI ] (b)[ BX或BP +SI或DI+Disp ] 该寻址方式中若基址寄存器采用BX,则操作数默认在数据段中; 若基址寄存器采用BP,则操作数默认在堆栈段中,因而操作数的物理 地址为: PA= (DS)×16+(BX)+(SI)+Disp (DI) (SS)×16+(BP)+(SI)+Disp (DI)
汇編语言程序设计 4、80X86扩充的寻址方式 上迷讲的8种8086CPU的16位寻址方式同样适用于80X86CPU32位寻 址方式。在这8种32位寻址方式中,只不过是立即数、岢存器、存储器 有效地址扩充到32,而且任意32通用寄夺器(EAX、EBX、BCX、 ED、ESI、EDI、EBP、ESP)均可作为间址饣存器、基址岢存器或变址 岢存器(变址岢存器ESP除外)。 除此之外,80X86CPU32位寻址方式还提供了两种仅适用于32攸CPU的寻 址方式,即:比例变址寻址和基址加比例变址寻址,这种寻址方式 均属于存储器寻址方式中的一种,其操作数存放在存储器中 (1)比例变扯寻扯 由变址岢存器的内容乘以比例因子开加上倣移量而得到操诈教有效 地扯EA的寻址方式称为比例变址寻址, 即:EA=[变扯存器]×比例因子十位移量。 汇绵格式:[变扯睿夺器]×比例因子十位移量
汇编语言 程序设计 4、80X86扩充的寻址方式 上述讲的8种8086CPU的16位寻址方式同样适用于80X86CPU32位寻 址方式,在这8种32位寻址方式中,只不过是立即数、寄存器、存储器 有效地址扩充到32位,而且任意32位通用寄存器(EAX、EBX、ECX、 EDX、ESI、EDI、EBP、ESP)均可作为间址寄存器、基址寄存器或变址 寄存器(变址寄存器ESP除外)。 除此之外,80X86CPU32位寻址方式还提供了两种仅适用于32位CPU的寻 址方式,即:比例变址寻址和基址加比例变址寻址,这两种寻址方式 均属于存储器寻址方式中的一种,其操作数存放在存储器中。 (1) 比例变址寻址 由变址寄存器的内容乘以比例因子再加上位移量而得到操作数有效 地址EA的寻址方式称为比例变址寻址, 即:EA=[ 变址寄存器 ]×比例因子+位移量。 汇编格式: [ 变址寄存器 ]×比例因子+位移量