【例3.2】寄存器和存储器内容为:(AX)=1212H,BUF为 数据段定义的变量,其偏移地址是2000H,(DS)=3000H, (32000H)=4545H。 执行指令: MOV AX,BUF 段寄存器 执行后:(AX)=? 段首址 图形表示: 指令 左移4位 EA 执行:(32000H)→(AX) A作数 执行后:(AX)=4545H BVCK
【例3.2】寄存器和存储器内容为:(AX)=1212H,BUF为 数据段定义的变量,其偏移地址是2000H,(DS)=3000H, (32000H)=4545H。 执行指令:MOV AX ,BUF 执行后:(AX)=? 图形表示: 执行:(32000H)→(AX) 执行后:(AX)=4545H
313寄存器寻址 定义:操作数直接存放在CPU的内部寄存器中(如:寄存器AX BX、CX、DX等)的寻址方式称为寄存器寻址方式。 例如: MOV DS,AX MOV AL BH 特点: (1)操作数放在CPU的通用寄存器中。 16位:AX、BX、cX、DX、SIDI、SP、IP 8位:AH、AL、BH、BL、cH、CL、DH、DL 通常放在AX、AH、AL中,因为AX是累加器,结果一般放在 AX中,这样指令会更短些 (2)采用寄存器寻址时,操作就在CPU内部进行,不需要使用 总线周期,速度快
3.1.3 寄存器寻址 定义:操作数直接存放在CPU的内部寄存器中(如:寄存器AX、 BX、CX、DX等)的寻址方式称为寄存器寻址方式。 例如:MOV DS,AX MOV AL,BH 特点: (1)操作数放在CPU的通用寄存器中。 16位:AX、BX、CX、DX、SI、DI、SP、IP 8位 :AH、AL、BH、BL、CH、CL、DH、DL 通常放在AX、 AH、AL中,因为AX是累加器,结果一般放在 AX中,这样指令会更短些。 (2)采用寄存器寻址时,操作就在CPU内部进行,不需要使用 总线周期,速度快
(3)一条指令中,既可以对源操作数采用寄存器寻址,也可以对 目的操作数采用寄存器寻址,也可二者均采用寄存器寻址。 【例3.3】下列程序执行后,(AX)=?,(BX)=? MOV AX. 1234H MOV BX. 5678H ADD AX, BX 该程序中MoV指令为数据传送指令操作符,ADD指令为加法 指令操作符,三条指令皆为双操作数指令。第一、二条指令AX、 Bx皆为目的操作数地址,为立即数寻址方式。第三条指令中, 八X为目的操作数地址,BX为源操作数地址。源地址和目的地址 BYCK 皆为寄存器寻址方式
(3)一条指令中,既可以对源操作数采用寄存器寻址,也可以对 目的操作数采用寄存器寻址,也可二者均采用寄存器寻址。 【例3.3】下列程序执行后,(AX)=?,(BX)=? MOV AX,1234H MOV BX,5678H ADD AX,BX 该程序中MOV指令为数据传送指令操作符,ADD指令为加法 指令操作符,三条指令皆为双操作数指令。第一、二条指令AX、 BX皆为目的操作数地址,为立即数寻址方式。第三条指令中, AX为目的操作数地址,BX为源操作数地址。源地址和目的地址 皆为寄存器寻址方式
314寄存器间接寻址 操作数是在存储器中,但是,操作数的有效地址EA(偏移量) 在以下四个寄存器SI、D、BP、BX之一中。可以分成两种情况: (1)以SI、D、BX间接寻址,则通常操作数在现行数据段区域中 即数据段寄存器(DS)×16加上SI、D、BX中的16位偏移量,为 操作数的地址, 例如:MoAX,[S,操作数地址是:(DS)×16+(SI) (2)以寄存器BP间接寻址,则操作数在堆栈段区域中。即堆栈段 寄存器(SS)×16与BP的内容相加作为操作数的地址, 例如:MoAX,[BP],操作数地址是:(Ss)×16+(BP) 若在指令中规定是段超越的,则BP的内容也可以与其它的段寄 存器相加,形成操作数地址 例如: MOV AX,DS:[BP]:操作数地址是:(DS)×16+(BP
3.1.4 寄存器间接寻址 操作数是在存储器中,但是,操作数的有效地址EA(偏移量) 在以下四个寄存器SI、DI、BP、BX之一中。可以分成两种情况: (1)以SI、DI、BX间接寻址,则通常操作数在现行数据段区域中, 即数据段寄存器(DS)×16加上SI、DI、BX中的16位偏移量,为 操作数的地址, 例如:MOV AX, [SI] ,操作数地址是:(DS)╳ 16 +(SI) (2)以寄存器BP间接寻址,则操作数在堆栈段区域中。即堆栈段 寄存器(SS) × 16与BP的内容相加作为操作数的地址, 例如:MOV AX,[BP] , 操作数地址是:(SS) ╳ 16 +(BP) 若在指令中规定是段超越的,则BP的内容也可以与其它的段寄 存器相加,形成操作数地址。 例如:MOV AX,DS:[BP] :操作数地址是:(DS) ╳ 16 +(BP)
特点: (1)指令中的基址寄存器与段寄存器的配对关系为: Bx、SI、D--DS,BP---Ss (2)如果要对其他段寄存器所指出的区域进行寻址,则在指令中 应指出指定超越段前缀。 (3)寄存器间接寻址方式适用于表格处理。执行完一条指令后, 只需修改寄存器的内容(+1、+2、…)就可取出表格中的相应 项。 (4)间址的寄存器用“[]括起来,以区别寄存器寻址
特点: (1)指令中的基址寄存器与段寄存器的配对关系为: BX、SI、DI----DS, BP----SS (2)如果要对其他段寄存器所指出的区域进行寻址,则在指令中 应指出指定超越段前缀。 (3)寄存器间接寻址方式适用于表格处理。执行完一条指令后, 只需修改寄存器的内容(+1、+2、……)就可取出表格中的相应 项。 (4)间址的寄存器用“[ ]”括起来,以区别寄存器寻址