资源描述:
《汇编材料 第3章 80X86的指令系统和寻址方式》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第三章80X86的指令系统和寻址方式难重点重点理解8086常用指令的功能,熟悉80X86的各种寻址方式指令系统一组指令的集合操作码操作数...操作数指令寻址方式与数据有关的寻址方式与转移地址有关的寻址方式1.8086的寻址方式与数据有关的寻址方式:以MOV指令为例(MOV指令格式:MOVreg/mem,SRC)立即寻址MOVAX,3069H寄存器寻址MOVAL,BH直接寻址MOVAX,[2000H]寄存器间接寻址MOVAX,[BX]寄存器相对寻址MOVAX,COUNT[SI]基址变址寻址MOVAX,[BP][DI]相对基址变
2、址寻址MOVAX,MASK[BX][SI]存储器寻址(1)立即寻址方式:操作数直接在指令中给出,即操作数随指令存放于代码段中。指令格式:MOVAL,5MOVAX,3064HMOVAL,‘A’MOVAX,1946H注意:*只能用于SRC字段MOV40H,AL*SRC和DST的字长一致MOVAH,3064H*此方式不能对段寄存器和标志寄存器赋值。(2)寄存器寻址方式:操作数存于寄存器中,指令中指定寄存器号。MOVAX,CXMOVAL,BHMOVAX,3064H注意:*字节寄存器只有AHALBHBLCHCLDHDL*SRC和DST
3、的字长一致MOVAH,BX*CS不能用MOV指令改变MOVCS,AX(3)直接寻址方式:操作数存放于存储单元中,该存储单元的16位偏移地址(EA)紧跟在操作码之后,直接包含在指令中,存放在代码段中。例:MOVAX,[2000H]EA=2000H,假设(DS)=3000H,那么PA=32000H503032000AHAL3050(AX)=3050H例:MOVBX,[1000H]注意:*隐含的段为数据段DS*若操作数不在数据段而是在其他段(如附加段)中,则可使用段跨越前缀MOVAX,ES:[2000H]*操作数地址也可由变量(符
4、号地址)表示,但要注意变量的属性VALUEDB10(在数据段中定义)MOVAH,VALUEMOVAX,VALUEMOVAX,WORDPTRVALUE例:MOVAX,[3000H]低地址高地址CS段操作码00H30H34H12H34H12HAXDS段5000053000DS50000300053000+(4)寄存器间接寻址:操作数存于存储单元中,该存储单元的EA存放在基址寄存器BX、BP或变址寄存器SI、DI中。MOVAX,[BX]PA=16d(DS)+(BX)MOVAX,ES:[BX]PA=16d(ES)+(BX)MOV
5、AX,[BP]PA=16d(SS)+(BP)例:MOVCX,[DI]注意:*用BX存放EA时,隐含的段为数据段;而用BP时,则隐含的段为堆栈段,同样可以使用段跨越前缀。*不允许使用AX、CX、DX存放EAMOVAX,[CX]*SRC和DST的字长一致MOVDL,[BX];[BX]指示一个字节单元MOVDX,[BX];[BX]指示一个字单元*适于数组、字符串、表格的处理低地址高地址CS段操作码34H12H34H12HAXSS段7000073000SS70000300073000+例:MOVAX,[BP]BP有效地址=(BX)(
6、BP)8位(SI)16位(DI)+位移量(5)寄存器相对寻址方式:操作数的EA是一个基址寄存器(BX,BP)或变址寄存器(SI,DI)的内容和指令中指定的8位或16位位移量之和。实际上是在寄存器间接寻址的基础上加了一个8位或16位的位移量。因此,该方式与寄存器间接寻址方式类似。指令格式:MOVAX,COUNT[SI]或MOVAX,[COUNT+SI]假设(DS)=4000H,(SI)=0100H,COUNT=2000H,则:PA=42100H假设(42100H)=0050H,那么(AX)=0050H*适于数组、字符串、表格的处理
7、*这个COUNT在使用前要在前面定义,它是一个符号地址。低地址高地址CS段操作码00H15H34H12H34H12HAXFS段7000073500BX150073500+例:MOVDX,[BX+1500]DS700002000(6)基址变址寻址方式:EA是一个基址寄存器(BX,BP)和一个变址寄存器(SI,DI)的内容之和。两个寄存器号均在指令中指定。指令格式:MOVAX,[BX][DI]MOVAX,[BX+DI]MOVAX,ES:[BX][SI]MOVAX,[BX][SI]有效地址=(BX)(SI)(BP)(DI)+注意:*使
8、用BX时,隐含的段为数据段;使用BP时,则为堆栈段*适于数组、字符串、表格的处理*必须是一个基址寄存器和一个变址寄存器的组合MOVAX,[BX][BP]MOVAX,[SI][DI](7)相对基址变址寻址方式:操作数的EA是一个基址寄存器和一个变址寄存器的内容