《最新微机原理第3章微型计算机原理及应用教案PPT课件》由会员分享,可在线阅读,更多相关《最新微机原理第3章微型计算机原理及应用教案PPT课件(69页珍藏版)》请在金锄头文库上搜索。
1、微机原理第微机原理第3 3章微型计算机章微型计算机原理及应用教案原理及应用教案第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 寻址方式寻址方式3.2中断及中断返回中断及中断返回3.4指令与指令系统指令与指令系统3.180868086指令系统指令系统3.3第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 第第3 3章章 8088/8086MPU8088/
2、8086MPU的指令系统的指令系统 第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 .3.3.双操作数指令双操作数指令对对于于常常用用的的算算术术和和逻逻辑辑运运算算指指令令,往往往往要要求求使使用用两两个个操操作作数数,一一个个叫叫做做原原操操作作数数/ /地地址址,另另一一个个叫叫做做目目的的操操作作数数/ /地地址址,需需分分别别给给出出目目的的操操作作数数和和源源操操作作数数的的
3、地地址址,其其中中目目的的操操作作数数地地址址还还用用于于保保存存本本次次的的运运算算结结果果。称称这这类类指指令令为为双双操操作作数指令。数指令。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 4.4.多操作数指令多操作数指令另另外外一一些些指指令令可可能能使使用用多多个个操操作作数数,如如3 3个个操操作作数数,其其中中两两个个操操作作数数地地址址分分别别给给出出目目的的操操作作数数和和源源操操作作数数的的地地址址,第第三三个个操操作作数数地地址址用用于于指指出出保保存存本本次次的的运运算算结结果果的的去去处处。可可以以称称这这类类指指令令为为三三操操
4、作作数数指指令令;在在有有些些性性能能更更高高的的计计算算机机(甚甚至至PCPC机机)中中,还还有有在在指指令令中中使使用用更更多多个个操操作作数数地地址址的的指指令令,用用于于完完成成对对一一批批数数据据的的处处理理过过程程,如如字字符符串串复复制制指指令令,向量、矩阵运算指令等,称这类指令为多操作数指令。向量、矩阵运算指令等,称这类指令为多操作数指令。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3.1.3 3.1.3 指令系统指令系统 指指令令系系统统是是指指一一台台计计算算机机所所能能执执行行的的各各种种不不同同类类型型指指令令的的总总和和。即即
5、一一台台计计算算机机所所能能执执行行的的全全部部操操作作。不不同同计计算算机机的的指指令令系系统统包包含含的的指指令令种种类类和和数数目目也也不不同同。指指令令系系统统是是表表征征一一台台计计算算机机性性能能的的重重要要因因素素,它它的的格格式式与与功功能能不不仅仅直直接接影影响响到到机机器器的的硬硬件件结结构构,而而且且也也直直接接影影响响到到系系统统软软件件,影影响响到到机机器器的适用范围。的适用范围。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 寻址方式寻址方式3.2中断及中断返回中断及中断返回3.4指令与指令系统指令与指令系统3.18086808
6、6指令系统指令系统3.3第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3.2 3.2 寻址方式寻址方式 3.2.1 3.2.1 立即寻址方式立即寻址方式 操操作作数数作作为为指指令令的的一一部部分分而而直直接接写写在在指指令令中中,这这种种操操作作数称为立即数,这种寻址方式也就称为立即数寻址方式。数称为立即数,这种寻址方式也就称为立即数寻址方式。【例例3-13-1】MOV AX,1234HMOV AX,1234H注意:立即数不能能够作为目的操作数。注意:立即数不能能够作为目的操作数。不能直接给段寄存器和标志寄存器赋予立即数。不能直接给段寄存器和标志寄存器
7、赋予立即数。这种寻址方式操作数在指令中。这种寻址方式操作数在指令中。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3.2.2 3.2.2 寄存器寻址方式寄存器寻址方式 指指令令所所要要的的操操作作数数已已经经在在某某寄寄存存器器中中,表表示示指指令令时时,或或把把目目标标操操作作数数存存入入寄寄存存器器。把把在在指指令令中中指指出出所所使使用用寄寄存存器器( (即即:寄寄存存器的名字器的名字) )的寻址方式称为寄存器寻址方式。的寻址方式称为寄存器寻址方式。指令中可以引用的寄存器及其符号名称如下:指令中可以引用的寄存器及其符号名称如下:8 8位寄存器位寄存
8、器有:有:AHAH、ALAL、BHBH、BLBL、CHCH、CLCL、DHDH和和DLDL等;等;1616位位寄寄存存器器有有:AXAX、BXBX、CXCX、DXDX、SISI、DIDI、SPSP、BPBP和和段段寄寄存存器等;器等;第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 1.1.源操作数是寄存器寻址方式源操作数是寄存器寻址方式如:如: ADD VARW, AXADD VARW, AX MOV VARB, BHMOV VARB, BH等。等。其其中中: VARWVARW和和VARBVARB是是双双字字,字字和和字字节节类类型型的的内内存存地地址址,
9、叫做符号地址。叫做符号地址。2.2.目的操作数是寄存器寻址方式目的操作数是寄存器寻址方式如:如:ADD BH, 78HADD BH, 78H ADD AX, 1234H ADD AX, 1234H等。等。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3.3.源和目的操作数都是寄存器寻址方式源和目的操作数都是寄存器寻址方式如:如: MOV AX, BXMOV AX, BX MOV DH, BLMOV DH, BL等。等。【例例3-23-2】MOV AXMOV AX,BXBX指令执行前:(指令执行前:(AXAX)=3064H =3064H (BXBX)=12
10、34H=1234H指令执行后:(指令执行后:(AXAX)=1234H=1234H,BXBX内容未改变。内容未改变。注意:注意:源寄存器与目的寄存器的位数必须一致。源寄存器与目的寄存器的位数必须一致。 这种寻址方式操作数在这种寻址方式操作数在CPUCPU中。中。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3.2.3 RAM3.2.3 RAM寻址方式寻址方式 OpdOpd也也可可以以存存放放在在存存储储器器中中,这这种种寻寻址址方方式式叫叫做做存存储储器器寻寻址址,存存储储器器寻寻址址的的关关键键是是如如何何给给出出存存储储器器的的地地址址,给给出出方方式
11、式不不同同,寻寻址址方方式式也也有有多种。多种。 1.1.直接寻址方式直接寻址方式【例例3-33-3】MOV AX,2000HMOV AX,2000H指令执行前:(指令执行前:(DSDS)=3000H=3000H,(,(32000H32000H)=50H=50H,(,(32001H32001H)=30H=30H操作数的物理地址操作数的物理地址=3000H*10H+2000H=32000H=3000H*10H+2000H=32000H指令的操作是把指令的操作是把32000H32000H字存储单元的内容送字存储单元的内容送AXAX寄存器。寄存器。指令执行后:(指令执行后:(AXAX)=3050H=
12、3050H第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 .2 2. .寄存器间接寻址方式寄存器间接寻址方式操操作作数数在在存存储储器器中中,操操作作数数的的有有效效地地址址用用SISI、DIDI、BXBX和和BPBP等等四四个个寄寄存存器器之之一一来来指指定定,称称这这种种寻寻址址方方式式为为寄寄存存器器间间接接寻址方式。该寻址方式物理地址的计算方法如下:寻址方式。该寻址方式物理地址的计算方法如下:若若指指令令中中指指定定的的寄寄存存器器是是BPBP,操操作作数数在在堆堆栈栈段段,段段基基值值在在SSSS中。中。物物理理地地址址= =(SSSS)* *1
13、0h+(BP) 10h+(BP) -基基地地址址指指针针寄寄存存器器,可对指针进行修改形成下一个地址。可对指针进行修改形成下一个地址。(BX)-基址寄存器基址寄存器(SI)-源变址寄存器源变址寄存器(DI)-目的变址寄存器目的变址寄存器物理地址物理地址=(DS)*10H+第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3.3.寄存器相对寻址方式寄存器相对寻址方式该该寻寻址址方方式式是是以以指指定定的的寄寄存存器器内内容容,加加上上指指令令中中给给出出的的位位移移量量(8 8位位或或1616位位),并并以以一一个个段段寄寄存存器器为为基基准准,作作为为操操作
14、作数数的的地地址址。指指定定的的寄寄存存器器一一般般是是一一个个基基址址寄寄存存器器或或变变址址寄寄存器。存器。寄寄存存器器相相对对寻寻址址通通过过基基址址寄寄存存器器BXBX,BPBP或或变变址址寄寄存存器器SISI,DIDI与与一一个个位位移移量量相相加加形形成成有有效效地地址址(EAEA),计计算算物物理理地地址址(PAPA)的缺省段仍然是)的缺省段仍然是SISI,DIDI和和BXBX为为DSDS,BPBP为为SSSS。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 (BX)(SI)(DI)DISP8DISP16PA=(ES)*10H+DISPDIS
15、P叫叫做做位位移移量量,实实际际上上它它是是一一个个数数值值,可可以以是是8 8位位也也可以是可以是1616位。位。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 4 4. .基址加变址寻址方式基址加变址寻址方式这这是是一一种种基基址址加加变变址址来来定定位位操操作作数数地地址址的的方方式式,操操作作数数的的有有效效地地址址是是一一个个基基址址寄寄存存器器(BPBP或或BXBX)和和一一个个变变址址寄寄存存器器(SISI或或DIDI)的内容之和。)的内容之和。MOV CL,BX+SIMOV CL,BX+SIPA=(DS)*10H+(BX)+(SI)PA=(
16、DS)*10H+(BX)+(SI)MOV CH,BX+DIMOV CH,BX+DIPA=(DS)*10H+(BX)+(DI)PA=(DS)*10H+(BX)+(DI)第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 4 4. .基址加变址寻址方式基址加变址寻址方式这这是是一一种种基基址址加加变变址址来来定定位位操操作作数数地地址址的的方方式式,操操作作数数的的有有效效地地址址是是一一个个基基址址寄寄存存器器(BPBP或或BXBX)和和一一个个变变址址寄寄存存器器(SISI或或DIDI)的内容之和。)的内容之和。MOV AX,BP+SIMOV AX,BP+SI
17、PA=(SS)*10H+(BP)+(SI)PA=(SS)*10H+(BP)+(SI)MOV DX,BP+DIMOV DX,BP+DIPA=(SS)*10H+(BP)+(DI)PA=(SS)*10H+(BP)+(DI)第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 5.5.相对基址加变址寻址方式相对基址加变址寻址方式操操作作数数的的有有效效地地址址是是基基址址加加变变址址,再再加加上上一一个个位位移移量量得得到。一般用于寻址复杂的数组中的元素。到。一般用于寻址复杂的数组中的元素。MOV DHMOV DH,BX+DI+20HBX+DI+20H源操作数源操作数P
18、A=PA=(DSDS)* *10H+10H+(BXBX)+ +(SISI)+20H+20H;其其中中20H20H即为即为DISPDISP第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 5.5.相对基址加变址寻址方式相对基址加变址寻址方式MOV AXMOV AX,FILEBX+SI FILEBX+SI ;FILEFILE为符号表示的为符号表示的DISPDISP源操作数源操作数PA=PA=(DSDS)* *10H+10H+(BXBX)+ +(SISI)+FILE+FILEMOV LISTBP+SIMOV LISTBP+SI,AXAX目的操作数目的操作数PA=P
19、A=(SSSS)* *10H+10H+(BPBP)+ +(SISI)+LIST+LIST第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 寻址方式寻址方式3.2中断及中断返回中断及中断返回3.4指令与指令系统指令与指令系统3.180868086指令系统指令系统3.3第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3.3 80863.3 8086指令系统指令系统3.3.1 3.3.1 数据传送指令数据传送指令 1.1.通用数值传送指令(通用数值传送指令(MOVMOV)格式格式:MOV DSTMOV DST,SRCSRC其其
20、中中,DSTDST表表示示目目的的操操作作数数或或地地址址,SRCSRC表表示示源源操操作作数数或或地址。地址。功功能能:把把一一个个字字节节或或字字从从源源操操作作数数传传送送到到目目的的操操作作数数,即即DSTDST(SRC),(SRC),目的操作数原有内容消失。目的操作数原有内容消失。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 注意事项:注意事项:l立即树不能为目的操作数。立即树不能为目的操作数。lCSCS不能是目的操作数,只能作为源操作数。不能是目的操作数,只能作为源操作数。l目目的的操操作作数数与与源源操操作作数数不不能能同同时时用用存存储储
21、器器寻寻址址方方式式。(这一点适用于所有指令)(这一点适用于所有指令)l不同类型的数据不能传送。不同类型的数据不能传送。l立即数不能直接送段寄存器。立即数不能直接送段寄存器。l MOVMOV指令不影响标志位。指令不影响标志位。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 2.2.堆栈指令:堆栈指令:格式格式1 1:PUSH SRCPUSH SRC功功 能能 : PUSH PUSH 是是 压压 栈栈 指指 令令 。 把把 栈栈 顶顶 指指 针针 减减 2 2, 即即SPSP(SP)-2;(SP)-2;将源操作数送到栈顶指针所指示的栈顶单元。将源操作数送到栈
22、顶指针所指示的栈顶单元。格式格式2 2:POP DSTPOP DST功功能能:退退栈栈指指令令,把把栈栈顶顶的的字字数数据据从从堆堆栈栈中中弹弹出出送送目目的的操作数。操作数。DSTDST(SP);(SP); (SPSP)(SP)+2(SP)+2第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 注意事项注意事项: :lPUSH PUSH 和和POP POP 指令只能是字操作指令只能是字操作, ,不能是字节操作。不能是字节操作。lPOPPOP的的DSTDST不允许是不允许是CSCS寄存器。寄存器。lPUSHPUSH和和POP POP 指令不能使用立即数方式。指
23、令不能使用立即数方式。lPUSH PUSH 和和 POPPOP不影响标志位。不影响标志位。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3 3. .交换指令交换指令: (XCHG): (XCHG)格式格式: :XCHG OPR1,OPR2XCHG OPR1,OPR2其中,其中,OPROPR代表操作数寄存器。代表操作数寄存器。功能:功能:(OPR1OPR1)()(OPR2OPR2)注意:注意:l两个操作数不能同时在存储器中。也不能为立即数。两个操作数不能同时在存储器中。也不能为立即数。l不允许使用段寄存器。不允许使用段寄存器。l不影响标志位。不影响标志位。
24、第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 4.4.换码指令换码指令: XLAT: XLAT(查表指令)(查表指令)格式格式: XLAT : XLAT 或或 XLAT OPRXLAT OPR功能功能: (AL): (AL)(DS)*10H+(BX)+(AL)(DS)*10H+(BX)+(AL)根根据据 ALAL寄寄存存器器提提供供的的位位移移量量, ,将将BXBX指指示示的的字字节节表表格格中中的的代码换存到代码换存到ALAL中中. .注意事项注意事项: :所建字节表格长度不能超过所建字节表格长度不能超过256B.256B.不影响标志位不影响标志位.
25、.第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 5.5.累加器专用传送指令累加器专用传送指令:IN IN 指令:指令:固定端口:固定端口:格式:格式:IN ALIN AL,Port /Port=0FFHPort /Port0FFH IN AL,DX /Port0FFH 功能功能: :将将I/OI/O端口经端口经DXDX送送ALAL或或AXAX寄存器。寄存器。 (AL)(AL)(DX)(DX) (AX) (AX)(DX)+1: (DX)(DX)+1: (DX)第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 OUTOUT
26、指令指令 : :格式格式1: OUT Port,AL /Port=0FFH1: OUT Port,AL /Port0FFH2: OUT DX,AL /Port0FFH功能功能: :将将ALAL或或AXAX中的数据经中的数据经DXDX寄存器送往寄存器送往I/OI/O端口端口. . (DX)(DX)(AL)(AL) (DX)+1: (DX) (DX)+1: (DX)(AX)(AX)注意事项注意事项: :不影响标志位。不影响标志位。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3.3.2 3.3.2 地址传送指令地址传送指令 1 1. .有效地址装入指令(有效
27、地址装入指令(LEALEA)格式:格式:LEA REGLEA REG,SRCSRC功能:把源操作数的有效地址装入指定的目标寄存器。功能:把源操作数的有效地址装入指定的目标寄存器。注意事项:注意事项:源源操操作作数数的的数数据据类类型型可可以以是是字字节节或或字字,而而目目的的寄寄存存器器必必须是须是1616位的通用寄存器。位的通用寄存器。LEALEA处处理理的的是是存存储储单单元元的的有有效效地地址址,MOVMOV指指令令处处理理的的是是存存储单元的内容。储单元的内容。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 2.2.双指针装入指令(双指针装入指令(
28、LDSLDS,LESLES)格式:格式:LDS REGLDS REG,SRCSRC LES REG LES REG,SRCSRC功功能能:把把双双字字长长操操作作数数低低地地址址之之中中内内中中的的偏偏移移量量装装入入指指定的目的寄存器。定的目的寄存器。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3.3.3 3.3.3 标志寄存器传送指令标志寄存器传送指令 标志寄存器传送(有四条标志传送指令)标志寄存器传送(有四条标志传送指令)1.LAHF 1.LAHF (LOAD AH WITH FLAGLOAD AH WITH FLAG)将将标标志志寄寄存存器器中
29、中的的SFSF、ZFZF、AFAF、PFPF和和CFCF(即即低低8 8位位)传传送送至至AHAH寄寄存存器器的的指指定位,空位没有定义。定位,空位没有定义。2.SAHF 2.SAHF (STORESTORE AH WITH FLAG AH WITH FLAG)将将寄寄存存器器AHAH的的指指定定位位,送送至至标标志志寄寄存存器器的的SFSF、ZFZF、AFAF、PFPF和和CFCF位位(即即低低8 8位)。根据位)。根据AHAH的内容,影响上述标志位,对的内容,影响上述标志位,对OFOF、DFDF和和IFIF无影响。无影响。3.PUSHF 3.PUSHF (PUSH FLAGPUSH FLA
30、G)将标志寄存器压入堆栈顶部,同时修改堆栈指针,不影响标志位。将标志寄存器压入堆栈顶部,同时修改堆栈指针,不影响标志位。4.4. POPF POPF (POP FLAGPOP FLAG)堆栈顶部的一个字,传送到标志寄存器,同时修改堆栈指针,影响标志位。堆栈顶部的一个字,传送到标志寄存器,同时修改堆栈指针,影响标志位。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3.3.4 3.3.4 算术运算指令算术运算指令1.1.加法指令:加法指令:格式格式1 1:ADD DSTADD DST,SRC SRC 功功能能:不不带带进进位位的的加加法法,将将源源操操作作数
31、数与与目目的的操操作作数数相相加加,将将和和放放入入目目的的操操作数地址中。作数地址中。DSTDST(SRCSRC)+ +(DSTDST)格式格式2: ADC DST,SRC2: ADC DST,SRC功功能能: :带带进进位位的的加加法法, ,将将源源操操作作数数、目目的的操操作作数数以以及及标标志志寄寄存存器器中中的的进进位位标标志位相加,并将和放入目的操作数中。志位相加,并将和放入目的操作数中。DSTDSTSRC+DST+CFSRC+DST+CF格式格式3:INC OPR3:INC OPR功能功能: :将目的操作数加将目的操作数加1,1,放入目的操作数中放入目的操作数中. .OPROPR
32、OPR+1OPR+1第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 注意事项注意事项: :ADDADD和和ADCADC指指令令是是双双操操作作数数指指令令,它它们们的的两两个个操操作作数数不不能能同同时时为为存存储储器器寻寻址址方方式式,源源操操作作数数和和目目的的操操作作数数必必须须有有一一个个是是寄寄存存器器寻寻址址方方式式。INCINC可可以以是是 除除立立即即数数以以外外的的任任何何寻寻址址方方式。式。ADDADD、ADCADC影影响响条条件件标标志志位位,INCINC影影响响除除了了CFCF之之外外的的其其他他条件码。条件码。第第3 3章章 80
33、88/8086MPU8088/8086MPU的指令系统的指令系统 条件码的设置情况:条件码的设置情况:SF=1 SF=1 加法结果为负数加法结果为负数SF=0 SF=0 加法结果为正数加法结果为正数ZF=1 ZF=1 加法结果为加法结果为0 0ZF=0 ZF=0 加法结果不为加法结果不为0 0CF=1 CF=1 最高有效位向高位有进位最高有效位向高位有进位CF=0 CF=0 最高有效位向高位无进位最高有效位向高位无进位OF=1 OF=1 两个同符号数相加,结果符号与两个同符号数相加,结果符号与 其相反其相反OF=0 OF=0 不同符号数相加时,或同符号数相加,结果符号与其相同不同符号数相加时,
34、或同符号数相加,结果符号与其相同第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 2 2. .减法指令减法指令: : 格式格式1: SUB DST,SRC1: SUB DST,SRC功能功能: (DST): (DST)(DST)-(SRC)(DST)-(SRC)格式格式2:SBB DST,SRC2:SBB DST,SRC功能功能: (DST): (DST)(DST)-(SRC)-CF(DST)-(SRC)-CF格式格式3:DEC OPR3:DEC OPR功能功能: (OPR): (OPR)(OPR)-1(OPR)-1格式格式4: CMP OPR1,OPR24
35、: CMP OPR1,OPR2功能功能: (OPR1)-(OPR2) ,: (OPR1)-(OPR2) ,根据相减的结果设置条件码根据相减的结果设置条件码, ,但不回送结果但不回送结果. .格式格式5:NEG OPR5:NEG OPR功功能能: : (OPR)(OPR)-(OPR)+1,-(OPR)+1,求求操操作作数数的的补补码码,即即对对OPROPR取取非非后后,末末位位再加再加1.1.第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 条件码设置条件码设置: :CF=1 CF=1 二二进进制制减减法法运运算算中中最最高高有有效效位位向向更更高高位位有有借
36、借位位( (被减数被减数 =减数减数) )OF=1 OF=1 两数符号相反两数符号相反, ,而结果符号与减数相同而结果符号与减数相同OF=0 OF=0 同同符符号号数数相相减减时时, ,或或不不同同符符号号数数相相减减时时, ,其其结结果果符符号与减数不同号与减数不同第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3.3.乘法指令乘法指令: :格式格式1 1:MUL SRC /MUL SRC /无符号数乘法无符号数乘法功能功能: (AX): (AX)(AL)*(SRC) (AL)*(SRC) 格式格式2 2:IMUL SRC /IMUL SRC /带符号数
37、乘法带符号数乘法功能功能: (DX,AX): (DX,AX)(AX)*(SRC)(AX)*(SRC)注意注意: :影响影响CF,OF.CF,OF.对于对于MUL, CF OF =0 0 MUL, CF OF =0 0 乘积高一半为乘积高一半为0 0 CF OF=1 1 CF OF=1 1 乘积高一半不为乘积高一半不为0 0对于对于IMUL,CF OF=0 0 IMUL,CF OF=0 0 乘积的高一半为低一半的符号乘积的高一半为低一半的符号 扩展扩展. . CF OF=1 1 CF OF=1 1 其他情况其他情况. .第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的
38、指令系统 4.4.除法指令:除法指令:格式格式1 1:DIV SRC /DIV SRC /无符号数除法无符号数除法格式格式2: IDIV SRC /2: IDIV SRC /有符号数除法有符号数除法功能:功能:字节除法字节除法: :(ALAL)(AX)/SRC(AX)/SRC的商的商 (AH)(AH)(AX)/SRC(AX)/SRC的余数的余数字除法字除法: (AX): (AX)(DX,AX)/SRC(DX,AX)/SRC的商的商 (DX)(DX)(DX,AX)/SRC(DX,AX)/SRC的余数的余数注注意意事事项项: :不不影影响响条条件件码码。当当除除数数为为0 0或或商商溢溢出出时时由
39、由系系统统直直接接转转入入0 0型中断来处理。型中断来处理。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3.3.5 3.3.5 逻辑运算指令逻辑运算指令 格式格式1 1:AND DSTAND DST,SRCSRC功能:逻辑与,(功能:逻辑与,(DSTDST)(DST)(SRC)(DST)(SRC)格式格式2: OR DST,SRC2: OR DST,SRC功能功能: :逻辑或逻辑或,(DST),(DST)(DST)(SRC)(DST)(SRC)格式格式3: NOT OPR3: NOT OPR功能:逻辑非,()功能:逻辑非,()(OPR#)(OPR#)格
40、式格式4: XOR DST,SRC4: XOR DST,SRC功能功能: :逻辑异或逻辑异或,(DST),(DST)(DST)(SRC)(DST)(SRC)格式格式5:TEST OPR1,OPR25:TEST OPR1,OPR2功能功能: :根据与运算结果根据与运算结果, ,设置条件码设置条件码, ,结果不回送结果不回送. .第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 注意事项:注意事项:这这是是一一组组位位操操作作指指令令,它它们们可可以以对对字字或或字字节节按按位位执执行行逻逻辑操作,因此源操作数经常为一个位串。辑操作,因此源操作数经常为一个位串。
41、NOT NOT 不影响标志位。不影响标志位。其其他他指指令令指指令令后后,CFCF、OFOF置置0 0,AFAF无无定定义义,SFSF、ZFZF、PFPF根据运算结果设置。根据运算结果设置。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3.3.6 3.3.6 移位指令移位指令 格式格式1 1:SHL DSTSHL DST,CNTCNT功能:逻辑左移,最低位补功能:逻辑左移,最低位补0 0,最高位移到,最高位移到CFCF中。中。格式格式2 2:SHR DSTSHR DST,CNTCNT功能:逻辑右移,最高位补功能:逻辑右移,最高位补0 0,最低位移到,最低
42、位移到CFCF中。中。格式格式3 3:SAL DSTSAL DST,CNTCNT功能:算术左移,最高位移到功能:算术左移,最高位移到CFCF中,最低位补中,最低位补0 0。格式格式4 4:SAR DSTSAR DST,CNTCNT功能:算术右移,最高位用符号位的值补充,最低位移到功能:算术右移,最高位用符号位的值补充,最低位移到CFCF中。中。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 格式格式5 5:ROL DSTROL DST,SRCSRC功能:循环左移,最高位移到最低位,其余各位依次左移。功能:循环左移,最高位移到最低位,其余各位依次左移。格式格
43、式6 6:ROR DSTROR DST,SRCSRC功能:循环右移,最低位移到最高位,其余各位依次右移。功能:循环右移,最低位移到最高位,其余各位依次右移。格式格式7 7:RCL DSTRCL DST,SRCSRC功功能能:带带进进位位的的循循环环左左移移。CFCF移移到到最最低低位位,操操作作数数最最高高位位移移到到CFCF,其余各位依次左移。其余各位依次左移。格式格式8 8:RCR DSTRCR DST,SRCSRC功功能能:带带进进位位的的循循环环右右移移。CF CF 移移到到最最高高位位,最最低低位位移移到到CFCF,其其余余各位依次右移。各位依次右移。第第3 3章章 8088/808
44、6MPU8088/8086MPU的指令系统的指令系统 3.3.7 3.3.7 控制转移指令控制转移指令1.1.无条件转移指令无条件转移指令无条件转移指令无条件转移指令JMPJMP分直接转移和间接转移两种。分直接转移和间接转移两种。一般格式:一般格式: JMP OPRD JMP OPRD ;OPRDOPRD是转移的目的地址是转移的目的地址(1 1)短程转移)短程转移 JMP SHORT OPRD JMP SHORT OPRD ;IP=IP+8IP=IP+8位位移量位位移量目的地址与目的地址与JMPJMP指令所处地址的距离应在指令所处地址的距离应在-128-128127127范围之内。范围之内。(
45、2 2)近程转移)近程转移 JMP NEAR PTR OPRD JMP NEAR PTR OPRD ;IP=IP+16IP=IP+16位位移量位位移量 或或 JMP OPRD JMP OPRD ;NEARNEAR可省略可省略目的地址与目的地址与JMPJMP指令应处于同一地址段范围之内。指令应处于同一地址段范围之内。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 (3 3)远远程程转转移移 JMP JMP FAR FAR PTR PTR OPRD OPRD ;IP=OPRDIP=OPRD的的段段内内位位移移量量,CS=OPRDCS=OPRD所在段地址。所在段
46、地址。远远程程转转移移是是段段间间的的转转移移,目目的的地地址址与与JMPJMP指指令令所所在在地地址址不不在在同同一一段段内内。执执行该指令时要修改行该指令时要修改CSCS和和IPIP的内容。的内容。间接转移指令的目的地址可以由存储器或寄存器给出。间接转移指令的目的地址可以由存储器或寄存器给出。(4 4)段段内内间间接接转转移移 JMP JMP WORD WORD PTR PTR OPRD OPRD ;IP=EA IP=EA (由由OPRDOPRD的的寻寻址址方式确定)。方式确定)。JMP WORD PTRBX IP=JMP WORD PTRBX IP=(DSDS)* *16+16+(BXB
47、X)JMP WORD PTR BX IP=JMP WORD PTR BX IP=(BXBX)(5 5)段间间接转移)段间间接转移 JMP DOWRD PTR OPRDJMP DOWRD PTR OPRD;IP=EAIP=EA,CS=EA+2CS=EA+2该该指指令令指指定定的的双双字字节节指指针针的的第第一一个个字字单单元元内内容容送送IPIP,第第二二个个字字单单元元内内容容送送CSCS。JMP DWORD PTR BX+SIJMP DWORD PTR BX+SI第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 2.2.条件转移条件转移80868086有有
48、1818条条不不同同的的条条件件转转移移指指令令。它它们们根根据据标标志志寄寄存存器器中中各各标标志志位位的的状状态态,决决定定程程序序是是否否进进行行转转移移,满满足足条条件件转转移移,不不满满足足条条件件则则顺顺序序执执行行。条条件件转转移移指指令令的的目目的的地地址址必必须须在在现现行行的的代代码码段段(CS)(CS)内内,并并且且以以当当前前指指针针寄寄存存器器IPIP内内容容为为基基准准,其位移必须在十其位移必须在十127127128128的范围之内。的范围之内。 3.3.循环指令循环指令对对于于需需要要重重复复进进行行的的操操作作,微微机机系系统统可可用用循循环环程程序序结结构构来
49、来进进行行,8086/80888086/8088系系统统为为了了简简化化程程序序设设计计,设设置置了了一一组组循循环环指指令令,这这组组指指令令主主要要对对CXCX或标志位或标志位ZFZF进行测试,确定是否循环进行测试,确定是否循环 表表3-2循循环指令表指令表指令格式指令格式执行操作行操作LOOP OPRDCX=CX-1;若;若CX0,则循循环LOOPNZ/LOOPNE OPRDCX=CX-1,若,若CX0 且且ZF=0,则循循环LOOPZ/LOOPE OPRDCX=CX-1,若,若CX0 且且ZF=1,则循循环第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令
50、系统 4.4.子程序调用与返回子程序调用与返回CALLCALL指指令令用用来来调调用用一一个个过过程程或或子子程程序序。由由于于过过程程或或子子程程序有段间序有段间( (即远程即远程FAR)FAR)和段内调用和段内调用( (即近程即近程NEAR)NEAR)之分。之分。所所以以CALLCALL也也有有FARFAR和和NEARNEAR之之分分。因因此此RETRET也也分分段段间间与与段段内内返回两种。返回两种。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 调用指令一般格式为:调用指令一般格式为:段内调用段内调用 CALL NEAR PTR OPRD CALL
51、 NEAR PTR OPRD ; 操操 作作 SP=SP-2SP=SP-2,(SPSP)+1+1,(SPSP)=IP=IP,IP=IP+16IP=IP+16位位位位移移量量 CALLCALL指指令令首首先先将将当当前前IPIP内内容容压压入入堆堆栈栈。当当执执行行RETRET指指令令而而返返回回时时,从堆栈中取出一个字放入从堆栈中取出一个字放入IPIP中。中。段间调用段间调用 CALL FAR PTR OPRD CALL FAR PTR OPRD ; 操操 作作 SP=SP-2SP=SP-2,(SPSP)+1+1),(SPSP)=CS=CS;SP=SP-2SP=SP-2,(SPSP)+1+1)
52、,(),(SPSP)=IP=IP;IP=EAIP=EA;CS=EA+2CS=EA+2CALLCALL指指令令先先把把CSCS压压入入堆堆栈栈,再再把把IPIP压压入入堆堆栈栈。当当执执行行RETRET指指令令而而返返回回时时,从从堆堆栈栈中中取取出出一一个个字字放放入入IPIP中中,然然后后从从堆堆栈栈中中再再取取出出第第二二个个字字放放入入CSCS中,作为段间返回地址。中,作为段间返回地址。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 返回指令格式有:返回指令格式有:RET RET ;SP=SP=(SP+1SP+1),),SPSP),),SP=SP+2
53、 SP=SP+2 RET n RET n ;SP=SP=(SP+1SP+1),),SPSP),),SP=SP+2 SP=SP+nSP=SP+2 SP=SP+nRET RET n n指指令令要要求求n n为为偶偶数数,当当RETRET正正常常返返回回后后,再再做做SP=SP+nSP=SP+n操作。操作。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3.3.83.3.8字符串操作指令字符串操作指令字字符符串串操操作作指指令令处处理理放放在在存存储储器器中中的的字字节节串串或或字字串串,串串处处理理的的方方向向有有方方向向标标志志位位DFDF决决定定,串串处处
54、理理指指令令之之前前可可加加重重复复前前缀缀,在在执执行行串串处处理理指指令令时时,源源串串的的指指针针SISI和和目目的的串串的的指指针针DIDI根据根据DFDF的指示自动增量(的指示自动增量(+1+1或或+2+2)或自动减量()或自动减量(-1-1或或-2-2)第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 1.1.设置方向标志指令:设置方向标志指令:格式格式1 1:CLD CLD 功能:功能:DFDF置置0 0,串处理的方向是自动增量。,串处理的方向是自动增量。格式格式2 2:STDSTD功能:功能:DFZDFZ置置1 1,串处理的方向是自动减量。,
55、串处理的方向是自动减量。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 2.2.串处理指令串处理指令格式格式1 1: MOVSB MOVSB 或或MOVSW MOVSW 功能:串传送,传字节或传字。功能:串传送,传字节或传字。(ES:DI)(ES:DI)(DS:SI)(DS:SI)(SI)(SI)(SI)1(SI)1(字节字节) )或或2(2(字字) )(DI)(DI)(DI)1(DI)1(字节字节) )或或2(2(字字) )格式格式2 2:STOSBSTOSB或或STOSWSTOSW功能:存串。功能:存串。(ES:DI)(ES:DI)(AL)(AL)或或
56、(AX)(AX) (DI)(DI)(DI)1(DI)1(字节字节) )或或2(2(字字) )第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 格式格式3:LODSB3:LODSB或或LODSWLODSW功能功能: :取串取串. .(AL)(AL)或或(AX) (AX) (ES:SI) (ES:SI) (SI)(SI)(SI)1(SI)1(字节字节) )或或2(2(字字) )格式格式4 4:CMPSBCMPSB或或CMPSWCMPSW功能:串比较。功能:串比较。(DSDS:SISI)- -(ESES:DIDI), ,根据比较的结果设置条件码根据比较的结果设置条
57、件码. .(SI)(SI)(SI)1(SI)1(字节字节) )或或2(2(字字) )(DI)(DI)(DI)1(DI)1(字节字节) )或或2(2(字字) )格式格式5:SCASB 5:SCASB 或或SCASWSCASW功能:串扫描功能:串扫描. .(AL)-(ES:DI)(AL)-(ES:DI)或或(AX)-(ES:DI),(AX)-(ES:DI),根据扫描比较的结果设置条件码根据扫描比较的结果设置条件码. . (DI)(DI)(DI)1(DI)1(字节字节) )或或2(2(字字) )第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3.3.串重复前缀串
58、重复前缀格式格式1 1:REP REP 功能:重复执行串指令,(功能:重复执行串指令,(CXCX)= =重复次数。重复次数。 (CXCX)=0=0时,串指令执行完毕,否则执行:时,串指令执行完毕,否则执行: (CXCX)(CX)-1(CX)-1 执行串指令执行串指令(MOVS(MOVS或或STOS)STOS) 重复执行重复执行第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 格式格式2:REPE/REPZ2:REPE/REPZ功功能能: :相相等等或或为为零零时时重重复复执执行行串串指指令令,(CX)=,(CX)=比比较较或或扫扫描描的次数的次数. . (C
59、X)=0 (CX)=0或或ZF=0ZF=0时时, ,结束执行串指令结束执行串指令. .否则继续执行否则继续执行: : (CX) (CX)(CX)-1(CX)-1 执行串指令执行串指令(CMPS(CMPS或或SCAS)SCAS) 重复执行重复执行第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 格式格式3:REPNE/REPNZ3:REPNE/REPNZ功功能能: :不不等等或或不不为为零零时时重重复复执执行行串串指指令令.(CX)=.(CX)=比比较较或或扫扫描的次数描的次数. . (CX)=0 (CX)=0或或ZF=0,ZF=0,结束执行串指令结束执行串指
60、令, ,否则继续执行否则继续执行: : (CX) (CX)(CX)-1(CX)-1 执行串指令执行串指令(CMPS(CMPS或或SCAS)SCAS) 重复执行重复执行第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3.3.9 3.3.9 处理器控制指令处理器控制指令处处理理器器指指令令是是一一组组控控制制CPUCPU工工作作方方式式的的指指令令。这这组组指指令令的的使使用用频频率率不高。不高。1.1.空操作指令空操作指令NOP(No Operation Instruction)NOP(No Operation Instruction)该该指指令令没没有有的
61、的显显式式操操作作数数,主主要要起起延延迟迟下下一一条条指指令令的的执执行行。通通常常用用执执行行指指令令“XCHG XCHG AX, AX, AXAX”来来代代表表它它的的执执行行。NOPNOP指指令令的的执执行行不不影影响响任任何何标志位。标志位。指令的格式:指令的格式:NOPNOP2.2.等待指令等待指令WAIT(Put Processor in Wait State Instruction)WAIT(Put Processor in Wait State Instruction)该该指指令令使使CPUCPU处处于于等等待待状状态态,直直到到协协处处理理器器(Coprocessor)(C
62、oprocessor)完完成成运运算算,并用一个重启信号唤醒并用一个重启信号唤醒CPUCPU为止。该指令的执行不影响任何标志位。为止。该指令的执行不影响任何标志位。指令的格式:指令的格式:WAITWAIT第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3.3.暂停指令暂停指令HLT(Enter Halt State Instruction)HLT(Enter Halt State Instruction)在在等等待待中中断断信信号号时时,该该指指令令使使CPUCPU处处于于暂暂停停工工作作状状态态,CS:IPCS:IP指指向向下下一一条条待待执执行行的的指
63、指令令。当当产产生生了了中中断断信信号号,CPUCPU把把CSCS和和IPIP压压栈栈,并并转转入入中中断断处处理理程程序序。在在中中断断处处理理程程序序执执行行完完后后,中中断断返返回回指指令令IRETIRET弹弹出出IPIP和和CSCS,并唤醒并唤醒CPUCPU执行下条指令。执行下条指令。指令的格式:指令的格式:HLTHLT指令的执行不影响任何标志位。指令的执行不影响任何标志位。4.4.封锁数据指令封锁数据指令LOCK(Lock Bus Instruction)LOCK(Lock Bus Instruction)该该指指令令是是一一个个前前缀缀指指令令形形式式,在在其其后后面面跟跟一一个个
64、具具体体的的操操作作指指令令。LOCKLOCK指指令令可可以以保保证证是是在在其其后后指指令令执执行行过过程程中中,禁禁止止协协处处理理器器修修改改数数据据总总线上的数据,起到独占总线的作用。该指令的执行不影响任何标志位。线上的数据,起到独占总线的作用。该指令的执行不影响任何标志位。指令的格式:指令的格式:LOCK INSTRUCTIONLOCK INSTRUCTION第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 寻址方式寻址方式3.2中断及中断返回中断及中断返回3.4指令与指令系统指令与指令系统3.180868086指令系统指令系统3.3第第3 3章章
65、 8088/8086MPU8088/8086MPU的指令系统的指令系统 3.4 3.4 中断及中断返回中断及中断返回中中断断处处理理程程序序基基本本上上是是系系统统程程序序员员编编写写好好的的,是是为为操操作作系系统统或或用用户户程程序序服服务务的的。为为了了在在应应用用程程序序中中使使用用中中断断服服务务程程序序,程程序序员员必必须须能能够够在在程程序序中中有有目目的的地地安安排排中中断断的的发发生生。为为此此,指指令令系系统统提提供供了了各各种种引引起起中中断断的的指指令。令。1 1、中断指令、中断指令INTINT中断指令中断指令INTINT的一般格式如下:的一般格式如下:INT ImmI
66、NT Imm其中:立即数其中:立即数ImmImm是一个是一个02550255范围内的整数。所以终端指令有范围内的整数。所以终端指令有256256条。条。如:如: INTINT 9 9 INT INT 21 21第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 2 2、溢出指令、溢出指令INTOINTO当标志位当标志位OFOF为为1 1时,引起中断。该指令的格式如下:时,引起中断。该指令的格式如下:INTOINTO该指令影响标志位:该指令影响标志位:IFIF和和TFTF。3 3、中断返回指令、中断返回指令当当一一个个中中断断服服务务程程序序执执行行完完毕毕时时,CPUCPU将将恢恢复复被被中中断断的的现现场场,返返回回到到引引起起中中断断的的程程序序中中。为为了了实实现现此此项项功功能能,指指令令系系统提供了一条专用的中断返回指令。该指令的格式如下:统提供了一条专用的中断返回指令。该指令的格式如下:IRET/IRETDIRET/IRETD谢谢大家!谢谢大家!