微机原理与接口技术_中科大第四版_ppt.ppt_第1页
微机原理与接口技术_中科大第四版_ppt.ppt_第2页
微机原理与接口技术_中科大第四版_ppt.ppt_第3页
微机原理与接口技术_中科大第四版_ppt.ppt_第4页
微机原理与接口技术_中科大第四版_ppt.ppt_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,微型计算机原理及其应用8086/8088的指令系统,2,第三章:8086/8088的指令系统,寻址方式指令系统,3,第三章:8086/8088的指令系统,寻址方式指令系统,4,第三章:8086/8088的指令系统寻址方式,什么叫指令?指令系统?寻址方式?指令:计算机提供给用户的硬件命令。指令系统(集):指令的集合。操作码:指计算机所要执行的操作,即指出操作类型,是一种助记符。操作数:指在指令执行操作的过程中所需要的操作数。该字段除可以是操作数本身外,也可以是操作数地址或是地址的一部分,还可以是指向操作数地址的指针或其它有关操作数的信息。寻址方式:就是指令中用于说明操作数所在地址的方法,或者说是寻找操作数有效地址的方法。,指令的一般格式,5,第三章:8086/8088的指令系统寻址方式,什么叫指令?指令系统?寻址方式?例如:ADDCL,BH在计算机内部的表示:0000001011001111,6,第三章:8086/8088的指令系统寻址方式,8086/8088指令系统中有哪些寻址方式?立即寻址方式(ImmediateAddressing)寄存器寻址方式(RegisterAddressing)直接寻址方式(DirectAddressing)寄存器间接寻址方式(RegisterIndirectAddressing)寄存器相对寻址方式(RegisterRelativeAddressing)基址加变址寻址方式(BasedIndexedAddressing)相对基址加变址寻址方式(RelativeBasedIndexedAddressing),7,第三章:8086/8088的指令系统寻址方式,8086/8088指令系统中有哪些寻址方式?立即寻址方式(ImmediateAddressing)寄存器寻址方式(RegisterAddressing)直接寻址方式(DirectAddressing)寄存器间接寻址方式(RegisterIndirectAddressing)寄存器相对寻址方式(RegisterRelativeAddressing)基址加变址寻址方式(BasedIndexedAddressing)相对基址加变址寻址方式(RelativeBasedIndexedAddressing),8,第三章:8086/8088的指令系统寻址方式,立即寻址方式(ImmediateAddressing)操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,这种寻址方式也就称为立即数寻址方式。,MOVAX,3412H,9,第三章:8086/8088的指令系统寻址方式,立即寻址方式(ImmediateAddressing)立即操作数可以是8位或16位,并且是指令的一部分。立即数据总是紧跟在指令操作码之后并和操作码一起存放在代码段中,因而立即数据总是和操作码一起被放入BIU中的指令队列里,在指令执行时不需再存取存储器。MOVAH,80HADDAX,1234HMOVECX,123456HMOVB1,12HMOVW1,3456HADDD1,32123456H其中:B1、W1和D1分别是字节、字和双字单元。以上指令中的第二操作数都是立即数,在汇编语言中,规定:立即数不能作为指令中的第一操作数。该规定与高级语言中“赋值语句的左边不能是常量”的规定相一致。使用立即寻址的指令主要用来给寄存器赋初值。,10,第三章:8086/8088的指令系统寻址方式,8086/8088指令系统中有哪些寻址方式?立即寻址方式(ImmediateAddressing)寄存器寻址方式(RegisterAddressing)直接寻址方式(DirectAddressing)寄存器间接寻址方式(RegisterIndirectAddressing)寄存器相对寻址方式(RegisterRelativeAddressing)基址加变址寻址方式(BasedIndexedAddressing)相对基址加变址寻址方式(RelativeBasedIndexedAddressing),11,第三章:8086/8088的指令系统寻址方式,寄存器寻址方式(RegisterAddressing)操作数包含在CPU的内部寄存器中,如寄存器AX、BX、CX、DX等,指令指定寄存器号。,MOVAX,BX,12,第三章:8086/8088的指令系统寻址方式,寄存器寻址方式(RegisterAddressing)对于16位操作数,寄存器可以是AX,BX,CX,DX,SI,DI,SP或BP;而对8位操作数,寄存器可以是AH,AL,BH,BL,CH,CL,DH或DL。特点:操作数在CPU内,不用通过总线读写,速度快;目的和源操作数均可采用此寻址方式。MOVAX,BX;MOVCL,DL;MOVESI,EDI;INCCX;ROLAH,1;,13,第三章:8086/8088的指令系统寻址方式,8086/8088指令系统中有哪些寻址方式?立即寻址方式(ImmediateAddressing)寄存器寻址方式(RegisterAddressing)直接寻址方式(DirectAddressing)寄存器间接寻址方式(RegisterIndirectAddressing)寄存器相对寻址方式(RegisterRelativeAddressing)基址加变址寻址方式(BasedIndexedAddressing)相对基址加变址寻址方式(RelativeBasedIndexedAddressing),14,第三章:8086/8088的指令系统寻址方式,直接寻址方式(DirectAddressing)操作数的有效地址(EffectiveAddress,EA。在IBMPC中把操作数的偏移地址称为有效地址)是指令的一部分,它与操作码一起存放在代码段中,但操作数一般是在数据段中,因而这种寻址方式是以DS的内容为基准。,MOVAL,DS:2000H(MOVAL,2000H),15,第三章:8086/8088的指令系统寻址方式,直接寻址方式(DirectAddressing)若DS=4000H,则此指令式将数据段中物理地址为42000H单元的内容传送AL寄存器。例:MOVAL,2000H;DS*10H+2000H送AL;MOVAX,2000H;DS*10H+2000H送AL,DS*10H+2000H+1送AH;MOVAL,ES:2000H;这里ES是段超越前缀,所以源操作数是在ES*10H+2000H的内存单元中。MOV3000H,AL;目的操作数采用直接寻址,将AL送DS*10H+3000H的内存单元。,16,第三章:8086/8088的指令系统寻址方式,8086/8088指令系统中有哪些寻址方式?立即寻址方式(ImmediateAddressing)寄存器寻址方式(RegisterAddressing)直接寻址方式(DirectAddressing)寄存器间接寻址方式(RegisterIndirectAddressing)寄存器相对寻址方式(RegisterRelativeAddressing)基址加变址寻址方式(BasedIndexedAddressing)相对基址加变址寻址方式(RelativeBasedIndexedAddressing),17,第三章:8086/8088的指令系统寻址方式,寄存器间接寻址方式(RegisterIndirectAddressing)操作数的有效地址EA存放在基址寄存器(BX或BP)或变址寄存器(DI或SI)中。,MOVAX,BX,18,第三章:8086/8088的指令系统寻址方式,寄存器间接寻址方式(RegisterIndirectAddressing)MOVAL,BX;DS*10H+BX送AL设DS=3000H,BX=2000H,(32000H)=45H,则执行该指令后,AL=45H。MOVAL,BP;SS*10H+BP送AL设DS=2000H,SS=1000H,BP=0100H,(10100H)=3BH,(20100H)=4CH。执行这条指令后,AL=3BH。MOVAX,BX;DS*10H+BX送AL,DS*10H+BX+1送AH,19,第三章:8086/8088的指令系统寻址方式,8086/8088指令系统中有哪些寻址方式?立即寻址方式(ImmediateAddressing)寄存器寻址方式(RegisterAddressing)直接寻址方式(DirectAddressing)寄存器间接寻址方式(RegisterIndirectAddressing)寄存器相对寻址方式(RegisterRelativeAddressing)基址加变址寻址方式(BasedIndexedAddressing)相对基址加变址寻址方式(RelativeBasedIndexedAddressing),20,第三章:8086/8088的指令系统寻址方式,寄存器相对寻址方式(RegisterRelativeAddressing)操作数的有效地址EA是8位或16位的位移量与基址寄存器BX或基址指示器BP或某个变址寄存器(DI或SI)之和。,MOVAl,BX+5,21,第三章:8086/8088的指令系统寻址方式,寄存器相对寻址方式(RegisterRelativeAddressing)MOVAL,5BXMOVAL,BX+5COUNTEQU5MOVAL,COUNTBX以上三个例子是等价的,它执行的操作是:DS*10H+BX+5送AL。这里,5称为位移量(displacement),它可以是8位或16位的二进制数。,22,第三章:8086/8088的指令系统寻址方式,8086/8088指令系统中有哪些寻址方式?立即寻址方式(ImmediateAddressing)寄存器寻址方式(RegisterAddressing)直接寻址方式(DirectAddressing)寄存器间接寻址方式(RegisterIndirectAddressing)寄存器相对寻址方式(RegisterRelativeAddressing)基址加变址寻址方式(BasedIndexedAddressing)相对基址加变址寻址方式(RelativeBasedIndexedAddressing),23,第三章:8086/8088的指令系统寻址方式,基址加变址寻址方式(BasedIndexedAddressing)有效地址EA是由基址寄存器BX(或基址指示器BP)的内容与变址寄存器(DI或SI)的内容之和。,MOVAX,BX+SI,24,第三章:8086/8088的指令系统寻址方式,8086/8088指令系统中有哪些寻址方式?立即寻址方式(ImmediateAddressing)寄存器寻址方式(RegisterAddressing)直接寻址方式(DirectAddressing)寄存器间接寻址方式(RegisterIndirectAddressing)寄存器相对寻址方式(RegisterRelativeAddressing)基址加变址寻址方式(BasedIndexedAddressing)相对基址加变址寻址方式(RelativeBasedIndexedAddressing),25,第三章:8086/8088的指令系统寻址方式,相对基址加变址寻址方式(RelativeBasedIndexedAddressing)操作数EA的有效地址是一个基址寄存器和一个变址寄存器的内容和8位或16位位移量之和。例如:MOVAX,COUNTBXSIMOVAX,COUNTBX+SIMOVAX,BX+SI+COUNT以上三者等价若(DS)=3000H,(BX)=2000H,(SI)=1000H,COUNT=0250H,则物理地址=16d*(DS)+(BX)+(SI)+COUNT=30000+2000+1000+0250=33250H,26,第三章:8086/8088的指令系统寻址方式,段寄存器使用的基本约定,27,第三章:8086/8088的指令系统,寻址方式指令系统,28,第三章:8086/8088的指令系统指令系统,8086/8088指令系统可分为以下六个功能组数据传送(DataTranster)算术运算(Arithmetic)逻辑运算(Logic)串操作(StringMenipulation)程序控制(ProgramControl)处理器控制(ProcessorControl),29,第三章:8086/8088的指令系统指令系统,8086/8088指令系统可分为以下六个功能组数据传送(DataTranster)算术运算(Arithmetic)逻辑运算(Logic)串操作(StringMenipulation)程序控制(ProgramControl)处理器控制(ProcessorControl),30,第三章:8086/8088的指令系统指令系统,数据传送指令通用数据传送指令(MOV、PUSH、POP、XCHG)地址传送指令(LEA、LDS、LES)标志寄存器传送指令(LAHF、SAHF、PUSHF、POPF)累加器专用传送指令(IN、OUT、XLAT)数据传送指令负责把数据、地址或立即数传送到寄存器或存储单元中。,31,第三章:8086/8088的指令系统指令系统,数据传送指令通用数据传送指令(MOV、PUSH、POP、XCHG)地址传送指令(LEA、LDS、LES)标志寄存器传送指令(LAHF、SAHF、PUSHF、POPF)累加器专用传送指令(IN、OUT、XLAT)数据传送指令负责把数据、地址或立即数传送到寄存器或存储单元中。,32,第三章:8086/8088的指令系统指令系统,数据传送指令通用数据传送指令1.MOV(Move)传送格式为:MOVDST,SRC(DST:目的操作数;SRC:源操作数)执行操作:(DST)(SRC)其中:DST可以是通用寄存器、段寄存器、存储器操作数;SRC可以是通用寄存器、段寄存器、存储器操作数、立即数。,33,第三章:8086/8088的指令系统指令系统,数据传送指令通用数据传送指令对于MOV指令应注意几个问题:存储器传送指令中,不允许对IP进行操作,CS不能作为目的操作数;两个操作数中,除立即寻址之外必须有一个为寄存器寻址方式,即两个存储器操作数之间不允许直接进行信息传送;如我们需要把地址(即段内的地址偏移量)为AREA1的存储单元的内容,传送至同一段内的地址为AREA2的存储单元中去,MOV指令不能直接完成这样的传送,但我们可以CPU内部寄存器为桥梁来完成这样的传送:MOVAL,AREA1MOVAREA2,AL两个段寄存器之间不能直接传送信息,也不允许用立即寻址方式为段寄存器赋初值;如:MOVAX,0MOVDS,AX目的操作数,不能用立即寻址方式。,34,第三章:8086/8088的指令系统指令系统,数据传送指令通用数据传送指令2.PUSH(Pushontothestack)进栈指令格式为:PUSHSRC执行操作:(SP)(SP)-2(SP)+1,(SP)(SRC)功能:将数据压入堆栈注意:源操作数可以是CPU内部的16位通用寄存器、段寄存器(CS除外)和内存操作数(所有寻址方式)。入栈操作对象必须是16位数,不能是8位数。例如:MOVAX,0543HPUSHAX,35,第三章:8086/8088的指令系统指令系统,数据传送指令通用数据传送指令3.POP(Popfromthestack)出栈指令格式为:POPDST执行操作:(DST)(SP)+1,(SP)(SP)(SP)+2功能:将数据弹出堆栈注意:对指令执行的要求同入栈指令。例如:POPDXPOPBXPOPDS,36,第三章:8086/8088的指令系统指令系统,数据传送指令通用数据传送指令4.XCHG(Exchange)交换指令格式为:XCHGOPR1,OPR2执行操作:(OPR1)(OPR2)功能:完成数据交换注意:交换指令可把一个字节或一个字的源操作数与目的操作数相交换。交换能在通用寄存器之间、通用寄存器与存储器之间进行。但段寄存器和立即数不能作为一个操作数。例如:XCHGAL,CLXCHGAX,DIXCHGBX,SIXCHGAX,BUFFERXCHGDATASI,DH,XCHGAX,BX;AXBX,37,第三章:8086/8088的指令系统指令系统,数据传送指令通用数据传送指令(MOV、PUSH、POP、XCHG)地址传送指令(LEA、LDS、LES)标志寄存器传送指令(LAHF、SAHF、PUSHF、POPF)累加器专用传送指令(IN、OUT、XLAT)数据传送指令负责把数据、地址或立即数传送到寄存器或存储单元中。,38,第三章:8086/8088的指令系统指令系统,数据传送指令地址传送指令1.LEA(LoadEffectiveAddress)有效地址传送指令格式为:LEAOPRD1,OPRD2功能:把源操作数OPRD2的地址偏移量传送至目的操作数OPRD1。注意:源操作数必须是一个内存操作数目的操作数必须是一个16位的通用寄存器。这条指令通常用来建立串操作指令所须的寄存器指针。例如:LEABX,DI,39,第三章:8086/8088的指令系统指令系统,数据传送指令地址传送指令2.LDS(LoadPointerIntoDS)取地址指针指令格式为:LDSOPRD1,OPRD2功能:完成一个地址指针的传送。地址指针包括段地址部分和偏移量部分。指令将段地址送入DS,偏移量部分送入一个16位的指针寄存器或变址寄存器。注意:源操作数是一个内存操作数,目的操作数是一个通用寄存器/变址寄存器。例如:LDSBX,TABLESI,40,第三章:8086/8088的指令系统指令系统,数据传送指令地址传送指令3.LES(LoadPointerIntoES)取地址指针指令格式为:LESOPRD1,OPRD2功能:这条指令除将地址指针的段地址部分送入ES外,与LDS类似。例如:LESBX,TABLESI,41,第三章:8086/8088的指令系统指令系统,数据传送指令通用数据传送指令(MOV、PUSH、POP、XCHG)地址传送指令(LEA、LDS、LES)标志寄存器传送指令(LAHF、SAHF、PUSHF、POPF)累加器专用传送指令(IN、OUT、XLAT)数据传送指令负责把数据、地址或立即数传送到寄存器或存储单元中。,42,第三章:8086/8088的指令系统指令系统,数据传送指令标志寄存器传送指令LAHF(LOADAHWITHFLAG)功能:将标志寄存器中的SF、ZF、AF、PF和CF(即低8位)传送至AH寄存器,空位没有定义。SAHF(STOREAHWITHFLAG)功能:将寄存器AH的指定位,送至标志寄存器的SF、ZF、AF、PF和CF位(即低8位)。根据AH的内容,影响上述标志位,对OF、DF和IF无影响。PUSHF(PUSHFLAG)功能:将标志寄存器压入堆栈顶部,同时修改堆栈指针,不影响标志位。POPF(POPFLAG)功能:堆栈顶部的一个字,传送到标志寄存器,同时修改堆栈指针,影响标志位。,43,第三章:8086/8088的指令系统指令系统,数据传送指令通用数据传送指令(MOV、PUSH、POP、XCHG)地址传送指令(LEA、LDS、LES)标志寄存器传送指令(LAHF、SAHF、PUSHF、POPF)累加器专用传送指令(IN、OUT、XLAT)数据传送指令负责把数据、地址或立即数传送到寄存器或存储单元中。,44,第三章:8086/8088的指令系统指令系统,数据传送指令累加器专用传送指令这组指令只使用AX或AL传送信息IN(Input)输入指令一般格式INAL,n;BALnINAX,n;WAXn+1nINAL,DX;BALDXINAX,DX;WAXDX+1DX功能:从I/O端口输入数据至AL或AX。注意:输入指令允许把一个字节或一个字由一个输入端口传送到AL或AX中。若端口地址超过255时,则必须用DX保存端口地址,这样用DX作端口寻址最多可寻找64K个端口。,45,第三章:8086/8088的指令系统指令系统,数据传送指令累加器专用传送指令OUT(Output)输入指令一般格式OUTn,AL;BALnOUTn,AX;WAXn+1nOUTDX,AL;BALDXOUTDX,AX;WAXDX+1DX功能:将AL或AX的内容输出至I/O端口。注意:该指令将AL或AX中的内容传送到一个输出端口。端口寻址方式与IN指令相同。,46,第三章:8086/8088的指令系统指令系统,数据传送指令累加器专用传送指令XLAT(Translate)换码(查表)指令一般格式XLAT;AL=(DS)16(BX)+(AL)功能:完成一个字节的查表转换。注意:寄存器AL的内容作为一个256字节的表的下标;表的基地址在BX中;转换后的结果存放在AL中。,47,第三章:8086/8088的指令系统指令系统,8086/8088指令系统可分为以下六个功能组数据传送(DataTranster)算术运算(Arithmetic)逻辑运算(Logic)串操作(StringMenipulation)程序控制(ProgramControl)处理器控制(ProcessorControl),48,第三章:8086/8088的指令系统指令系统,算术运算指令加法指令(ADD、ADC、INC)减法指令(SUB、SBB、DEC、NEG、CMP)乘法指令(MUL、IMUL)除法指令(DIV、IDIV、CBW、CWD)十进制调整指令(DAA、DAS、AAA、AAS、AAM、AAD)8086提供加、减、乘、除四种基本算术操作。这些操作都可用于字节或字的运算,也可以用于带符号数与无符号数的运算。带符号数用补码表示。同时8086也提供了各种校正操作,故可以进行十进制算术运算。,49,第三章:8086/8088的指令系统指令系统,算术运算指令加法指令(ADD、ADC、INC)减法指令(SUB、SBB、DEC、NEG、CMP)乘法指令(MUL、IMUL)除法指令(DIV、IDIV、CBW、CWD)十进制调整指令(DAA、DAS、AAA、AAS、AAM、AAD)8086提供加、减、乘、除四种基本算术操作。这些操作都可用于字节或字的运算,也可以用于带符号数与无符号数的运算。带符号数用补码表示。同时8086也提供了各种校正操作,故可以进行十进制算术运算。,50,第三章:8086/8088的指令系统指令系统,算术运算指令加法指令ADD(add)加法指令一般格式ADDDST,SRC;(DST)(SRC)+(DST)功能:完成两个操作数相加,结果送至目的操作数DST。目的操作数可以是累加器,任一通用寄存器以及存储器操作数。ADC(addwithcarry)带进位的加法指令一般格式ADCDST,SRC;(DST)(SRC)+(DST)+CF功能:这条指令与上条指令类似,只是在两个操作数相加时,要把进位标志CF的现行值加上去,结果送至目的操作数。本指令主要用于多字节操作数相加。INC(increment)加一指令一般格式INCOPR;(OPR)(OPR)+1功能:完成对指定的操作数OPR加1,然后返回此操作数。此指令主要用于在循环程序中修改地址指针和循环次数等。,51,第三章:8086/8088的指令系统指令系统,算术运算指令加法指令ADDAL,30;累加器与立即数相加ADDBX,3000H;通用寄存器与存储单元内容相加ADDDI,CX;通用寄存器之间ADDDX,DATABX+SI;通用寄存器与存储单元内容相加ADDBETASI,DX;存储器操作数与寄存器相加,52,第三章:8086/8088的指令系统指令系统,算术运算指令加法指令MOVAX,FIRSTADDAX,SECOND;进行字运算MOVTHIRD,AXMOVAX,FIRST+2ADCAX,SECOND+2MOVTHIRD+2,AX,53,第三章:8086/8088的指令系统指令系统,算术运算指令加法指令(ADD、ADC、INC)减法指令(SUB、SBB、DEC、NEG、CMP)乘法指令(MUL、IMUL)除法指令(DIV、IDIV、CBW、CWD)十进制调整指令(DAA、DAS、AAA、AAS、AAM、AAD)8086提供加、减、乘、除四种基本算术操作。这些操作都可用于字节或字的运算,也可以用于带符号数与无符号数的运算。带符号数用补码表示。同时8086也提供了各种校正操作,故可以进行十进制算术运算。,54,第三章:8086/8088的指令系统指令系统,算术运算指令减法指令SUB(subtract)减法指令一般格式SUBDST,SRC;(DST)(DST)-(SRC)功能:完成两个操作数相减,也即从DST中减去SRC,结果放在SRC中。SBB(subtractwithborrow)带借位的减法指令一般格式SBBDST,SRC;(DST)(DST)-(SRC)-CF功能:这条指令与SUB类似,只是在两个操作数相减时,还要减去借位标志CF的现行值。本指令对标志位AF、CF、OF、PF、SF和ZF都有影响。本指令主要用于多字节操作数相减。DEC(decrement)减一指令一般格式DECOPR;(OPR)(OPR)-1功能:完成对指定的操作数OPR减1,然后返回此操作数。,55,第三章:8086/8088的指令系统指令系统,算术运算指令减法指令NEG(negate)求补指令一般格式NEGOPR;(OPR)(OPR)功能:对操作数取补,即用零减去操作数,再把结果送回操作数。CMP(compare)比较指令一般格式CMPOPR1,OPR2;(OPR1)-(OPR2)功能:比较指令完成两个操作数相减,使结果反映在标志位上,但并不送回结果(即不带回送的减法)。,56,第三章:8086/8088的指令系统指令系统,算术运算指令减法指令SUBCX,BXSUBBP,CLDECSIDECCLNEGALNEGMULRECMPAL,100CMPDX,DICMPCX,COUHTBPCMPCOUNTSI,AX,57,第三章:8086/8088的指令系统指令系统,算术运算指令加法指令(ADD、ADC、INC)减法指令(SUB、SBB、DEC、NEG、CMP)乘法指令(MUL、IMUL)除法指令(DIV、IDIV、CBW、CWD)十进制调整指令(DAA、DAS、AAA、AAS、AAM、AAD)8086提供加、减、乘、除四种基本算术操作。这些操作都可用于字节或字的运算,也可以用于带符号数与无符号数的运算。带符号数用补码表示。同时8086也提供了各种校正操作,故可以进行十进制算术运算。,58,第三章:8086/8088的指令系统指令系统,算术运算指令乘法指令MUL(unsignedmultiple)无符号数乘法指令一般格式MULSRC字节操作数(AX)(AL)*SRC字操作数(DX,AX)(AX)*SRC功能:完成字节与字节相乘、字与字相乘,且默认的操作数放在AL或AX中,而源操作数由指令给出。8位数相乘,结果为16位数,放在AX中;16位数相乘结果为32位数,高16位放在DX,低16位放在AX中。此时,若AH/DX=0,则CF=OF=0,否则CF=OF=1。IMUL(signedmultiple)带符号数乘法指令一般格式IMULSRC功能:这是一条带符号数的乘法指令,同MUL一样可以进行字节与字节、字和字的乘法运算。结果放在AX或DX,AX中。当结果的高半部分不是结果的低半部分的符号扩展时,标志位CF=OF=0,否则CF=OF=1。,59,第三章:8086/8088的指令系统指令系统,算术运算指令乘法指令MOVAL,FIRSTMULSECOND;结果为AX=FIRST*SECONDMOVAX,THIRDMULAX;结果DX:AX=THIRD*THIRDMOVBX,2000HMULBX,60,第三章:8086/8088的指令系统指令系统,算术运算指令乘法指令例:若(AL)=0B4H,(BL)=11H,求执行指令IMULBL和MULBL后的结果。解:(AL)=0B4H=180D(无符号数)=-76D(带符号数),(BL)=11H=17D(无符号数)=17D(带符号数),执行IMULBL的结果为(AX)=0FAF4H=-1292DCF=OF=1执行MULBL的结果为(AX)=0BF4H=3060DCF=OF=1,61,第三章:8086/8088的指令系统指令系统,算术运算指令加法指令(ADD、ADC、INC)减法指令(SUB、SBB、DEC、NEG、CMP)乘法指令(MUL、IMUL)除法指令(DIV、IDIV、CBW、CWD)十进制调整指令(DAA、DAS、AAA、AAS、AAM、AAD)8086提供加、减、乘、除四种基本算术操作。这些操作都可用于字节或字的运算,也可以用于带符号数与无符号数的运算。带符号数用补码表示。同时8086也提供了各种校正操作,故可以进行十进制算术运算。,62,第三章:8086/8088的指令系统指令系统,算术运算指令除法指令DIV(unsigneddivide)无符号数除法指令一般格式DIVSRC字节操作数(AL)(AX)/SRC的商(AH)(AX)/SRC的余数字操作数(AX)(DX,AX)/SRC的商(DX)(DX,AX)/SRC的余数IDIV(signeddivide)带符号数除法指令一般格式IDIVSRC功能:该指令执行过程同DIV指令,但IDIV指令认为操作数的最高位为符号位,除法运算的结果商的最高位也为符号位。在除法指令中,在字节运算时被除数在AX中;运算结果商在AL中,余数在AH中。字运算时被除数为DX:AX构成的32位数,运算结果商在AX中,余数在DX中。CBW(convertbytetoword)字节转换为字指令功能:将AL的内容符号扩展到AH。若(AL)最高有效位为0,即若(AL)的D7=0,则(AH)=00;若(AL)最高有效位为1,则(AH)=0FFH。CWD(convertwordtodoubleword)字转换为双字指令功能:将AX的内容符号扩展到DX。若(AX)最高有效位为0,即若(AX)的D15=0,则(DX)=00;若(AX)最高有效位为1,则(DX)=0FFH。,63,第三章:8086/8088的指令系统指令系统,算术运算指令除法指令若AX=2000H,DX=0200H,BX=1000H,则DIVBX执行后,AX=2002H,DX=0000。,64,第三章:8086/8088的指令系统指令系统,算术运算指令加法指令(ADD、ADC、INC)减法指令(SUB、SBB、DEC、NEG、CMP)乘法指令(MUL、IMUL)除法指令(DIV、IDIV、CBW、CWD)十进制调整指令(DAA、DAS、AAA、AAS、AAM、AAD)8086提供加、减、乘、除四种基本算术操作。这些操作都可用于字节或字的运算,也可以用于带符号数与无符号数的运算。带符号数用补码表示。同时8086也提供了各种校正操作,故可以进行十进制算术运算。,65,第三章:8086/8088的指令系统指令系统,算术运算指令十进制调整指令计算机中的算术运算,都是针对二进制数的运算,而人们在日常生活中习惯使用十进制。为此在8086/8088系统中,针对十进制算术运算有一类十进制调整指令。在计算机中人们用BCD码表示十进制数,对BCD码计算机中有两种表示方法:一类为压缩BCD码,即规定每个字节表示两位BCD数;另一类称为非压缩BCD码,即用一个字节表示一位BCD数,在这字节的高四位用0填充。例如,十进制数25D,表示为压缩BCD数时为:25H;表示为非压缩BCD数时为:0205H,用两字节表示。,66,第三章:8086/8088的指令系统指令系统,算术运算指令十进制调整指令【例如】ADDAL,BLDAA若执行前:AL=28H,BL=68H,则执行ADD后:AL=90H,AF=1;再执行DAA指令后,正确的结果为:AL=96H,CF=0,AF=1。【例如】MULBLAAM若执行前:AL=07,BL=09,则执行MULBL后,AX=003FH,再执行AAM指令后,正确的结果为:AH=06H,AL=03H。,67,第三章:8086/8088的指令系统指令系统,8086/8088指令系统可分为以下六个功能组数据传送(DataTranster)算术运算(Arithmetic)逻辑运算(Logic)串操作(StringMenipulation)程序控制(ProgramControl)处理器控制(ProcessorControl),68,第三章:8086/8088的指令系统指令系统,逻辑运算指令逻辑运算指令(ADD、OR、NOT、XOR、TEST)移位指令(SHL、SAL、SHR、SAR、ROL、ROR、RCL、RCR),69,第三章:8086/8088的指令系统指令系统,逻辑运算指令逻辑运算指令(ADD、OR、NOT、XOR、TEST)移位指令(SHL、SAL、SHR、SAR、ROL、ROR、RCL、RCR),70,第三章:8086/8088的指令系统指令系统,逻辑运算指令逻辑运算指令AND(and)逻辑与指令一般格式ANDDST,SRC;(DST)(DST)(SRC)OR(or)逻辑或指令一般格式ORDST,SRC;(DST)(DST)(SRC)NOT(not)逻辑非指令一般格式NOTOPR;(DST)(DST)XOR(exclusiveor)逻辑异或指令一般格式XORDST,SRC;(DST)(DST)(SRC)TEST(test)测试指令一般格式TESTOPR1,OPR2;(OPR1)(OPR2),71,第三章:8086/8088的指令系统指令系统,逻辑运算指令逻辑运算指令例如:要求屏蔽0、1位,可用AND指令并设置常数0FCH。MOVAL,0BFHANDAL,0FCH例如:要测试操作数的某位是否为0,可用TEST指令,同样把TEST指令的源操作数设置成为一个立即数,其中需要测试的位应设为1。MOVAL,40HTESTAL,0AFH,72,第三章:8086/8088的指令系统指令系统,逻辑运算指令逻辑运算指令(ADD、OR、NOT、XOR、TEST)移位指令(SHL、SAL、SHR、SAR、ROL、ROR、RCL、RCR),73,第三章:8086/8088的指令系统指令系统,逻辑运算指令移位指令SHL(shiftlogicalleft)逻辑左移指令一般格式SHLOPR,CNTSAL(shiftarithmeticleft)算术左移指令一般格式SALOPR,CNTSHR(shiftlogicalright)逻辑右移指令一般格式SHROPR,CNTSAR(shiftarithmeticright)算术右移指令一般格式SAROPR,CNTROL(rotateleft)循环左移指令一般格式ROLOPR,CNTROR(rotateright)循环右移指令一般格式ROROPR,CNTRCL(rotateleftthroughcarry)带进位循环左移指令一般格式RCLOPR,CNTRCR(rotaterightthroughcarry)带进位循环右移指令一般格式RCROPR,CNT,74,第三章:8086/8088的指令系统指令系统,8086/8088指令系统可分为以下六个功能组数据传送(DataTranster)算术运算(Arithmetic)逻辑运算(Logic)串操作(StringMenipulation)程序控制(ProgramControl)处理器控制(ProcessorControl),75,第三章:8086/8088的指令系统指令系统,串操作指令串操作类指令可以用来实现内存区域的数据串操作。这些数据串可以是字节串,也可以是字串。,76,第三章:8086/8088的指令系统指令系统,8086/8088指令系统可分为以下六个功能组数据传送(DataTranster)算术运算(Arithmetic)逻辑运算(Logic)串操作(StringMenipulation)程序控制(ProgramControl)处理器控制(ProcessorControl),77,第三章:8086/8088的指令系统指令系统,程序控制指令无条件转移指令(JMP)条件转移指令(JZ/JE、JNZ、JS、JNS、JO、JNO、JP、JNP、JB、JNB)循环指令(LOOP、LOOPZ、LOOPNZ)子程序(CALL、RET)中断(INT、INTO、IRET),78,第三章:8086/8088的指令系统指令系统,程序控制指令无条件转移指令(JMP)条件转移指令(JZ/JE、JNZ、JS、JNS、JO、JNO、JP、JNP、JB、JNB)循环指令(LOOP、LOOPZ、LOOPNZ)子程序(CALL、RET)中断(INT、INTO、IRET),79,第三章:8086/8088的指令系统指令系统,程序控制指令无条件转移指令无条件转移指令JMP分段内转移和段间转移两种。一般格式:JMPOPR;OPR是转移的目的地址段内转移的3种形式为:短程转移JMPSHORTOPR;IP=IP+8位位移量目的地址与JMP指令所处地址的距离应在-128127范围之内。近程转移JMPNEARPTROPR;IP=IP+16位位移量或JMPOPRD;NEAR可省略目的地址与JMP指令应处于同一地址段范围之内。段内间接转移JMPWORDPTROPR;IP=EA(由OPR的寻址方式确定)。JMPWORDPTRBXIP=(DS)*16+(BX)JMPWORDPTRBXIP=(BX),80,第三章:8086/8088的指令系统指令系统,程序控制指令无条件转移指令段间转移指令的目的地址可以由存储器或寄存器给出。远程转移JMPFARPTROPR;IP=OPR的段内位移量,CS=OPR所在段地址。远程转移是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论