第4章指令系统 R BX DS 指 O030H 2000H 左移4位 0036H 20036H DOS0H 执行:(20036H)+(AX)→20036H 执行后:(AX)=0040H,(BX)=0030H,(DS =2000H,(20036H)=0090H。 返回本
第4章 指令系统 执行:(20036H)+(AX)→20036H 执行后:(AX)=0040H,(BX)=0030H,(DS) =2000H,(20036H)=0090H。 返回本节
第4章指令系统 (4)基址变址寻址 基址变址寻址方式是在指令中给出一个基址寄存器名 和一个变址寄存器名,两者内容之和作为操作数的有效地 址。基址寄存器为BX或BP,变址寄存器为SI或D,但指令 中不能同时出现两个基址寄存器或两个变址寄存器。如果 基址寄存器为BX,则段寄存器使用DS;如果基址寄存器用 BP,则段寄存器用SS。 汇编格式:[BR+IR] 功能:操作数存放在存储器,BR的内容加IR的内容加 位移量X是操作数的偏移地址EA
第4章 指令系统 (4) 基址变址寻址 基址变址寻址方式是在指令中给出一个基址寄存器名 和一个变址寄存器名,两者内容之和作为操作数的有效地 址。基址寄存器为BX或BP,变址寄存器为SI或DI,但指令 中不能同时出现两个基址寄存器或两个变址寄存器。如果 基址寄存器为BX,则段寄存器使用DS;如果基址寄存器用 BP,则段寄存器用SS。 汇编格式: [BR+IR] 功能:操作数存放在存储器,BR的内容加IR的内容加 位移量X是操作数的偏移地址EA
第4章指令系统 操作数偏移地址EA计算方法如下 [习+SBX作基址寄存器,SI作变址寄存器 EA+DB作基址寄存器,Dl作变址寄存器 [B+S]BP作基址寄存器,作变址寄存器。 [BP]+DB作基址寄存器,DI作变址寄存器 返回本
第4章 指令系统 操作数偏移地址EA计算方法如下 返回本节
第4章指令系统 【例4.6】 例如 MOV AL,[Bx+s]( MOV AL,[BX[s]) 若指令执行前,(Ds)=1000H,(BX) 0010H,(S)=0002H,(10012H)=45H D EA=(BX)+(SI)=0012H, PA=(DS) ×10H+EA=10012H 指令执行后(AL)=45H。 返回本
第4章 指令系统 【例4.6】 例如 MOV AL,[BX+SI](MOV AL,[BX][SI]) 若 指 令 执 行 前 , ( DS)=1000H,(BX)= 0010H,(SI)=0002H,(10012H)=45H 则 EA=(BX)+(SI)=0012H,PA=(DS) ×10H+EA=10012H 指令执行后(AL)=45H。 返回本节
第4章指令系统 (5)跨段问题 按前述规定:若选用B作间址基址寄存器、变址寄存器 或基址寄存器,则操作数在堆栈段,操作数的物理地址PA由 堆栈段寄存器SS的内容左移4位与偏移地址EA相加后形成 则,操作数在数据段,操作数的物理地址PA由数据段寄存器 DS的内容左移4位与偏移EA相加后形成。该规定为系统默认状 态。当要否定默认状态,到非约定段寻找操作数时,必须用 跨段前缀指明操作数的段寄存器名。 汇编格式:段寄存器名:操作数地址。 功能:段寄存器名指明操作数属哪个段
第4章 指令系统 (5) 跨段问题 按前述规定:若选用BP作间址基址寄存器、变址寄存器 或基址寄存器,则操作数在堆栈段,操作数的物理地址PA由 堆栈段寄存器SS的内容左移4位与偏移地址EA相加后形成;否 则,操作数在数据段,操作数的物理地址PA由数据段寄存器 DS的内容左移4位与偏移EA相加后形成。该规定为系统默认状 态。当要否定默认状态,到非约定段寻找操作数时,必须用 跨段前缀指明操作数的段寄存器名。 汇编格式:段寄存器名:操作数地址。 功能:段寄存器名指明操作数属哪个段