资源描述:
《接口与总线技术课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《微机原理及应用》电子通信工程系王春彦第3章指令系统3.1指令系统概述3.2寻址方式3.38086指令系统3.380286、80386扩充指令3.18086指令系统概述一条指令需要指出两部分内容:1.要进行什么操作(由操作码指出)2.指令所涉及的操作数和操作结果存放的位置例:ADDAL,5;(加法指令)3.2寻址方式操作数寻址寻找指令中操作数所在地址的方法(指令中关于如何计算操作数有效地址的方法)。指令中可以直接给出所使用的操作数本身,或者只给出操作数所在的寄存器,存储器或I/O端口的地址或地址的计算方法。计算机按照指令给出的寻址方式求出操作数的有效地址和存取操作数的过程称为寻址操作。指令地址
2、寻址JMPnext;ADDAL,5;(加法指令)ADDAL,BL;(加法指令)3.2寻址方式立即数寻址寄存器寻址直接寻址寄存器间接寻址1.立即数寻址操作数直接由指令给出例如:MOVBL,60H;(BL=60H)MOVAX,3100H;(AX=3100H)特点:不需要使用总线周期,速度比较快说明:立即数可以是8位,也也可以是16位只能为整数只能作为源操作数2.寄存器寻址操作数在CPU内的寄存器中,指令中只给出寄存器名例如:MOVAX,BX;将BX内容传到AX特点:不需要使用总线周期,执行速度快说明:16位寄存器为AX,BX,CX,DX,SI,DI,SP,BP8位寄存器为AH,AL,BH,BL,C
3、H,CL,DH,DL源操作数、目的操作数同时可以使用寄存器寻址2.寄存器寻址MOVSS,AX执行指令前:(AX)-3064H(SS)-1234H执行指令后:(SS)-3064H(AX)保持不变1234H3064HSSAX3064H3064H执行指令前:执行指令后:3.直接寻址操作数在存储器中,存储单元的有效地址由指令直接给出。例如:MOVAX,[3100H](MOVAX,3100H)特点:需要1个总线周期。说明:默认的段寄存器为DS,如果不是DS,则需要用前缀指出。MOVBX,ES:[3100H]将ES段的3100H和3101H两单元的内容取到BXMOVAX,[3100H]物理地址:PA=16
4、d×(DS)+EA∵(DS)=6000H;∴PA=63100H;∵(63100)=3050H∴执行指令后(AX)=3050H…操作码0031…50H30H…代码段数据段DS6000H60000H+3100H63100H63100HAHAL30H50H3.寄存器间接寻址操作数在存储器中,存储单元的有效地址在寄存器中。特点:需要1个以上总线周期。说明:寄存器可为BX,BP,SI,DI。如果没有指明具体的段寄存器,默认的段寄存器为DS;当寄存器为BP时,段寄存器为SS.允许在指令中使用8位或16位的偏移量。3.寄存器间接寻址有效地址EA=[BX][BP][SI][DI]直接[3100H]3.寄存器间
5、接寻址(1)以SI,DI,BX为寄存器进行间接寻址。默认段寄存器DS操作数物理地址为:PA=16d×(DS)+(BX)PA=16d×(DS)+(SI)PA=16d×(DS)+(DI)若使用其它段寄存器,需要前缀指明MOVBX,[DI](MOVBX,DI)假设(DS)=6000H(DI)=2000H∴PA=62000H;∵(62000)=50A0H∴(BX)=50A0H…A0H50H…数据段DS6000H60000H+2000H62000H62000HBHBL50HA0HDI2000H3.寄存器间接寻址(2)以BP为寄存器进行间接寻址。默认段寄存器SS操作数物理地址为:PA=16d×(SS)+(
6、BP)若使用其它段寄存器,需要前缀指明MOV[BP],AX假设:(SS)=1000H(BP)=3000H(AX)=1234H则PA=13000H;∴(13000)=1234H…34H12H…堆栈段SS1000H10000H+3000H13000H13000HAHAL12H34HBP3000H4.寄存器相对寻址有效地址EA=[BX][BP][SI][DI]8位的位移量16位的位移量+假设:(SS)=5000H(BP)=3000HCOUNT=2040H(AX)=1234H则EA=5040HPA=55040H;(55040)=5548H(AX)=5548H…48H55H…堆栈段SS5000H5000
7、0H3000H+2040H55040H55040HAHAL55H48HBP3000HMOVAX,COUNT[BP](或MOVAX,[BP+COUNT])(或MOVAX,[BP]+COUNT)其中COUNT为16位位移量50000H代码段用途:这种寻址方式一般用于表格处理。表格首地址为COUNT,修改基址或变址寄存器来取得表格中其它元素的值例如:某数据表的首地址为COUNT欲读取表中第n个数据,存放