计算机微机原理8066指令.ppt
《计算机微机原理8066指令.ppt》由会员分享,可在线阅读,更多相关《计算机微机原理8066指令.ppt(159页珍藏版)》请在三一办公上搜索。
1、1,第3章,8086指令系统,2,本章内容,3.1 基本数据类型3.2 8086的指令格式3.3 8086指令的操作数寻址方式3.4 8086的通用指令总结,3,3.1 基本数据类型,字节字双字四字双四字,注意基本数据类型在内存中的字节顺序,4,字、双字、四字和双四字的对齐,当数据对齐时,对字来说,地址要被2整除,对双字、四字和双四字来说,地址要被4、8和16整除。,应该将数据的地址对齐,以取得较高的存取速度,80X86处理器能够访问任何有效地址的数据类型,而不需要对齐数据。但对于不对齐地址的数据,处理器访问时,需要额外的访问存储器时间。,5,3.1.2 数字数据类型,(1)无符号整数,范围从
2、0到2n 1,其中,n为整数的位数。,(2)符号整数,用补码表示,范围从-2n-1到2n-1-1。其中,n为整数的位数。,6,3.2 8086的指令格式,标号:助记符 参数1,参数2;注释,各部分之间至少用一个空格作为间隔,带方括号部分表示任选项,助记符:说明计算机要执行哪种操作,用英文单词的缩写表示。,参数:指令执行的参与者,即各种操作的对象。参数1是目的操作数,参数2是源操作数,BACK,7,3.3 8086指令的操作数寻址方式,寻找操作数存放地址的方式称为寻址方式。,什么是寻址方式,注意操作数的表达方法,为展开8086指令系统做好准备,8,操作数存放位置,指令中 寄存器 存储器 I/O端
3、口,9,传送指令MOV(move)的格式,MOV dest,src;destsrc MOV指令的功能是将源操作数src传送至目的操作数dest,例如:MOV AL,05H;AL05HMOV BX,AX;BXAXMOV AX,SI;AXDS:SIMOV AX,BP+06H;AXSS:BP+06HMOV AX,BX+SI;AXDS:BX+SI,10,1、立即数寻址方式,操作数直接存放在指令中。操作数称为立即操作数。,MOV CL,5 MOV AX,3100H,11,立即寻址注意问题,*只能用于源操作数字段,12,2、寄存器寻址方式,操作数存放在寄存器中,指令指定寄存器号。对16位操作数,寄存器可以
4、是AX、BX、CX、DX、SI、DI、SP、BP、DS、CS、ES、SS等。对8位操作数,寄存器可以是AL、AH、BL、BH、CL、CH、DL和DH等。,如:MOV AX,BX,13,3、直接寻址方式,有效地址在指令中直接给出默认的段地址在DS段寄存器,可使用段超越前缀改变MOV AX,2000H;AXDS:2000HMOV AX,ES:2000H;AXES:2000H,表示其中为偏移地址,段超越前缀,即偏移地址,直接寻址,14,AX(Accumulator)累加器BX(Base)基址寄存器CX(Count)计数寄存器DX(Data)数据寄存器SI(Source Index)是源变址寄存器DI
5、(Destination Index)是目的变址寄存器SP(Stack Pointer)为堆栈指针寄存器BP(Base Pointer)为基址指针寄存器,通用寄存器的名称与符号,数据寄存器,指针寄存器,15,4、寄存器间接寻址方式,操作数存放在存储器中,而操作数的地址的16位偏移量可在BX、BP或SI、DI寄存器中。,1、选择BX、SI、DI作为间址寄存器,则操作数在数据段中,所以用DS寄存器的内容作为段地址。操作数的物理地址为:,例 1 MOV AX,BX,寄存器间接寻址,16,寄存器间接寻址(续),2、选择BP作为间址寄存器,则操作数在堆栈段中,所以用SS寄存器的内容作为段地址。操作数的物
6、理地址为:,物理地址=(SS)左移4位+(BP),例2 MOV AX,BP,说明:指令中也可指定段超越前缀来取得其他段中的数据。如:,17,MOV AX,ES:BX 源操作数的物理地址为:(ES)左移4位+(BX)MOV AX,DS:BP源操作数的物理地址为:(DS)左移4位+(BP),18,以下情况不能段超越,程序的指令序列必须安排在代码段程序使用的堆栈一定在堆栈段串操作的目的区必须是附加段,19,5、寄存器相对寻址方式,有效地址是寄存器内容与有符号8位或16位位移量(补码表示)之和,寄存器可以是BX、BP或SI、DI 有效地址BX/BP/SI/DI8/16位位移量段地址对应BX/SI/DI
7、寄存器默认是DS,对应BP寄存器默认是SS;可用段超越前缀改变,20,寄存器相对寻址指令,MOV AX,SI+06H;AXDS:SI+06HMOV AX,BP+06H;AXSS:BP+06H,寄存器相对寻址,21,6、基址加变址寻址方式,有效地址由基址寄存器(BX或BP)的内容加上变址寄存器(SI或DI)的内容构成:有效地址BX/BPSI/DI段地址对应BX基址寄存器默认是DS,对应BP基址寄存器默认是SS;可用段超越前缀改变,注意:必须一个是基址寄存器,另一个是变址寄存器,不能两个都是基址寄存器,也不能两个都是变址寄存器,22,基址加变址寻址指令,MOV AX,BX+SI;AXDS:BX+S
8、IMOV AX,BP+DI;AXSS:BP+DIMOV AX,DS:BP+DI;AXDS:BP+DI,基址加变址寻址,23,7、相对基址变址寻址方式,有效地址是基址寄存器(BX/BP)、变址寄存器(SI/DI)与一个8位或16位位移量之和:有效地址BX/BPSI/DI8/16位位移量段地址对应BX基址寄存器默认是DS,对应BP基址寄存器默认是SS;可用段超越前缀改变,注意:必须一个是基址寄存器,另一个是变址寄存器,不能两个都是基址寄存器,也不能两个都是变址寄存器,24,相对基址变址寻址指令,MOV AX,BX+DI+06H;AXDS:BX+DI+06H,相对基址加变址寻址,25,多种表达形式,
9、同一寻址方式可以写成不同的形式:MOV AX,BXSI;等同于 MOV AX,BX+SIMOV AX,COUNTSI;等同于 MOV AX,SI+COUNTMOV AX,WNUMBXSI;等同于 MOV AX,WNUMBX+SI;等同于 MOV AX,BX+SI+WNUM,注意:位移量写在的左边,26,寻址方式总结(1),7种寻址方式归纳为3大类:,立即方式:立即数寄存器方式:寄存器操作数存储器方式(直接寻址、寄存器间接寻址、寄存器相对寻址、基址加变址寻址、相对基址加变址寻址):存储器操作数,27,寻址方式总结(2),对于存储器方式,有效地址可以由以下三种成分组成:位移量(Displaceme
10、nt)是存放在指令中的一个8位或16位数,但它不是立即数,而是一个地址。基址(Base)是存放在基址寄存器(BX或BP)中的内容。变址(Index)是存放在变址寄存器(SI或DI)中的内容。,有效地址的计算可用下式表示:EA=基址+变址+位移量它们任意组合使用,可得到不同的寻址方式。,28,寻址方式总结(3),没有指明时,一般的数据访问在DS段;使用BP访问主存,则在SS段默认的情况允许改变,需要使用段超越前缀指令;8086指令系统中有4个:CS:;代码段超越,使用代码段的数据SS:;堆栈段超越,使用堆栈段的数据DS:;数据段超越,使用数据段的数据ES:;附加段超越,使用附加段的数据,BACK
11、,29,3.4 8086的通用指令,16位8086指令系统是Intel 80 x86系列微处理器指令系统的基础,30,学习指令的注意事项,指令的功能该指令能够实现何种操作。通常指令助记符就是指令功能的英文单词或其缩写形式指令支持的寻址方式该指令中的操作数可以采用何种寻址方式指令对标志的影响该指令执行后是否对各个标志位有影响,以及如何影响(参见P425)其他方面该指令其他需要特别注意的地方,如指令执行时的约定设置、必须预置的参数、隐含使用的寄存器等,31,指令遵循的规则,两个操作数的类型要一致两个操作数不能都是存储器只有MOV、PUSH、POP指令允许以段寄存器作为操作数目的操作数不能是立即数和
12、CS单操作数指令中的操作数不能是立即数,32,数据传送指令,数据传送是计算机中最基本、最重要的一种操作传送指令把数据从一个位置传送到另一个位置只有这种通用传送指令(除了XCHG以外),才是惟一的允许以段寄存器作为操作数的指令。,33,1、MOV(MOVE)指令,此指令不影响标志位,34,MOV指令举例,mov al,4;al4,字节传送mov ax,bx;axbx,字传送mov dx,bp;dxss:bp,35,2、交换指令XCHG(exchange),XCHG OPRD1,OPRD2执行操作:OPRD1 OPRD2,数据传送指令不影响标志位,36,XCHG指令数据交换方向,寄存器与寄存器之间
13、对换数据寄存器与存储器之间对换数据不能在存储器与存储器之间对换数据段寄存器不能作为操作数,也可以是8位寄存器,37,xchg ax,bxxchg ah,alxchg ax,2000hxchg al,2000h,XCHG指令举例,XCHG AX,DLXCHG BX,0100H,这些都是错误指令!,38,3、堆栈操作指令,堆栈是以“后进先出”方式工作的一个存储区(内存区),堆栈操作必须在堆栈段中进行,其段地址由堆栈段寄存器SS确定。它的一端固定,另一端浮动,固定的一端叫栈底,浮动的一端叫栈顶。堆栈只有一个出入口,即当前栈顶;用堆栈指针寄存器SP指定,SP的内容是栈顶的偏移地址。进栈指令和出栈指令都
14、必须根据当前SP的内容来确定进栈或出栈的单元,而且必须及时修改SP的值,使SP的内容指向当前的栈顶。栈顶是地址较小的一端,39,堆栈操作指令,堆栈只有两种基本操作:进栈和出栈,对应两条指令PUSH和POP堆栈操作的单位是字指令不影响标志位,40,入栈指令PUSH(Push word onto the stack),说明:OPRD可以使用除立即数以外的任何一种寻址方式.,这是错误指令,PUSH 1234H,PUSH r16/m16/seg,push axpush 2000h,41,出栈指令POP(Pop word from the stack),注意:POP指令不允许使用立即数和CS寄存器,PO
15、P 1234H POP CS,这些都是错误指令,POP r16/m16/seg,pop axpop 2000h,42,PUSH指令举例,例 PUSH AX,已知指行指令前(SP)=0305H,(AX)=8057H指令的执行过程如下:,0305H,80H,57H,0304H,0303H,(SP)=0303H,43,POP指令举例,例 POP BX已知执行指令前,(SP)=0303H,(BX)=1234H指令的执行过程如下:,指令执行后,(SP)=0305H,(BX)=8057H,BL,BH,44,4、输入输出指令,8086通过输入输出指令与外设进行数据交换;呈现给程序员的外设是端口(Port)即
16、I/O地址8086用于寻址外设端口的地址线为16条,端口最多为21665536(64K)个,端口号为0000HFFFFH每个端口用于传送一个字节的外设数据输入输出指令不影响标志位,45,输入输出寻址方式,8086的端口有64K个,无需分段,设计有两种寻址方式直接寻址:只用于寻址00HFFH前256个端口,操作数i8表示端口号间接寻址:可用于寻址全部64K个端口,DX寄存器的值就是端口号对大于FFH的端口只能采用间接寻址方式,46,(1)输入指令IN(Input),将外设数据传送给CPU内的AL/AX,IN AL,n;字节输入:ALI/O端口(n直接寻址)IN AL,DX;字节输入:ALI/O端
17、口(DX间接寻址)IN AX,n;字输入:AXI/O端口(n直接寻址)IN AX,DX;字输入:AXI/O端口(DX间接寻址),n取值000FFH,47,;直接寻址,字节量输入in al,21hmov ah,alin al,20h;直接寻址,字量输入in ax,20h;间接寻址,字量输入mov dx,20hin ax,dx,两段功能相同 字量数据传送实际上实现了连续的两个端口地址的字节量传送,IN指令举例,48,(2)输出指令OUT(Outout),将CPU内的AL/AX数据传送给外设,OUT n,AL;字节输出:I/O端口AL(n直接寻址)OUT DX,AL;字节输出:I/O端口AL(DX间
18、接寻址)OUT n,AX;字输出:I/O端口AX(n直接寻址)OUT DX,AX;字输出:I/O端口AX(DX间接寻址),49,5、(符号)扩展指令,什么是符号扩展?,50,符号扩展的概念,符号扩展是指用一个操作数的符号位(即最高位)形成另一个操作数,另一个操作数的各位是全0(正数)或全1(负数)。符号扩展不改变数据大小对于数据64H(表示数据100),其最高位D7为0,符号扩展后高8位都是0,成为0064H(仍表示数据100)对于数据ffd2H(表示有符号数46),其最高位D15为1,符号扩展后高16位都是1,成为ffffffd2H(仍表示有符号数46),51,符号扩展的实际意义,将数据进行
19、符号扩展是为了产生一个位数加倍、但数值大小不变的结果,以满足有些指令对操作数位数的要求,例如倍长于除数的被除数,再如加、减、乘运算的操作数位数相同。,52,CBW(convert byte to word);AL的符号扩展至AH;如AL的最高有效位是0,则AH00;AL的最高有效位为1,则AHFFH。AL不变,CWD(convert word to double word);AX的符号扩展至DX;如AX的最高有效位是0,则DX00;AX的最高有效位为1,则DXFFFFH。AX不变,符号扩展指令,不影响标志位,53,符号扩展指令举例,对无符号数除法应该采用直接使高8位或高16位清0的方法,获得倍
20、长的被除数,54,3.4.2 二进制算术运算指令,8086指令系统提供加、减、乘、除四种基本的算术运算操作。这些操作都可用于字节或字的运算,也都可以用于带符号数与无符号数的运算。若是符号数,则用补码表示。指令运算指令会根据运算结果影响状态标志,使用它们时请留心有关状态标志。,55,1、加法指令,ADDADC,56,加法指令ADD(Addition),ADD r,im/r/mem;rrim/r/memADD mem,im/r;memmemim/r,ADD指令将源与目的操作数相加,结果送到目的操作数ADD指令按状态标志的定义相应设置,57,带进位加法指令ADC(Add with carry),AD
21、C指令将源与目的操作数相加,再加上进位CF标志,结果送到目的操作数ADC指令按状态标志的定义相应设置ADC指令主要与ADD配合,实现多精度加法运算,ADC r,im/r/mem;rrim/r/memCFADC mem,im/reg;memmemim/rCF,58,mov ax,4652h;ax=4652hadd ax,0f0f0h;ax=3742h,CF=1mov dx,0234h;dx=0234hadc dx,0f0f0h;dx=f325h,CF=0;DX.AX0234 4652HF0F0 F0F0HF325 3742H,ADC指令举例,59,2、减法指令,SUBSBB,60,减法指令SUB
22、(subtract),SUB指令将目的操作数减去源操作数,结果送到目的操作数SUB指令按照定义相应设置状态标志,SUB r,im/r/mem;rrim/r/memSUB mem,im/r;memmemim/r,61,带借位减法指令SBB(subtract with borrow,SBB指令将目的操作数减去源操作数,再减去借位CF(进位),结果送到目的操作数。SBB指令按照定义相应设置状态标志SBB指令主要与SUB配合,实现多精度减法运算,SBB r,im/r/mem;rrim/r/memCFSBB mem,im/r;memmemim/rCF,62,MULIMUL,3、乘法指令,63,乘法指令,
23、MUL r8/mem8;无符号字节乘法;AXALr8/mem8MUL r16/mem16;无符号字乘法;DX.AXAXr16/m16,IMUL r8/mem8;有符号字节乘法;AXALr8/m8IMUL r16/mem16;有符号字乘法;DX.AXAXr16/m16,MUL(Multiplication)无符号数乘法指令,IMUL(Integer Multiplication)带符号数乘法指令,64,乘法指令的功能,乘法指令分无符号和有符号乘法指令乘法指令的源操作数显式给出,隐含使用另一个操作数AX和DX字节量相乘:AL与r8/m8相乘,得到16位的结果,存入AX字量相乘:AX与r16/m16
24、相乘,得到32位的结果,其高字存入DX,低字存入AX,65,乘法指令对标志的影响,乘法指令如下影响OF和CF标志:MUL指令若乘积的高一半(AH或DX)为0,则OF=CF=0;否则OF=CF=1IMUL指令若乘积的高一半(AH或DX)是低一半(AL或AX)的符号扩展,则OF=CF=0;否则均为1乘法指令对其他状态标志没有定义,对标志没有定义:指令执行后这些标志是任意的、不可预测(就是谁也不知道是0还是1)对标志没有影响:指令执行不改变标志状态,66,乘法运算指令举例,mov al,0b4h;al=b4h=180mov bl,11h;bl=11h=17mul bl;ax=Obf4h=3060;O
25、F=CF=1,AX高8位不为0mov al,0b4h;al=b4h=76mov bl,11h;bl=11h=17imul bl;ax=faf4h=1292;OF=CF=1,AX高8位含有效数字,67,4、除法指令,DIVIDIV,68,DIV r8/m8;无符号字节除法:ALAXr8/m8的商,AhAXr8/m8的余数DIV r16/m16;无符号字除法:;AXDX.AXr16/m16的商,DXDX.AXr16/m16的余数,IDIV r8/m8;有符号字节除法:ALAXr8/m8的商,AhAXr8/m8的余数IDIV r16/m16;有符号字除法:;AXDX.AXr16/m16的商,DXDX
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 微机 原理 8066 指令

链接地址:https://www.31ppt.com/p-6023691.html