《第4章 8086指系统2.ppt》由会员分享,可在线阅读,更多相关《第4章 8086指系统2.ppt(86页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、微机原理与接口微机原理与接口教教 学学 课课 件件nIntel 8086指指令令系系统统共共有有133种种基基本本指指令令,从功能上可分成以下从功能上可分成以下 7 类:类:数据传送类指令数据传送类指令 算术运算类指令算术运算类指令 位操作类指令位操作类指令 串操作类指令串操作类指令 控制转移类指令控制转移类指令 处理机控制类指令处理机控制类指令 中断类指令中断类指令4.3 8086/8088指令系统微机原理与接口微机原理与接口教教 学学 课课 件件指令操作数的泛指表示nr8r8 泛指泛指8 8位通用寄存器位通用寄存器AH/AL/BH/BL/CH/CL/DH/DLAH/AL/BH/BL/CH/
2、CL/DH/DLr16r16 泛指泛指1616位通用寄存器位通用寄存器AX/BX/CX/DX/SI/DI/BP/SPAX/BX/CX/DX/SI/DI/BP/SPregreg 泛指泛指r8r8或或r16r16nsegseg 泛指段寄存器泛指段寄存器CS/DS/ES/SSCS/DS/ES/SSnm8m8 泛指泛指8 8位存储器操作数单元(包括所有寻址方式)位存储器操作数单元(包括所有寻址方式)m16m16 泛指泛指1616位存储器操作数单元(包括所有寻址方式)位存储器操作数单元(包括所有寻址方式)memmem 泛指泛指m8m8或或m16m16n i8 i8 泛指泛指8 8位立即数位立即数 i16
3、i16 泛指泛指1616位立即数位立即数 immimm 泛指泛指i8i8或或i16i16n destdest 泛指目的操作数泛指目的操作数 srcsrc 泛指源操作数泛指源操作数微机原理与接口微机原理与接口教教 学学 课课 件件一、数据传送类指令n把数据从一个位置传送到另一个位置把数据从一个位置传送到另一个位置n14条指令分条指令分 5 组:组:1、通用数据传送:、通用数据传送:MOV/XCHG/XLAT2、堆栈操作:、堆栈操作:PUSH/POP3、标志寄存器传送:、标志寄存器传送:LAHF/SAHF/PUSHF/POPF4、地址传送:、地址传送:LEA/LDS/LES5、输入输出:、输入输出
4、:IN/OUT微机原理与接口微机原理与接口教教 学学 课课 件件1、传送指令MOV(move)n传传送送指指令令把把一一个个字字节节/字字操操作作数数从从源源地地址址传传送送至至目目的的地址地址MOV reg/mem,imm ;立即数送寄存器或主存立即数送寄存器或主存:例例4.1MOV reg/mem/seg,reg ;寄存器送(段)寄存器或主存寄存器送(段)寄存器或主存:例例4.2MOV reg/seg,mem;主存送寄存器主存送寄存器:例例4.3MOV reg/mem,seg;段寄存器送寄存器或主存段寄存器送寄存器或主存:例例4.4n传送指令不是万能的,应避免非法传送传送指令不是万能的,应
5、避免非法传送.微机原理与接口微机原理与接口教教 学学 课课 件件例4.1:立即数传送mov al,4;al4,字节传送字节传送mov cx,0ffh;cx00ffh,字传送字传送mov si,200h;si0200h,字传送字传送mov byte ptr si,0ah;ds:si 0ah,byte ptr 说明是字节操作说明是字节操作mov word ptr si+2,0bh;ds:si+2 0bh,word ptr 说明是字操作说明是字操作注意立即数是字节还是字注意立即数是字节还是字,即明确指令是字即明确指令是字节操作还是字操作。节操作还是字操作。微机原理与接口微机原理与接口教教 学学 课课
6、 件件例4.2:寄存器传送mov ax,bxmov ah,almov ds,axmov bx,al微机原理与接口微机原理与接口教教 学学 课课 件件例4.3:存储器传送mov al,bx;alds:bxmov dx,bp;dxss:bpmov es,si;esds:si注意:不存在存储器向存储器的传送指令注意:不存在存储器向存储器的传送指令微机原理与接口微机原理与接口教教 学学 课课 件件例4.4:段寄存器传送mov si,dsmov ax,esmov ds,ax注意:对段寄存器的操作有一些限制注意:对段寄存器的操作有一些限制微机原理与接口微机原理与接口教教 学学 课课 件件非法传送种种n两个
7、操作数的类型不一致两个操作数的类型不一致 例如源操作数是字节,而目的操作数是字;或相反例如源操作数是字节,而目的操作数是字;或相反n绝绝大大多多数数双双操操作作数数指指令令(包包括括传传送送指指令令),除除非非特特别别说说明明,目目的的操操作作数数与与源源操操作作数数必必须须类类型型一一致致,或或者者同同为为字字,或或者者同为字节,否则为非法指令。同为字节,否则为非法指令。MOV AL,050AH ;非法指令:非法指令:050Ah为字,而为字,而AL为字节为字节n寄寄存存器器有有明明确确的的字字节节或或字字类类型型,有有寄寄存存器器参参与与的的指指令令其其操操作数类型就是寄存器的类型。作数类型
8、就是寄存器的类型。n对对于于存存储储器器单单元元与与立立即即数数同同时时作作为为操操作作数数的的情情况况,必必须须显显式指明。式指明。nbyte ptr指示字节类型,指示字节类型,word ptr指示字类型。指示字类型。微机原理与接口微机原理与接口教教 学学 课课 件件非法传送种种n两个操作数不能都是存储器两个操作数不能都是存储器 传送指令很灵活,但主存之间的直接传送却不允许传送指令很灵活,但主存之间的直接传送却不允许n8086指指令令系系统统不不允允许许两两个个操操作作数数都都是是存存储储单单元元(除除串串操操作作指指令令),没没有有主主存存至至主主存存的的数数据据传传送送。要要实实现现这这
9、种种传传送送,可通过寄存器间接实现。可通过寄存器间接实现。例如:例如:buffer1单元的数据传送到单元的数据传送到buffer2单元单元mov ax,buffer1;axbuffer1(将将buffer1内容送内容送ax)mov buffer2,ax;buffer2axn这里这里buffer1和和buffer2是两个字变量,表示直接寻址方式是两个字变量,表示直接寻址方式微机原理与接口微机原理与接口教教 学学 课课 件件非法传送种种n段寄存器的操作有一些限制段寄存器的操作有一些限制 段寄存器属专用寄存器,对他们的操作能力有限段寄存器属专用寄存器,对他们的操作能力有限n不允许立即数传送给段寄存器
10、不允许立即数传送给段寄存器MOV DS,100H;立即数不能传送段寄存器立即数不能传送段寄存器n不允许直接改变不允许直接改变CS值值MOV CS,SI;不允许使用的指令不允许使用的指令n不允许段寄存器之间的直接数据传送不允许段寄存器之间的直接数据传送MOV DS,ES;非法非法,不允许段寄存器间传送不允许段寄存器间传送微机原理与接口微机原理与接口教教 学学 课课 件件2、交换指令XCHG(exchange)n把两个地方的数据进行互换把两个地方的数据进行互换XCHG reg,reg/mem;regreg/mem可以在寄存器与寄存器之间交换数据可以在寄存器与寄存器之间交换数据可以在寄存器与存储器之
11、间交换数据可以在寄存器与存储器之间交换数据不能在存储器与存储器之间交换数据不能在存储器与存储器之间交换数据Why微机原理与接口微机原理与接口教教 学学 课课 件件例4.5:寄存器与寄存器数据交换mov ax,1234h;ax=1234hmov bx,5678h;bx=5678hxchg ax,bx;ax=5678h,bx=1234hxchg ah,al;ax=7856h微机原理与接口微机原理与接口教教 学学 课课 件件例4.6:寄存器与存储器数据交换xchg ax,2000h xchg al,2000h微机原理与接口微机原理与接口教教 学学 课课 件件3、换码指令XLAT(translate)
12、n将将BX指指定定的的缓缓冲冲区区中中、AL指指定定的的位位移移处处的的一一个个字字节数据取出赋给节数据取出赋给AL XLAT ;alds:bx+al 换码指令换码指令执行前执行前:要求在主存中建立一个字节表格,:要求在主存中建立一个字节表格,内容是要转换成的目的代码,表格的首地址存放于内容是要转换成的目的代码,表格的首地址存放于BX,AL存放相对表格首地址的位移量存放相对表格首地址的位移量换码指令换码指令执行后执行后:将将AL寄存器的内容转换为目标代寄存器的内容转换为目标代码码微机原理与接口微机原理与接口教教 学学 课课 件件例4.7:代码转换mov bx,100hmov al,03hxla
13、t换码指令使用了隐含寻址的方式,它没有显式的换码指令使用了隐含寻址的方式,它没有显式的操作数,但使用了操作数,但使用了BX和和AL;隐含寻址隐含寻址方式方式采用默认操作数的寻址方式。采用默认操作数的寻址方式。微机原理与接口微机原理与接口教教 学学 课课 件件4、堆栈操作指令(2种)n堆栈的概念堆栈的概念n堆栈的操作堆栈的操作:进栈和出栈:进栈和出栈n堆栈的特点堆栈的特点PUSH r16/m16/seg;进栈指令进栈指令;SPSP2;SS:SPr16/m16/segPOP r16/m16/seg;出栈指令出栈指令;r16/m16/segSS:SP;SPSP2微机原理与接口微机原理与接口教教 学学
14、 课课 件件什么是堆栈?n堆堆栈栈是是一一个个“先先进进后后出出”的的主主存存区区域域,位位于于堆堆栈栈段段中中,使使用用SSSS段段寄寄存存器器记记录录其其段段地地址。址。n堆堆栈栈只只有有一一个个出出口口,即即当当前前栈栈顶顶。栈栈顶顶是是地地址址较较小小的的一一端端(低低端端),它它用用堆堆栈栈指指针针寄存器寄存器SPSP指定。指定。n图图中中,堆堆栈栈没没有有数数据据、是空的。是空的。微机原理与接口微机原理与接口教教 学学 课课 件件堆栈的操作n堆栈只有两种基本操作:进栈和出栈,堆栈只有两种基本操作:进栈和出栈,n用户操作堆栈对应两条指令用户操作堆栈对应两条指令PUSH和和POP。进栈
15、指令进栈指令PUSH:进进栈栈指指令令先先使使堆堆栈栈指指针针SP减减2,然然后后把把一一个个字字操操作作数存入堆栈顶部数存入堆栈顶部出栈指令出栈指令POP:出出栈栈指指令令把把栈栈顶顶的的一一个个字字传传送送至至指指定定的的目目的的操操作作数数,然后堆栈指针然后堆栈指针SP加加2微机原理与接口微机原理与接口教教 学学 课课 件件堆栈的实例和图例push axpush 2000hpop axpop 2000h操作微机原理与接口微机原理与接口教教 学学 课课 件件堆栈的特点n堆栈操作(进栈堆栈操作(进栈/出栈)的单位是字(双字节)出栈)的单位是字(双字节)n数据从压栈和弹出时,都是数据从压栈和弹
16、出时,都是“低对低,高对高低对低,高对高”n堆栈操作遵循先进后出原则堆栈操作遵循先进后出原则n可用存储器寻址随机存取堆栈中的数据可用存储器寻址随机存取堆栈中的数据n堆栈常用来:堆栈常用来:临时存放数据、传递参数、保存和恢复寄存器临时存放数据、传递参数、保存和恢复寄存器微机原理与接口微机原理与接口教教 学学 课课 件件例4.8:现场的保护和恢复npush ax;进入子程序后进入子程序后npush bxnpush dsn.npop ds ;返回主程序前返回主程序前npop bxnpop ax微机原理与接口微机原理与接口教教 学学 课课 件件5、标志位传送指令(4种)LAHF;AHFLAGS的的 低
17、低 字字 节节(出标志)(出标志)nLAHF指指令令将将标标志志寄寄存存器器的的低字节送寄存器低字节送寄存器AHnSF/ZF/AF/PF/CF状状态态标标志志位位 分分 别别 送送 入入 AH的的 第第7/6/4/2/0位位,而而 AH的的 第第5/3/1位任意位任意SAHF;FLAGS的低字节的低字节AHnSAHF将将AH寄寄存存器器内内容容送送FLAGS的低字节的低字节n用用AH的的第第7/6/4/2/0位位相相应应设设置置SF/ZF/AF/PF/CF标志标志微机原理与接口微机原理与接口教教 学学 课课 件件PUSHF;SPSP2;SS:SPFLAGSnPUSHF指指令令将将标标志志寄寄存
18、存器的内容压入堆栈,器的内容压入堆栈,同时栈顶指针同时栈顶指针SP减减2POPF;FLAGSSS:SP;SPSP2nPOPF指指令令将将栈栈顶顶字字单单元内容送标志寄存器,元内容送标志寄存器,同时栈顶指针同时栈顶指针SP加加2微机原理与接口微机原理与接口教教 学学 课课 件件例4.9:置位单步标志npushf;保存全部标志到堆栈保存全部标志到堆栈npop ax;从堆栈中取出全部标志从堆栈中取出全部标志nor ax,0100h;设置设置D8=TF=1n;ax其他位不变其他位不变npush ax;将将ax压入堆栈压入堆栈npopf ;将堆栈内容取到标志寄存器将堆栈内容取到标志寄存器n;即即FLAG
19、SAX微机原理与接口微机原理与接口教教 学学 课课 件件6、目标地址传送指令(3种)n有有效效地地址址LEA(load EA)将将存存储储器器操操作作数数的的有有效效地地址传送至指定寄存器中址传送至指定寄存器中 LEA r16,mem;r16mem的有效地址的有效地址例例4.10:有效地址的获取:有效地址的获取mov bx,0400hmov si,3chlea bx,bx+si+0f62h;BX=139EH ;BX得到的是主存单元的有效地址得到的是主存单元的有效地址EA(偏移地址),偏移地址),不是该单元的内容。不是该单元的内容。微机原理与接口微机原理与接口教教 学学 课课 件件指针传送指令L
20、DS r16,mem;r16mem,;DSmem+2nLDS指指令令将将主主存存中中mem指指定定的的字字送送至至r16,并并将将mem的的下下一一字字送送DS寄存器寄存器LES r16,mem;r16mem,;ESmem+2nLES指指令令将将主主存存中中mem指指定定的的字字送送至至r16,并并将将mem的的下下一一字字送送ES寄寄存器存器微机原理与接口微机原理与接口教教 学学 课课 件件例4.11:地址指针的传送mov word ptr 3060h,0100hmov word ptr 3062h,1450hlds si,3060h;ds=1450h,si=0100hles di,3060
21、h;es=1450h,di=0100h;mem指指定定主主存存的的连连续续4个个字字节节作作为为逻逻辑辑地地址址(32位的地址指针),送入位的地址指针),送入DS:reg或或ES:reg。微机原理与接口微机原理与接口教教 学学 课课 件件7、输入输出指令IN AL/AX,i8/DX;AL/AXI/O端口端口n输输入入IN指指令令将将外外设设数数据据传送给传送给CPU内的内的AL/AXOUT i8/DX,AL/AX;I/O端口端口 AL/AXn输输出出OUT指指令令将将CPU内内的的AL/AX数数据据传传送送给给外外设设8086通过输入输出指令与外设进行数据传送通过输入输出指令与外设进行数据传送
22、微机原理与接口微机原理与接口教教 学学 课课 件件本节要求n数数据据传传送送是是计计算算机机中中最最基基本本、最最重重要要的的一一种种操操作作。传传送指令也是最常使用的一类指令。送指令也是最常使用的一类指令。n传送指令把数据从一个位置传送到另一个位置。传送指令把数据从一个位置传送到另一个位置。n除标志寄存器传送指令外,均除标志寄存器传送指令外,均不影响标志不影响标志位位n重点掌握:重点掌握:MOV/PUSH/POPn特别熟悉:特别熟悉:XCHG/XLAT/LEAn一般了解:一般了解:LAHF/SAHF/PUSHF/POPF/LDS/LESn以后展开:以后展开:IN/OUT微机原理与接口微机原理
23、与接口教教 学学 课课 件件二、算术运算类指令n实现二进制实现二进制/BCD码数据的四则运算码数据的四则运算n1、加法运算:、加法运算:ADD/ADC/INCn2、减法运算:、减法运算:SUB/SBB/DEC/NEG/CMPn3、乘法运算:、乘法运算:MUL/IMULn4、除法运算:、除法运算:DIV/IDIVn5、符号扩展符号扩展:CBW/CWDn6、十进制调整十进制调整:DAA/DAS/AAA/AAS/AAM/AAD微机原理与接口微机原理与接口教教 学学 课课 件件1、加法指令ADD(add)nADD指指令令将将源源与与目目的的操操作作数数相相加加,结结果果送送到到目目的的操操作作数数。按
24、按状状态态标标志志的的定定义义相相应应设设置置0或或1。ADD reg,imm/reg/mem ;regregimm/reg/memADD mem,imm/reg ;memmemimm/reg微机原理与接口微机原理与接口教教 学学 课课 件件例4.12:加法运算mov al,0fbh;al=0fbhadd al,07h;al=02hmov word ptr 200h,4652h;200h=4652hmov bx,1feh;bx=1fehadd al,bl;al=00hadd word ptr bx+2,0f0f0h;200h=3742h微机原理与接口微机原理与接口教教 学学 课课 件件2、带进
25、位加法指令ADC(add with carry)nADC指指令令将将源源与与目目的的操操作作数数相相加加,再再加加上上当当前前进进位位CF标标志志,结结果果送送到到目目的的操操作作数数。按状态标志的定义相应设置按状态标志的定义相应设置0或或1。ADC reg,imm/reg/mem ;regregimm/reg/memCFADC mem,imm/reg ;memmemimm/regCFnADC指指令令主主要要与与ADD配配合合,实实现现多多精精度度加加法法运运算。算。微机原理与接口微机原理与接口教教 学学 课课 件件例4.13:无符号双字加法运算mov ax,4652h;ax=4652hadd
26、 ax,0f0f0h;ax=3742h,CF=1mov dx,0234h;dx=0234hadc dx,0f0f0h;dx=f325h,CF=0;DX.AX0234 4652H;F0F0 F0F0H;F325 3742H微机原理与接口微机原理与接口教教 学学 课课 件件3、增量指令INC(increment)nINC指指令令对对操操作作数数加加1(增增量量)。INC指指令令不不影影响响进进位位CF标标志志,按按定定义义设设置置其其他他状状态态标志。标志。INC reg/mem;reg/memreg/mem1INC指令和指令和DEC指令都是单操作数指令。指令都是单操作数指令。主要用于对计数器和地
27、址指针的调整。主要用于对计数器和地址指针的调整。inc bxinc byte ptr bx微机原理与接口微机原理与接口教教 学学 课课 件件4、减法指令SUB(subtract)nSUB指指令令将将目目的的操操作作数数减减去去源源操操作作数数,结结果果送送到到目目的操作数。按照定义相应设置状态标志。的操作数。按照定义相应设置状态标志。SUB reg,imm/reg/mem ;regregimm/reg/memSUB mem,imm/reg ;memmemimm/reg微机原理与接口微机原理与接口教教 学学 课课 件件例4.14:减法运算mov al,0fbh;al=0fbhsub al,07h
28、;al=0f4hmov word ptr 200h,4652h;200h=4652hmov bx,1feh;bx=1fehsub al,bl;al=06hsub word ptr bx+2,0f0f0h;200h=5562h微机原理与接口微机原理与接口教教 学学 课课 件件5、带借位减法指令SBB(subtract with borrow)nSBB指指令令将将目目的的操操作作数数减减去去源源操操作作数数,再再减减去去借借位位CF(进进位位),结结果果送送到到目目的的操操作作数数。按照定义相应设置状态标志。按照定义相应设置状态标志。SBB reg,imm/reg/mem;regregimm/re
29、g/memCFSBB mem,imm/reg;memmemimm/regCFSBB指令主要与指令主要与SUB配合,实现多精度减法运算。配合,实现多精度减法运算。微机原理与接口微机原理与接口教教 学学 课课 件件例4.15:无符号双字减法运算mov ax,4652h;ax=4652hsub ax,0f0f0h;ax=5562h,CF=1mov dx,0234h;dx=0234hsbb dx,0f0f0h;dx=1143h,CF=1;DX.AX0234 4652H;F0F0 F0F0H;1143 5562H微机原理与接口微机原理与接口教教 学学 课课 件件6、减量指令DEC(decrement)n
30、DEC指指令令对对操操作作数数减减1(减减量量)。DEC指指令令不不影影响进位响进位CF标志,按定义设置其他状态标志。标志,按定义设置其他状态标志。DEC reg/mem;reg/memreg/mem1INC指令和指令和DEC指令都是单操作数指令。指令都是单操作数指令。主要用于对计数器和地址指针的调整。主要用于对计数器和地址指针的调整。dec sidec byte ptr si微机原理与接口微机原理与接口教教 学学 课课 件件7、求补指令NEG(negative)nNEG指指令令对对操操作作数数执执行行求求补补运运算算:用用零零减减去去操操作作数,然后结果返回操作数。数,然后结果返回操作数。n
31、求求补补运运算算也也可可以以表表达达成成:将将操操作作数数按按位位取取反反后后加加1。nNEG指指令令对对标标志志的的影影响响与与用用零零作作减减法法的的SUB指指令令一样一样 NEG reg/mem ;reg/mem0-reg/mem 微机原理与接口微机原理与接口教教 学学 课课 件件例4.16:求补运算mov ax,0ff64hneg al;ax=ff9ch,OF=0、SF=1、ZF=0、PF=1、CF=1sub al,9dh;ax=ffffh,OF=0、SF=1、ZF=0、PF=1、CF=1neg ax;ax=0001h,OF=0、SF=0、ZF=0、PF=0、CF=1dec al;ax
32、=0000h,OF=0、SF=0、ZF=1、PF=1、CF=1neg ax;ax=0000h,OF=0、SF=0、ZF=1、PF=1、CF=0操作微机原理与接口微机原理与接口教教 学学 课课 件件8、比较指令CMP(compare)nCMP指指令令将将目目的的操操作作数数减减去去源源操操作作数数,按按照照定义相应设置状态标志。定义相应设置状态标志。nCMP指指令令执执行行的的功功能能与与SUB指指令令,但但结结果果不回送目的操作数。不回送目的操作数。CMP reg,imm/reg/mem;regimm/reg/memCMP mem,imm/reg;memimm/reg微机原理与接口微机原理与接
33、口教教 学学 课课 件件例4.17:比较AL是否大于100 cmp al,100;al-100 jb below;al100,跳转到跳转到below执行执行 sub al,100;al100,alal-100 inc ah;ahah+1below:.执执行行比比较较指指令令之之后后,可可以以根根据据标标志志判判断断两两个个数数是是否否相相等等、大大小小关关系系等等。所所以以,CMP指指令令后后面面常常跟跟条条件件转移指令,根据比较结果不同产生不同的分支。转移指令,根据比较结果不同产生不同的分支。微机原理与接口微机原理与接口教教 学学 课课 件件9、乘法指令MUL r8/m8;无符号字节乘法无符
34、号字节乘法;AXALr8/m8MUL r16/m16;无符号字乘法无符号字乘法;DX.AXAXr16/m16IMUL r8/m8;有符号字节乘法有符号字节乘法;AXALr8/m8IMUL r16/m16;有符号字乘法有符号字乘法;DX.AXAXr16/m16微机原理与接口微机原理与接口教教 学学 课课 件件乘法指令的功能n乘乘法法指指令令分分无无符符号号和和有有符符号号乘乘法法指指令令:MUL和和IMULn乘乘法法指指令令的的一一个个源源操操作作数数显显式式给给出出,另另一一个个操操作作数数隐含使用隐含使用AL/AX,目标操作数为目标操作数为AX/DX.AX。n字字节节量量相相乘乘:AL与与r
35、8/m8相相乘乘,得得到到16位位的的结结果果,存入存入AX中;中;n字字量量相相乘乘:AX与与r16/m16相相乘乘,得得到到32位位的的结结果果,其高字存入其高字存入DX,低字存入低字存入AX中。中。n乘乘法法指指令令利利用用OF和和CF判判断断乘乘积积的的高高一一半半是是否否具具有有有效数值。有效数值。微机原理与接口微机原理与接口教教 学学 课课 件件乘法指令对标志的影响n乘法指令如下影响乘法指令如下影响OF和和CF标志:标志:nMUL 指指令令若若乘乘积积的的高高一一半半(AH或或DX)为为0,则则OF=CF=0;否则否则OF=CF=1。nIMUL 指指令令若若乘乘积积的的高高一一半半
36、是是低低一一半半的的符符号号扩扩展展,则则OF=CF=0;否则均为否则均为1。n乘乘法法指指令令对对其其他他状状态态标标志志没没有有定定义义:指指令令执执行行后后这这些些标标志志是是任任意意的的、不不可可预预测测(就就是是谁谁也也不不知知道道是是0还还是是1)。)。对标志没有影响是指令的执行不改变标志的状态。对标志没有影响是指令的执行不改变标志的状态。微机原理与接口微机原理与接口教教 学学 课课 件件例4.18:无符号和有符号数的乘法运算mov al,0b4h;al=b4h=180 mov bl,11h;bl=11h=17mul bl;ax=Obf4h=3060,;OF=CF=1;AX高高8位
37、不为位不为0mov al,0b4h ;al=b4h=76mov bl,11h;bl=11h=17imul bl;ax=faf4h=1292,;OF=CF=1;AX高高8位含有效数字位含有效数字操作微机原理与接口微机原理与接口教教 学学 课课 件件10、除法指令DIV r8/m8;无符号字节除法:无符号字节除法:AXr8/m8AL商,商,Ah余余DIV r16/m16;无符号字除法:无符号字除法:DX.AXr16/m16AX商,商,DX余余IDIV r8/m8;有符号字节除法:有符号字节除法:AXr8/m8AL商,商,Ah余余IDIV r16/m16;有符号字除法:有符号字除法:DX.AXr16
38、/m16AX商,商,DX余余微机原理与接口微机原理与接口教教 学学 课课 件件除法指令的功能n除法指令分除法指令分无符号无符号和和有符号有符号除法指令:除法指令:DIV和和IDIVn除除法法指指令令的的除除数数显显式式给给出出(隐隐含含使使用用一一个个操操作作数数AX和和DX作为被除数)。作为被除数)。n字字节节量量除除法法:AX除除以以r8/m8,8位位商商存存入入AL,8位位余余数存入数存入AH;n字字量量除除法法:DX.AX除除以以r16/m16,16位位商商存存入入AX,16位余数存入位余数存入DX。n除法指令对标志没有定义。除法指令对标志没有定义。n除法指令会产生结果溢出除法指令会产
39、生结果溢出微机原理与接口微机原理与接口教教 学学 课课 件件除法错中断n当当被被除除数数远远大大于于除除数数时时,所所得得的的商商就就有有可可能能超超出出它它所所能能表表达达的的范范围围。如如果果存存放放商商的的寄寄存存器器AL/AX不不能能表表达达,便便产产生生溢溢出出,8086CPU中中就就产产生生编编号为号为0的内部中断的内部中断除法错中断。除法错中断。n对对DIV指指令令,除除数数为为0,或或者者在在字字节节除除时时商商超超过过8位,或者在字除时商超过位,或者在字除时商超过16位,则发生除法溢出。位,则发生除法溢出。n对对IDIV指指令令,除除数数为为0,或或者者在在字字节节除除时时商
40、商不不在在-128127范范围围内内,或或者者在在字字除除时时商商不不在在-3276832767范围内,则发生除法溢出。范围内,则发生除法溢出。微机原理与接口微机原理与接口教教 学学 课课 件件例4.19:无符号和有符号数的除法运算mov ax,0400h;ax=400h=1024mov bl,0b4h;bl=b4h=180div bl;商商al05h5;余余ah7ch124mov ax,0400h;ax=400h=1024mov bl,0b4h;bl=b4h=76idiv bl;商商alf3h13;余余ah24h36操作微机原理与接口微机原理与接口教教 学学 课课 件件11、符号扩展指令CB
41、W;AL的符号扩展至的符号扩展至AH;如如AL的的最最高高有有效效位位是是0,则则AH00;AL的的最最高高有有效效位位为为1,则则AHFFH。AL不变。不变。CWD;AX的符号扩展至的符号扩展至DX;如如AX的的最最高高有有效效位位是是0,则则DX00;AX的的最最高高有有效效位位为为1,则则DXFFH。AX不变。不变。什么是什么是符号扩展符号扩展 符号扩展指令常用于获得符号扩展指令常用于获得倍长的数据倍长的数据,如被除数,如被除数 符号扩展指令不影响标志位符号扩展指令不影响标志位微机原理与接口微机原理与接口教教 学学 课课 件件符号扩展的概念n符符号号扩扩展展是是指指用用一一个个操操作作数
42、数的的符符号号位位(即即最最高高位位)形形成成另另一一个个操操作作数数,后后一一个个操操作作数数的的各各位位是是全全0 0(正正数数)或或全全1 1(负负数数)。符符号号扩扩展不改变数据大小。展不改变数据大小。例如:例如:n对对于于数数据据64H(表表示示数数据据100),其其最最高高位位D7为为0,符符号号扩扩展展后后高高8位位都都是是0,成成为为0064H(仍仍表表示示数据数据100)。)。n对对于于数数据据ff00H(表表示示有有符符号号数数-256),其其最最高高位位D15为为1,符符号号扩扩展展后后高高16位位都都是是1,成成为为ffffff00H(仍表示有符号数仍表示有符号数-25
43、6)。)。微机原理与接口微机原理与接口教教 学学 课课 件件例4.20:符号扩展mov al,80h;al=80hcbw;ax=ff80hadd al,255;al=7fhcbw;ax=007fh微机原理与接口微机原理与接口教教 学学 课课 件件例4.21:有符号数除法 AXBXcwdidiv bx 本例中,利用符号扩展指令得到了除法指本例中,利用符号扩展指令得到了除法指令所需要的倍长于除数的被除数令所需要的倍长于除数的被除数DX.AX。对对无符号数除法无符号数除法应该采用直接使高应该采用直接使高8位或位或高高16位清位清0的方法,获得倍长的被除数的方法,获得倍长的被除数。微机原理与接口微机原
44、理与接口教教 学学 课课 件件12、十进制调整指令十进制数调整指令对十进制数调整指令对BCD码码运算的结果进行十进制运算的结果进行十进制调整,以得到正确的调整,以得到正确的BCD码运算结果。码运算结果。BCD码码运算分运算分压缩压缩和和非压缩非压缩两种,它们的调整方法两种,它们的调整方法不同。不同。n压压缩缩BCD码码:一一个个字字节节中中容容纳纳两两个个BCD码码,其其范范围为:围为:00H 99H。n非压缩非压缩BCD码码:一一个个字字节节中中仅仅容容纳纳1个个BCD码码,其范围为:其范围为:00H 09H。微机原理与接口微机原理与接口教教 学学 课课 件件1)压缩BCD码加/减调整指令(
45、ADD AL,i8/r8/m8)(ADC AL,i8/r8/m8)DAA;AL将将AL的的加加和和调调整整为压缩为压缩BCD码码(SUB AL,i8/r8/m8)(SBB AL,i8/r8/m8)DAS;AL将将AL的的减减差差调调整整为压缩为压缩BCD码码使用使用DAA或或DAS指令前,应先执行以指令前,应先执行以AL为目的为目的操作数的加法或减法指令操作数的加法或减法指令 DAA和和DAS指令对指令对OF标志无定义,其他标志受标志无定义,其他标志受影响,例如影响,例如CF反映压缩反映压缩BCD码相加或减的进位码相加或减的进位或借位状态或借位状态微机原理与接口微机原理与接口教教 学学 课课
46、件件压缩BCD码的加减运算示例n实现压缩实现压缩BCD码加法:码加法:682896 mov al,68h;al=68h,压缩压缩BCD码表示真值码表示真值68mov bl,28h;bl=28h,压缩压缩BCD码表示真值码表示真值28add al,bl;二进制加法:二进制加法:al=68h+28h=90hdaa;十进制调整:十进制调整:al=96h n实现压缩实现压缩BCD码减法:码减法:682840mov al,68h;al=68h,压缩压缩BCD码表示真值码表示真值68mov bl,28h;bl=28h,压缩压缩BCD码表示真值码表示真值28sub al,bl;二进制减法:二进制减法:al=
47、68h28h=40hdas;十进制调整:十进制调整:al=40h操作微机原理与接口微机原理与接口教教 学学 课课 件件2)非压缩BCD码加、减调整指令(ADD AL,i8/r8/m8)(ADC AL,i8/r8/m8)AAA;AL将将AL的的加加和和调调整整为非压缩为非压缩BCD码码;AHAH调整的进位调整的进位(SUB AL,i8/r8/m8)(SBB AL,i8/r8/m8)AAS;AL将将AL的的减减差差调调整整为非压缩为非压缩BCD码码;AHAH调整的借位调整的借位使用使用AAA或或AAS指令前,应先执行以指令前,应先执行以AL为目的操为目的操作数的加法或减法指令作数的加法或减法指令
48、AAA和和AAS指令在调整中产生了进位或借位,则指令在调整中产生了进位或借位,则AH要加上进位或减去借位,同时要加上进位或减去借位,同时CF=AF=1,否否则则CF=AF=0;他们对其他标志无定义他们对其他标志无定义微机原理与接口微机原理与接口教教 学学 课课 件件非压缩BCD码的加减运算示例n实现非压缩实现非压缩BCD码加法:码加法:68977mov ax,0608h;ax=0608h,非压缩非压缩BCD码表示真值码表示真值68mov bl,09h;bl=09h,非压缩非压缩BCD码表示真值码表示真值9add al,bl;二进制加法:二进制加法:al=08h+09h=11haaa;十进制调整
49、:十进制调整:ax=0707hn实现非压缩实现非压缩BCD码减法:码减法:680959mov ax,0608h;ax=0608h,非压缩非压缩BCD码表示真值码表示真值68mov bl,09h;bl=09h,非压缩非压缩BCD码表示真值码表示真值9sub al,bl;二进制减法:二进制减法:al=08h09h=ffhaas;十进制调整:十进制调整:ax=0509h操作微机原理与接口微机原理与接口教教 学学 课课 件件3)非压缩BCD码乘、除调整指令(MUL r8/m8)AAM;AX将将AX的的积积调调整整为非压缩为非压缩BCD码码(DIV r8/m8)AAD;AX将将AX中中的的商商调调整为非
50、压缩整为非压缩BCD码码AAM指令跟在字节乘指令跟在字节乘MUL之后,将乘积调整为之后,将乘积调整为非压缩非压缩BCD码码AAD指令跟在字节除指令跟在字节除DIV之前,先将非压缩之前,先将非压缩BCD码的被除数调整为二进制数码的被除数调整为二进制数AAM和和AAD指令根据结果设置指令根据结果设置SF、ZF和和PF,但但对对OF、CF和和AF无定义无定义微机原理与接口微机原理与接口教教 学学 课课 件件非压缩BCD码的乘除运算示例n实现非压缩实现非压缩BCD码乘法:码乘法:8972mov ax,0608h;ax=0608h,非非压压缩缩BCD码码表表示示真真值值68mov bl,09h;bl=0