资源描述:
《的指令系统及汇编程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、★8086的寻址方式★8086指令系统的概括★8086指令系统★汇编语言程序设计及上机调试第四章8086的指令系统及汇编程序设计指令要解决的问题任何一条指令都是有操作码和操作数组成:例如:MOVAX,2000H;B80020进行什么操作(由操作码来实现)指令涉及的操作数和操作结果放在哪里(操作数来实现)指令要解决的问题指令有单操作数、双操作数和无操作数之分。如果是双操作数指令,要用逗号将两个操作数分开,逗号右边的操作数称为源操作数,逗号左边的操作数称为目的操作数。例如指令MOVAX,CX;双操作数INCAL;单操作数ADD;;无操作数指令中提供操作数或操作数
2、地址的方法寻址方式是指如何对指令代码中操作数字段进行解释以找到操作数一.寻址方式的定义操作数的种类(1)立即操作数:指令要操作的数据在指令代码中,MOVAL,10H;指令码B010.(2)寄存器操作数:指令要操作的数据在CPU的寄存器中,MOVAL,BL;指令码88D8.(3)存储器操作数:指令要操作的数据在存储器(内存)中,MOVAL,[1234H];指令码A03412.(4)I/O端口操作数:指令要操作的数据来自或送到I/O端口,例如:INAL,20H;指令码E420OUT20H,AL;指令码E620有效地址EA(EffectiveAddress)当80
3、86CPU的执行部件EU需要读/写存储器操作数时,它必须把一个偏移地址送给总线接口部件BIU。BIU把这个偏移地址和段地址的首址相加,产生20位物理地址,然后执行存取操作数所需的总线周期。寻址所需的偏移地址即为有效地址,用EA表示。它是一个16位的无符号数,代表被寻址的操作数在存储器中的位置距离该段起点的字节数。如图所示:二.寻址方式的分类1.立即数寻址2.寄存器寻址3.存储器寻址(存储器直接寻址,寄存器间接寻址,寄存器相对寻址,基址加变址寻址)4.I/O端口寻址指令的操作数包含在指令码中.例:MOVAX,1234H其指令码为B834121、立即寻址1、立即
4、数不但可以送到寄存器中,也可以送到一个存储单元(8位)中或两个连续的存储单元(16位)中去,例MOV[1200H],1234H2、立即数只能做源操作数,不能做目的操作数;3、以A~F打头的数字出现在指令中时,前面一定要加一个数字0,以免与其它符号相混淆,例如MOVAX,0FF00H注意问题2.寄存器寻址指令的操作数在CPU的内部寄存器中,寄存器名在指令中指出。INCCX;指令码41INCDX;指令码42MOVAX,1234HMOV[1234H],BX;指令码891E34121、对于16位操作数,寄存器可以是AX、BX、CX、DX、SI、DI、SP和BP等,对
5、于8位操作数,寄存器则用AH、AL、BH、BL、CH、CL、DH和DL。2、源操作数的长度必须与目的操作数一致,例如MOVCL,AH注意问题3、存储器寻址在存储器寻址方式中,要寻址的数据位于存储器(内存)中,存储单元的有效地址由指令或寄存器指出,而寄存器可以为立即数或BX、BP、SI、DI之一,即有效地址等于其中一个寄存器的值:存储器寻址可分为以下四种:指令直接给出存储器操作数的有效地址.例如:MOVAX,[4000H];A10040(1)存储器直接寻址以BX寄存器进行间接寻址时,默认的段寄存器为DS,因为BX称为基址寄存器,也称为数据段基址寻址。例如:MO
6、VAX,[BX];设DS=5000H,BX=3000H,则本指令在执行时,将53000H和53001H两单元的内容送入AX中。(2)以BX寄存器进行间接寻址-数据段基址寻址以BP寄存器进行间接寻址时,默认的段寄存器为SS,因为BP称为基址寄存器,也称为堆栈段基址寻址。例如:MOVAX,[BP];设SS=4000H,BP=2000H,则本指令在执行时,将42000H和42001H两单元的内容送入AX中。(3)以BP寄存器进行间接寻址-堆栈段基址寻址1、如果要对代码段、堆栈段或扩展段寄存器所指的区域进行寻址,则必须在指令前用前缀指出段寄存器名,这就是段超越,例如
7、:ES:MOVAX,[BX]或MOVAX,ES:[BX]设ES=3000H,BX=3000H,则本指令在执行时,将33000H和33001H两单元的内容送入AX中。注意问题2、在基址寻址中,操作数位于位于内存中,操作数的有效地址由基址寄存器BX或BP与一个位移量相加给出。举例:MOVAL,[BX+1234H];等价于:MOVAL,1234H[BX]假定BX=1000H,DS=1000H则:结果,AL=78H1000H:3、基址寻址的格式:[BX+位移量][BP+位移量]位移量的范围:补码表示的8位或16位(-128~127)或(-32768~32767)也可
8、以是变量的形式MOVAL,data[BX]MOVAL