[计算机硬件及网络]微机原理与接口技术PPT课件_第1页
[计算机硬件及网络]微机原理与接口技术PPT课件_第2页
[计算机硬件及网络]微机原理与接口技术PPT课件_第3页
[计算机硬件及网络]微机原理与接口技术PPT课件_第4页
[计算机硬件及网络]微机原理与接口技术PPT课件_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

04.05.2020,.,1,第六讲,杭州电子科技大学,微机原理与接口技术,04.05.2020,.,2,3-38086的指令系统,按功能可分为以下六类:数据传送指令算术运算指令逻辑运算和移位指令串操作指令转移指令处理器控制指令,04.05.2020,.,3,3-38086的指令系统,一、数据传送指令(14条),04.05.2020,.,4,3-38086的指令系统数据传送指令,通用数据传送指令(GeneralPurposeDataTranfers),(1)MOV传送指令(Move)指令格式:MOV目的,源指令功能:实现CPU的内部寄存器间或寄存器与存储器间的数据传送。,例:MOVAX,0FF00HMOVDI,AXMOVCX,1000HMOVBL,40HMOVWORDPTRSI,01HMOVAL,BL,04.05.2020,.,5,3-38086的指令系统数据传送指令,注意:指令中至少要有一项明确说明传送的是字节还是字;IP寄存器不能用作源操作数或目的操作数;立即数和CS寄存器不能用作目的操作数;除了源操作数为立即数的情况外,两个操作数中必有一个是寄存器,但不能都是段寄存器;即MOV指令不能在两个存储单元之间直接传送数据,也不能在两个段寄存器之间直接传送数据。,(1)MOV传送指令(Move),04.05.2020,.,6,3-38086的指令系统数据传送指令,(1)MOV传送指令(Move),【数据段】通常,数据通常存放在数据段中。例如,某个程序的数据段:DATASEGMENT;数据段开始AREA1DB14H,3BH;定义字节变量AREA2DB3DUP(0);复制操作ARRAYDW3100H,01A6H;定义字变量STRINGDBGOODDATAENDS;数据段结束汇编后,DATA将被赋予一个具体的段地址。各变量将自偏移地址0000H开始依次存放,各符号地址等于它们在数据段中的偏移量。,04.05.2020,.,7,3-38086的指令系统数据传送指令,(1)MOV传送指令(Move),AREA1的偏移地址为0000H;AREA2的偏移地址为0002H;ARRAY的偏移地址为0005H;STRING的偏移地址为0009H。,DATASEGMENT;数据段开始AREA1DB14H,3BH;定义字节变量AREA2DB3DUP(0);复制操作ARRAYDW3l00H,01A6H;定义字变量STRINGDBGOODDATAENDS;数据段结束,04.05.2020,.,8,3-38086的指令系统数据传送指令,(1)MOV传送指令(Move),例MOVDX,OFFSETARRAY解:ARRAY的偏移地址DX。(OFFSET:取后面的符号偏移地址的值)设:ARRAY的定义如左图所示则:DX=0005H,例:MOVAL,AREA1;ALAREA1中的内容14HMOVAREA2,AL;0002H单元14H,04.05.2020,.,9,3-38086的指令系统数据传送指令,(2)PUSH进栈指令(PushWordontoStack),指令格式:PUSH源指令功能:数据入堆栈工作过程:SPSP-2;(SP+1,SP)源源操作数要求:可以是16位通用寄存器、段寄存器、存储器中的数据字,但不能是立即数。,04.05.2020,.,10,3-38086的指令系统数据传送指令,(3)POP出栈指令(PopWordoffStack),指令格式:POP目的指令功能:数据出堆栈工作过程:目的(SP+1,SP)SPSP2;目的操作数要求:可以是16位通用寄存器、段寄存器或存储单元,但CS不能作目的操作数。,04.05.2020,.,11,3-38086的指令系统数据传送指令,PUSH、POP指令实例,04.05.2020,.,12,3-38086的指令系统数据传送指令,(4)XCHG交换指令(Exchange),指令格式:XCHG目的,源指令功能:源操作数、目的操作数数据交换。操作数要求:交换可以在寄存器之间、寄存器与存储器之间进行;段寄存器不能作为操作数;不能直接交换两个存储单元中的内容。例设AX=2000H,DS=3000H,BX=1800H,(31A00H)=1995H。则执行指令XCHGAX,BX+200H后,结果如何?解:把内存中的一个字与AX中的内容进行交换。源操作数物理地址300010H+1800H+200H31A00H,指令执行后:AX1995H,(3lA00H)2000H,04.05.2020,.,13,3-38086的指令系统数据传送指令,(5)XLAT表转换指令(TableLookup-Translation),指令格式:XLAT转换表或:XLAT指令功能:使累加器(AL)中的一个值变换为内存表格中的某一个值,一般用来实现代码转换,即查表功能。XLAT指令使用步骤:使用之前必须先建立一个表格,表格中的内容是所需要转换的代码;将转换表的起始地址装入BX寄存器;欲查的某项与表头地址的位移量AL,即表格最多包含256个字节;执行XLAT指令后,根据位移量从表中查到转换后的代码值AL寄存器中。,04.05.2020,.,14,3-38086的指令系统数据传送指令,(5)XLAT表转换指令(TableLookup-Translation),例若十进制数字09的LED七段码对照表如表所示,试用XLAT指令求数字5的七段码值。,十进制数的七段显示码表,04.05.2020,.,15,3-38086的指令系统数据传送指令,(5)XLAT表转换指令(TableLookup-Translation),程序如下:TABELDB40H,79H,24H,30H,19H;七段数码表数据DB12H,02H,78H,00H,18H;分别对应09的七段字型码MOVAL,5;AL数字5的位移量MOVBX,OFFSETTABLE;BX表格首地址XLATTABLE;查表得:AL=12H,04.05.2020,.,16,3-38086的指令系统数据传送指令,2输入输出指令(InputnndOutput),IN指令:从数据端口输入数据或从状态端口输入状态字。OUT指令:输出数据或命令给指定的I/O端口。直接输入输出指令格式:INAL,PORT;AL(PORT)INAX,PORT;AX(PORT+1,PORT)OUTPORT,AL;(PORT)ALOUTPORT,AX;(PORT+1,PORT)AX注:PORT为输入输出端口号,范围为0255(00FFH),04.05.2020,.,17,间接输入输出指令格式:INAL,DX;AL(DX)INAX,DX;AX(DX+1,DX)OUTDX,AL;(DX)ALOUTDX,AX;(DX+1,DX)AX在间接输入输出指令之前,需将端口号送入DX寄存器。MOVDX,XXXXH;例OUT85H,AL;85H端口AL内容MOVDX,0FF4H;端口地址DX=0FF4HOUTDX,AL;FF4H端口AL内容MOVDX,300H;DX指向300HOUTDX,AX;300H端口AL内容,301H端口AH内容,3-38086的指令系统数据传送指令,04.05.2020,.,18,3地址目标传送指令(AddressObjectTransfers):,专用于传送地址码的指令,它可以用来传送操作数的段地址和偏移地址,含以下三条指令:LEA取有效地址指令(LoadEffectiveAddress)指令格式:LEA目的,源指令功能:取源操作数地址的偏移量,传送到目的操作数操作数要求:源操作数必须是存储单元,目的操作数必须是一个除段寄存器之外的16位寄存器。使用时要注意与MOV指令的区别。例假设SI1000H,DS5000H,(51000H)1234HLEABX,SI;执行完该指令后,BX1000H(送偏移地址)MOVBX,SI;执行完该指令后,BX1234H(送内容),3-38086的指令系统数据传送指令,04.05.2020,.,19,LDS将双字指针送到寄存器和DS指令(LoadPointerusingDS),指令格式:LDS目的,源指令功能:从源操作数指定的存储单元中,取出一个变量的4字节地址指针,送进一对目的寄存器。其中前两个字节(表示变量的偏移地址)送到指令中指定的目的寄存器中,后两个字节(表示变量的段地址)送入DS寄存器。操作数要求:源操作数必是存储单元,该单元开始的连续4个字节存放一个变量的地址指针。目的操作数必须是16位寄存器,常用SI寄存器,但不能用段寄存器。例设DS1200H,(12450H)F346H,(12452H)0A90H,执行指令LDSSI,0450H后,SIF346H,DS0A90H注:源操作数的物理地址DS10H+450H=12450H,3-38086的指令系统数据传送指令,04.05.2020,.,20,LES将双字指针送到寄存器和ES指令(LoadPointerusingEs)指令格式:LES目的,源指令功能:与LDS指令的操作基本相同,不同的是:要将源操作数所指向的存储单元里存放的地址指针中的段地址部分送到ES寄存器中,而不是DS寄存器,目的操作数常用DI寄存器。例设DS0100H,BX0020H,(01020H)0300H,(01022H)0500H。执行指令LESDI,BX后,DI0300H,ES0500H注:源操作数的物理地址DS10H+BX=0100H10H+0020H=01020H,3-38086的指令系统数据传送指令,04.05.2020,.,21,4标志传送指令(FlagTransfers):,读取标志指令:LAHF(5、3、0为任意值)标志寄存器低8位AH设置标志指令:SAHF标志寄存器低8位AH,影响PSW把标志寄存器的内容压入堆栈:PUSHF从堆栈弹出到标志寄存器:POPF,影响PSW,3-38086的指令系统数据传送指令,04.05.2020,.,22,3-38086的指令系统数据传送指令,LAHF标志送到AH指令(LoadAHfromFlag)指令格式:LAHF指令功能:标志寄存器SF、ZF、AF、PF和CFAH寄存器的位7、6、4、2和0。注意:位5、3、1的内容未定义,是任意值。执行这条指令后,标志位本身并不受影响。这5个标志送进AH后,AH便相当于80808085的标志寄存器,从而能对80808085程序进行转换,使它们能运行在80868088系统上。,04.05.2020,.,23,3-38086的指令系统数据传送指令,SAHFAH送标志寄存器(StoreAHintoFlags)指令格式:SAHF指令功能:AH内容标志寄存器。注意:位5、3、1的内容未定义,是任意值。执行这条指令后,高位标志并不受影响。为80808085提供兼容性。,04.05.2020,.,24,3-38086的指令系统数据传送指令,PUSHF标志入栈指令(PushFlagontoStack)指令格式:PUSHF指令功能:将标志寄存器PSW中的内容压入堆栈;并修改堆栈指针,使SPSP2;指令执行后对标志位无影响。POPF标志出栈指令(PopFlagoffStack)指令格式:POPF指令功能:将堆栈指针SP所指的一个字弹入标志寄存器PSW;并修改堆栈指针,使SPSP2。注意:要成对使用PUSHF和POPF,可对标志寄存器进行保存和恢复。常用在:过程(子程序)调用,中断服务程序,对主程序的状态(即标志位)进行保护。也可用来改变追踪标志TF。在8086指令系统中没有直接改变TF(D8位)的指令。,04.05.2020,.,25,3-38086的指令系统算术运算指令,二、算术运算指令,算术运算指令可处理4种类型的数:无符号二进制整数带符号二进制整数无符号压缩十进制整数(PackedDecimal)无符号非压缩十进制整数(UnpackedDecimal)一个8位二进制数可看成4种不同类型的数,所表示的数值亦不同。,数的表示:二进制数:可以是8位或16位,若是带符号数,则用补码表示。压缩十进制数:一个字节中存放两个BCD码十进制数。非压缩十进制数:个字节的低半字节存放十进制数,高半字节为全零。例如,对十进制数字58:压缩十进制数表示:只需一个字节,即01011000B;非压缩十进制数表示:需两个字节,即00000101B和00001000B。,04.05.2020,.,26,3-38086的指令系统算术运算指令,4种类型数的表示方法,80868088指令系统提供:加、减、乘、除运算指令:处理无符号或带符号的8位/16位二进制数的算术运算;调整操作指令:进行压缩的或非压缩的十进制数的算术运算;加法和减法运算指令:带符号数和无符号数的加法和减法的运算可以用同一条加法或减法指令来完成。乘法和除法运算:分别设置无符号数和带符号数的乘、除法指令。绝大部分算术运算指令都影响状态标志位。,04.05.2020,.,27,3-38086的指令系统算术运算指令,算术逻辑指令,04.05.2020,.,28,1.加法指令(Addition),ADD加法指令(Addition)指令格式:ADD目的,源指令功能:目的源十目的ADC带进位的加法指令(AdditionwithCarry)指令格式:ADC目的,源指令功能:目的源十目的十CF注意:源操作数可以是寄存器、存储器、立即数;目的操作数:只能用寄存器、存储单元。源、目的操作数不能同时为存储器,且类型必须一致,均为字节或字;这两条指令影响的标志位为:CF、OF、PF、SF、ZF和AF。,3-38086的指令系统算术运算指令,04.05.2020,.,29,3-38086的指令系统算术运算指令,例:两种加法指令的实例ADDAL,18H;ALAL十18HADCBL,CL;BLBL十CL十CFADCAX,DX;AXAX十DX十CFADDAL,COSTBX;AL内容和地址DS:(COST+BX)的存储字节;相加,结果送ALADDCOSTBX,BL;将BL与物理地址DS:(COST十BX)的存储字节相加,结果留在该存储单元中例:用加法指令对两个8位16进制数5EH和3CH求和,并分析加法运算指令执行后对标志位的影响。解:MOVAL,5EH;AL5EH(94)MOVBL,3CH;BL3CH(60)ADDAL,BL;结果AL9AH,04.05.2020,.,30,3-38086的指令系统算术运算指令,讨论ADD对标志位的影响:两个数的相加过程:010111105EH=94+00111100即:+3CH=60100110109AH=154运算后标志位:ZF0,AF1,CF0,SFl,PF1,OF1。对标志的解释(人为决定):两个加数都看成无符号数时,运算结果为9AH,即十进制数154。在这种情况下,SF和OF都没有意义,我们只关心ZF和CF标志,在BCD码运算或奇偶校验时才考虑AF或PF标志。两个加数都当成带符号数时,符号标志SF和溢出标志OF很重要,而进位标志CF没有意义。带符号数能表示的范围-128+127,而本例中,两个正数94和60相加,其和为154,由于154超过了范围,即产生了溢出,OF1,04.05.2020,.,31,3-38086的指令系统算术运算指令,INC增量指令(Increment)指令格式:INC目的指令功能:目的目的十1操作数的要求:通用寄存器、内存。注意:这条指令主要用在循环程序中,对地址指针和循环计数器等进行修改;指令执行后影响AF、OF、PF、SF和ZF,但不影响进位标志CF。该指令只有一个操作数时,如果要使内存单元的内容增1,程序中必须说明该存储单元是字还是字节。例INCBL;BL寄存器中内容增1INCCX;CX寄存器中内容增1INCBYTEPRRBX;内存字节单元内容增1INCWORDPTRBX;内存字单元内容增1其中,PTR为类型说明符,前面加BYTE说明操作数类型为字节,加WORD则说明操作数类型为字。,04.05.2020,.,32,3-38086的指令系统算术运算指令,AAA加法的ASCII调整指令(ASCIIAdjustforAddition)指令格式:AAA指令功能:在用ADD或ADC指令对两个非压缩十进制数或ASCII码表示的十进制数作加法后,运算结果已存在AL中,用此指令将AL寄存器中的运算结果调整为一位非压缩十进制数,仍保留在AL中。如果AF1,表示向高位有进位,则进到AH寄存器中。(注:非压缩十进制数的高4位为全0,低4位为十进制数字09。例如,将9表示成00001001)调整过程:若AL低4位9或AF1则:ALAL十6用与操作()将AL高4位清0AF置1,CF置1,AHAH十l否则,仅将AL寄存器的高4位清0。,04.05.2020,.,33,3-38086的指令系统算术运算指令,例若ALBCD9,BLBCD5,求两数之和。解:设AH0,则运算过程如下:,ASCII码表示的十进制数,高半字节均为3,运算时需用AND指令将它屏蔽。只要使用AAA指令,可以不必屏蔽高半字节,便能在AX中得到一个正确的非压缩十进制数。,04.05.2020,.,34,3-38086的指令系统算术运算指令,例求ASCII码表示的数9(39H)与5(35H)之和。设AH0,则运算过程如下:,在AAA指令后加上一条“或”指令ORAX,3030H,便使AX中的结果变成了ACSII码3134H。,04.05.2020,.,35,3-38086的指令系统算术运算指令,DAA加法的十进制调整指令(DecimalAdjustforAddition)指令格式:DAA指令功能:将两个压缩BCD数相加后的结果调整为正确的压缩BCD数。注意:相加后的结果必须在AL中,才能使用DAA指令。调整过程:若AL的低4位9或AF1,则ALAL十6,对低4位进行调整;若此时AL的高4位9或CF1,则ALAL十60H,对高4位进行调整,并使CF置1,否则CF置0。,04.05.2020,.,36,3-38086的指令系统算术运算指令,例若ALBCD88,BLBCD49,求两数之和。解运算过程为:,04.05.2020,.,37,3-38086的指令系统算术运算指令,2.减法指令(Subtration),SUB减法指令(Subraction)指令格式:SUB目的,源指令功能:目的目的源例SUBAX,BX;AXAX-BXSUBDX,1850H;DXDX-1850HSUBBL,BX;BL中内容减去物理地址DS:(BX)处的字节,结果存入BLSBB带借位的减法指令(SubtractwithBorrow)指令格式:SBB目的,源指令功能:目的目的源CF(SBB主要用于多字节减法中)例SBBAL,CL;ALALCLCF,04.05.2020,.,38,3-38086的指令系统算术运算指令,DEC减量指令(Decrement)指令格式:DEC目的指令功能:目的目的-l例DECBX;BXBX-1DECWORDPTRBP;堆栈段中位于BP偏置处的字减1NEG取负指令(Negate)指令格式:NEG目的指令功能:目的0目的,即对目的操作数取负例NEGAX;将AX中的数取负NEGBYTEPTRBX;对数据段中位于BX偏置处的字节取负CMP比较指令(Compare)指令格式:CMP目的,源指令功能:目的源,结果不回送到目的操作数中,仅反映在标志位上。用途:用在比较两个数大小又不破坏原操作数的场合。,04.05.2020,.,39,3-38086的指令系统算术运算指令,减法指令小结:(上述五种指令都做减法运算)对于双操作数指令(SUB、SBB、CMP):源操作数可以是寄存器、存储器或立即数;目的操作数可以是寄存器、存储器,但不能为立即数;两个操作数不能同时为存储器。对于单操作数指令(DEC、NEG):目的操作数可以是寄存器、存储器,但不能为立即数;如果是存储器操作数,还必须说明其类型是字节还是字。运算之后,除DEC指令不影响CF标志外,其它均影响OF、SF、ZF、AF、PF和CF标志。在减法操作后,如果源操作数大于目的操作数,需要借位时,进位/借位标志CF将被置1。,04.05.2020,.,40,3-38086的指令系统算术运算指令,例设AL10110001B,DL01001010B,求ALDL。解:SUBAL,DL;与加法操作一样,对结果的解释取决于参与运算的数的性质,运算过程如下:,二进制减法当成无符号数当成带符号数10110001177790100101074)7401100111103103运算后标志位ZF0,AF1,CF0,SF0,PF0,OF1。讨论:两数为无符号数:表示177与74的差是103。CF0表示没有借位,SF和OF无意义。两数为带符号数:表示79(74),结果应为153。但结果却为正数(103),这是由于153溢出造成的。此时,SF和OF有重要意义。,04.05.2020,.,41,3-38086的指令系统算术运算指令,AAS减法的ASCII调整指令(ASCIIAdjustforSubtraction)指令格式:AAS指令功能:将AL寄存器中的运算结果调整为正确的非压缩十进制数之差,仍保留在AL中。使用前提:用SUB或SBB指令对两个非压缩十进制数或ASCII码表示的十进制数作减法,运算结果已存在AL。调整过程:若AL寄存器的低4位9或AF1,则:ALAL6,AF置1将AL寄存器高4位清零AHAHl,CF置l否则,不需要调整,04.05.2020,.,42,3-38086的指令系统算术运算指令,DAS减法的十进制调整指令(DecimalAdjustforSubtracion)指令格式:DAS指令功能:将AL中两个压缩BCD数相减后的结果调整为正确的压缩BCD数。高4位和低4位分别进行调整。使用前提:在两个压缩十进制数用SUB或SBB相减后,结果在AL中。调整过程:如果AL寄存器的低4位9或AF1则:ALAL6,AF置1如果此时AL高半字节9或标志位CFl则:ALAL60H,CF置1,04.05.2020,.,43,3-38086的指令系统算术运算指令,例设ALBCD56,CLBCD98,求两数之差。解:运算过程如下:,04.05.2020,.,44,3-38086的指令系统算术运算指令,3乘法指令(Multiply)MUL无符号数乘法指令(Multiply)指令格式:MUL源指令功能:把源操作数和累加器中的数都当成无符号数,然后将两个数相乘,操作数可以是字节或字。源操作数是一个字节:原操作数与累加器AL中的内容相乘,乘积为双倍长的16位数,高8位送到AH,低8位送AL。即AXAL*源。源操作数是一个字:原操作数与累加器AX的内容相乘,结果为32位数,高位字放在DX寄存器中,低位字放在AX寄存器中。即(DX,AX)AX*源操作数要求:可以是寄存器、存储单元,但不能是立即数;源操作数是存储单元时,必须在操作数前加B或W说明是字节还是字。,04.05.2020,.,45,3-38086的指令系统算术运算指令,例MULDL;AXAL*DLMULCX;(DX,AX)AX*CXMULBSI;AXAL*(内存中某字节),B说明字节乘法MULWBX;(DX,AX)AX*(内存中某字),W说明字乘法注意:MUL指令执行后影响CF和OF标志。如果结果的高半部分(字节操作为AH、字操作为DX)不为零,表明其内容是结果的有效位,则CF和OF均置1。否则,CF和OF均清0。据此可检测并去除结果中的无效前导零。乘法指令使AF、PF、SF和ZF的状态不定。例设AL55H,BL14H,计算它们的积。解:MULBL结果:AX06A4H。由于AH06H0,高位部分有效,所以置CF1,OF1。,04.05.2020,.,46,3-38086的指令系统算术运算指令,例试计算FFHFFH。解:用二进制表示成如下形式:11111111111111111111111000000001作为无符号数:表示25525565025,结果正确。作为带符号数:表示(一1)(一1)一511,显然结果不正确。用MUL指令作带符号数的乘法,会得到错误的结果,必须用IMUL指令,才能使(一1)(一1)得到正确的结果0000000000000001。,04.05.2020,.,47,3-38086的指令系统算术运算指令,IMUL整数乘法指令(IntegerMultiply)指令格式:IMUL源指令功能:把源操作数和累加器中的数都作为带符号数,进行相乘。存放结果的方式与MUL相同:源操作数为字节:与AL相乘,双倍长结果送到AX中;源操作数为字:与AX相乘,双倍长结果送到DX和AX中,最后给乘积赋予正确的符号。对标志位的影响:乘积的高半部分不是低半部分的符号扩展(不是全0或全1),则高位部分为有效位,表示它是积的一部分,于是置CFOF1;结果的高半部分为全0或全1,表明它仅包含了符号位,那么使CF=OF0。AF、PF、SF和ZF不定。,04.05.2020,.,48,3-38086的指令系统算术运算指令,AAM乘法的ASCII调整指令(ASCIIAdjustforMultiply)指令格式:AAM指令功能:对AL中的两个非压缩十进制数相乘的乘积进行十进制数的调整,在AX中得到正确的非压缩十进制数的乘积,高位在AH中,低位在AL中。调整过程:把AL寄存器内容除以10,商放在AH中,余数在AL中。即:AHAL/10所得的商ALAH/10所得的余数注意:两个ASCII码数相乘之前,先屏蔽掉每个数字的高半字节,使每个字节包含一个非压缩十进制数(BCD数),再用MUL指令相乘,乘积放到AL寄存器中,然后用AAM指令进行调整。标志位的影响:影响ZF、SF和PF,但AF、CF和OF无定义。8086的指令系统中,十进制乘法运算不允许采用压缩十进制数,故调整指令仅此一条。,04.05.2020,.,49,3-38086的指令系统算术运算指令,例求两个非压缩十进制数09和06之乘积。解:MOVAL,09H;置初值MOVBL,06HMULBL;AL09与06之乘积36HAAM;调整得AH05H(十位),AL04H(个位)结果:AX0504H,即BCD数54。例如果AL和BL中分别存放9和6的ASCII码,求两数之积。解:用以下指令实现:ANDAL,0FH;屏蔽高半字节ANDBL,0FHMULBL;相乘AAM;调整如要将结果转换成ASCII码,可用指令ORAX,3030H实现,使AX3534H。,04.05.2020,.,50,3-38086的指令系统算术运算指令,4除法指令(Division)DIV无符号数除法指令(Division,unsigned)指令格式:DIV源指令功能:对两个无符号二进制数进行除法操作。源操作数为字节:16位被除数必须放在AX中,8位除数为源操作数。ALAX源(字节)的商AHAX源(字节)的余数若被除数只有8位,必须把它放在AL中,并将AH清0。源操作数为字:32位被除数在(DX,AX)中,16位除数作源操作数。AX(DX,AX)源(字)的商DX(DX,AX)源(字)的余数若被除数、除数都是16位,则将16位被除数送到AX中,再将DX清0。注意:源操作数可以是寄存器、存储单元;DIV指令执行后,所有标志位均无定义。,04.05.2020,.,51,3-38086的指令系统算术运算指令,IDIV整数除法指令(IntegerDivision)指令格式:IDIV源指令功能:对两个带符号二进制数进行除法操作(也称为带符号数除法)注意:操作与DIV相同;商和余数都是带符号数,且规定余数的符号和被除数的相同;指令执行后,所有标志位均无定义。无论对(DIV)还是(IDIV),都要注意溢出问题:字节操作时:被除数的高8位绝对值大于除数的绝对值,则产生溢出。(对于无符号数,允许最大商为FFH;对于带符号数,允许商的范围为-127+127,或-81H+7FH);字操作时:被除数的高16位绝对值大于除数的绝对值,则产生溢出。(对于无符号数,允许最大商为FFFFH;对于带符号数,允许商的范围为-32767+32767,或-8001H7FFFH)。,04.05.2020,.,52,3-38086的指令系统算术运算指令,带符号数除法指令,字节操作时要求被除数为16位,字操作时要求被除数为32位,如果被除数不满足这个条件,不能简单地将高位置0,而应该用符号扩展指令(SignExtension)将被除数转换成除法指令

温馨提示

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

评论

0/150

提交评论