1、第第3章章 8088/8086MPU的指令系统的指令系统 第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 寻址方式寻址方式3.2中断及中断返回中断及中断返回3.4指令与指令系统指令与指令系统3.180868086指令系统指令系统3.3第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 计算机系统包括硬件和软件两大组成部分。硬件是指构计算机系统包括硬件和软件两大组成部分。硬件是指构成计算机的中央处理机、主存储器、外部设备等物理装置,成计算机的中央处理机、主存储器、外部设备等物理装置,软件则指由软件厂家为方便用户使用计算机而提
2、供的系统软软件则指由软件厂家为方便用户使用计算机而提供的系统软件,和用户用于完成自己的特定事务和信息处理任务而设计件,和用户用于完成自己的特定事务和信息处理任务而设计的用户程序软件。的用户程序软件。计算机能直接识别和运行的软件程序通常由该计算机的计算机能直接识别和运行的软件程序通常由该计算机的指令代码组成。指令代码组成。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 寻址方式寻址方式3.2中断及中断返回中断及中断返回3.4指令与指令系统指令与指令系统3.180868086指令系统指令系统3.3第第3 3章章 8088/8086MPU8088/8086MPU
3、的指令系统的指令系统 3.1 3.1 指令与指令系统指令与指令系统 要确定一台计算机的指令系统并评价其优劣,通常应从如下要确定一台计算机的指令系统并评价其优劣,通常应从如下4 4个方个方面考虑:面考虑:1 1、指令系统的完备性,常用指令齐全,编程方便。、指令系统的完备性,常用指令齐全,编程方便。2 2、指令系统的高效性,程序占内存空间少,运行速度快。、指令系统的高效性,程序占内存空间少,运行速度快。3 3、指令系统的规整性,指令和数据使用规则统一简单,易学易记。、指令系统的规整性,指令和数据使用规则统一简单,易学易记。4 4、指令系统的兼容性,同一系列的低档计算机的程序能在高档机、指令系统的兼
4、容性,同一系列的低档计算机的程序能在高档机上直接运行。上直接运行。要完全同时满足上述标准是困难的,但它可以指导我们设计出更要完全同时满足上述标准是困难的,但它可以指导我们设计出更加合理的指令系统。设计指令系统的核心问题是选定指令的格式和功能。加合理的指令系统。设计指令系统的核心问题是选定指令的格式和功能。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3.1.13.1.1指令的组成指令的组成 通常情况下,一条指令要由两部分内容组成,其格式为:通常情况下,一条指令要由两部分内容组成,其格式为:第一部分,是指令的操作码第一部分,是指令的操作码op codeop
5、 code。操作码用于指明本条指令的。操作码用于指明本条指令的操作功能,例如,是算术加运算、减运算还是逻辑与、或运算功能,是操作功能,例如,是算术加运算、减运算还是逻辑与、或运算功能,是否是读、写内存或读、写外设操作功能,是否是程序转移和子程序调用否是读、写内存或读、写外设操作功能,是否是程序转移和子程序调用或返回操作功能等,计算机需要为每条指令分配一个确定的操作码。或返回操作功能等,计算机需要为每条指令分配一个确定的操作码。第二部分,是指令的操作数第二部分,是指令的操作数opd/opd/地址地址addraddr,用于给出被操作的信,用于给出被操作的信息(数据)或操作数的地址,包括参加运算的一
6、或多个操作数所在的地息(数据)或操作数的地址,包括参加运算的一或多个操作数所在的地址,运算结果的保存地址,程序的转移地址、被调用的子程序的入口地址,运算结果的保存地址,程序的转移地址、被调用的子程序的入口地址等。址等。操作码操作码操作数操作数/地址地址第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3.1.2 3.1.2 指令的分类指令的分类 从用到的操作数个数区分,可能有如下从用到的操作数个数区分,可能有如下4 4种情况:种情况:1.1.无操作数指令无操作数指令有的指令不涉及操作数,或使用约定的某个(些)操作有的指令不涉及操作数,或使用约定的某个(些)操
7、作数,既已约定则没有必要再在指令中加以表示,称这类指令数,既已约定则没有必要再在指令中加以表示,称这类指令为无操作数指令,它仅有操作码部分,例如停机指令、空操为无操作数指令,它仅有操作码部分,例如停机指令、空操作指令、关中断指令、堆栈结构的计算机系统中对堆栈中数作指令、关中断指令、堆栈结构的计算机系统中对堆栈中数据运算的指令等。据运算的指令等。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 2.2.单操作数指令单操作数指令有些指令只用一个操作数,必须在指令中指明其地址,有些指令只用一个操作数,必须在指令中指明其地址,如一个寄存器内容增如一个寄存器内容增1
8、1或减或减1 1运算的指令;或还使用约定的某运算的指令;或还使用约定的某个操作数,既已约定则无需再在指令中加以表示,如完成从个操作数,既已约定则无需再在指令中加以表示,如完成从(向)外设读(写)数据的指令,就可以只在指令中指明该(向)外设读(写)数据的指令,就可以只在指令中指明该外设地址,而把接受(送出)数据的通用寄存器约定下来。外设地址,而把接受(送出)数据的通用寄存器约定下来。此外,在短字长的、采用单个累加器的计算机中,已约定目此外,在短字长的、采用单个累加器的计算机中,已约定目的操作数(如被加数、被减数等)和保存计算结果都使用唯的操作数(如被加数、被减数等)和保存计算结果都使用唯一的那个
9、累加器,指令中只需表示另一个源操作数即可。称一的那个累加器,指令中只需表示另一个源操作数即可。称这类指令为单操作数指令。这类指令为单操作数指令。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 .3.3.双操作数指令双操作数指令对于常用的算术和逻辑运算指令,往往要求使用两个操对于常用的算术和逻辑运算指令,往往要求使用两个操作数,一个叫做原操作数作数,一个叫做原操作数/地址,另一个叫做目的操作数地址,另一个叫做目的操作数/地地址,需分别给出目的操作数和源操作数的地址,其中目的操址,需分别给出目的操作数和源操作数的地址,其中目的操作数地址还用于保存本次的运算结果
10、。称这类指令为双操作作数地址还用于保存本次的运算结果。称这类指令为双操作数指令。数指令。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 4.4.多操作数指令多操作数指令另外一些指令可能使用多个操作数,如另外一些指令可能使用多个操作数,如3 3个操作数,其个操作数,其中两个操作数地址分别给出目的操作数和源操作数的地址,中两个操作数地址分别给出目的操作数和源操作数的地址,第三个操作数地址用于指出保存本次的运算结果的去处。可第三个操作数地址用于指出保存本次的运算结果的去处。可以称这类指令为三操作数指令;在有些性能更高的计算机以称这类指令为三操作数指令;在有些性能
11、更高的计算机(甚至(甚至PCPC机)中,还有在指令中使用更多个操作数地址的指机)中,还有在指令中使用更多个操作数地址的指令,用于完成对一批数据的处理过程,如字符串复制指令,令,用于完成对一批数据的处理过程,如字符串复制指令,向量、矩阵运算指令等,称这类指令为多操作数指令。向量、矩阵运算指令等,称这类指令为多操作数指令。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3.1.3 3.1.3 指令系统指令系统 指令系统是指一台计算机所能执行的各种不同类型指令指令系统是指一台计算机所能执行的各种不同类型指令的总和。即一台计算机所能执行的全部操作。不同计算机的的总
12、和。即一台计算机所能执行的全部操作。不同计算机的指令系统包含的指令种类和数目也不同。指令系统是表征一指令系统包含的指令种类和数目也不同。指令系统是表征一台计算机性能的重要因素,它的格式与功能不仅直接影响到台计算机性能的重要因素,它的格式与功能不仅直接影响到机器的硬件结构,而且也直接影响到系统软件,影响到机器机器的硬件结构,而且也直接影响到系统软件,影响到机器的适用范围。的适用范围。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 寻址方式寻址方式3.2中断及中断返回中断及中断返回3.4指令与指令系统指令与指令系统3.180868086指令系统指令系统3.3第
13、第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3.2 3.2 寻址方式寻址方式 3.2.1 3.2.1 立即寻址方式立即寻址方式 操作数作为指令的一部分而直接写在指令中,这种操作操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,这种寻址方式也就称为立即数寻址方式。数称为立即数,这种寻址方式也就称为立即数寻址方式。【例例3-13-1】MOV AX,1234HMOV AX,1234H注意:立即数不能能够作为目的操作数。注意:立即数不能能够作为目的操作数。不能直接给段寄存器和标志寄存器赋予立即数。不能直接给段寄存器和标志寄存器赋予立即数。这种寻址方式
14、操作数在指令中。这种寻址方式操作数在指令中。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3.2.2 3.2.2 寄存器寻址方式寄存器寻址方式 指令所要的操作数已经在某寄存器中,表示指令时,或把指令所要的操作数已经在某寄存器中,表示指令时,或把目标操作数存入寄存器。把在指令中指出所使用寄存器目标操作数存入寄存器。把在指令中指出所使用寄存器(即:寄即:寄存器的名字存器的名字)的寻址方式称为寄存器寻址方式。的寻址方式称为寄存器寻址方式。指令中可以引用的寄存器及其符号名称如下:指令中可以引用的寄存器及其符号名称如下:8 8位寄存器位寄存器有:有:AHAH、AL
15、AL、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是双字,字和字节类型的内存地址,是双字,字和字节类型的内存地址,叫做符号地址。叫做符号地址。
16、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)=1234H=1234H指令执行后:(指令执行后:(
17、AXAX)=1234H=1234H,BXBX内容未改变。内容未改变。注意:注意:源寄存器与目的寄存器的位数必须一致。源寄存器与目的寄存器的位数必须一致。这种寻址方式操作数在这种寻址方式操作数在CPUCPU中。中。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3.2.3 RAM3.2.3 RAM寻址方式寻址方式 OpdOpd也可以存放在存储器中,这种寻址方式叫做存储器寻址,存储也可以存放在存储器中,这种寻址方式叫做存储器寻址,存储器寻址的关键是如何给出存储器的地址,给出方式不同,寻址方式也有器寻址的关键是如何给出存储器的地址,给出方式不同,寻址方式也有多种
18、。多种。1.1.直接寻址方式直接寻址方式【例例3-33-3】MOV AX,2000HMOV AX,2000H指令执行前:(指令执行前:(DSDS)=3000H=3000H,(,(32000H32000H)=50H=50H,(,(32019H32019H)=30H=30H操作数的物理地址操作数的物理地址=3000H=3000H*10H+2000H=32000H10H+2000H=32000H指令的操作是把指令的操作是把32000H32000H字存储单元的内容送字存储单元的内容送AXAX寄存器。寄存器。指令执行后:(指令执行后:(AXAX)=3050H=3050H第第3 3章章 8088/8086
19、MPU8088/8086MPU的指令系统的指令系统 .2 2.寄存器间接寻址方式寄存器间接寻址方式操作数在存储器中,操作数的有效地址用操作数在存储器中,操作数的有效地址用SISI、DIDI、BXBX和和BPBP等四个寄存器之一来指定,称这种寻址方式为寄存器间接等四个寄存器之一来指定,称这种寻址方式为寄存器间接寻址方式。该寻址方式物理地址的计算方法如下:寻址方式。该寻址方式物理地址的计算方法如下:若指令中指定的寄存器是若指令中指定的寄存器是BPBP,操作数在堆栈段,段基值,操作数在堆栈段,段基值在在SSSS中。中。物理地址物理地址=(SSSS)*10h+(BP)-10h+(BP)-基地址指针寄存
20、器,基地址指针寄存器,可对指针进行修改形成下一个地址。可对指针进行修改形成下一个地址。(BX)-基址寄存器基址寄存器(SI)-源变址寄存器源变址寄存器(DI)-目的变址寄存器目的变址寄存器物理地址物理地址=(DS)*10H+第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3.3.寄存器相对寻址方式寄存器相对寻址方式该寻址方式是以指定的寄存器内容,加上指令中给出的该寻址方式是以指定的寄存器内容,加上指令中给出的位移量(位移量(8 8位或位或1616位),并以一个段寄存器为基准,作为操位),并以一个段寄存器为基准,作为操作数的地址。指定的寄存器一般是一个基址寄
21、存器或变址寄作数的地址。指定的寄存器一般是一个基址寄存器或变址寄存器。存器。寄存器相对寻址通过基址寄存器寄存器相对寻址通过基址寄存器BXBX,BPBP或变址寄存器或变址寄存器SISI,DIDI与一个位移量相加形成有效地址(与一个位移量相加形成有效地址(EAEA),计算物理地址),计算物理地址(PAPA)的缺省段仍然是)的缺省段仍然是SISI,DIDI和和BXBX为为DSDS,BPBP为为SSSS。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 (BX)(SI)(DI)DISP8DISP16PA=(ES)*10H+DISPDISP叫做位移量,实际上它是一个数
22、值,可以是叫做位移量,实际上它是一个数值,可以是8 8位也位也可以是可以是1616位。位。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 4 4.基址加变址寻址方式基址加变址寻址方式这是一种基址加变址来定位操作数地址的方式,操作数这是一种基址加变址来定位操作数地址的方式,操作数的有效地址是一个基址寄存器(的有效地址是一个基址寄存器(BPBP或或BXBX)和一个变址寄存器)和一个变址寄存器(SISI或或DIDI)的内容之和。)的内容之和。MOV CL,BX+SIMOV CL,BX+SIPA=(DS)PA=(DS)*10H+(BX)+(SI)10H+(BX)+
23、(SI)MOV CH,BX+DIMOV CH,BX+DIPA=(DS)PA=(DS)*10H+(BX)+(DI)10H+(BX)+(DI)第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 4 4.基址加变址寻址方式基址加变址寻址方式这是一种基址加变址来定位操作数地址的方式,操作数这是一种基址加变址来定位操作数地址的方式,操作数的有效地址是一个基址寄存器(的有效地址是一个基址寄存器(BPBP或或BXBX)和一个变址寄存器)和一个变址寄存器(SISI或或DIDI)的内容之和。)的内容之和。MOV AX,BP+SIMOV AX,BP+SIPA=(SS)PA=(SS
24、)*10H+(BP)+(SI)10H+(BP)+(SI)MOV DX,BP+DIMOV DX,BP+DIPA=(SS)PA=(SS)*10H+(BP)+(DI)10H+(BP)+(DI)第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 5.5.相对基址加变址寻址方式相对基址加变址寻址方式操作数的有效地址是基址加变址,再加上一个位移量得操作数的有效地址是基址加变址,再加上一个位移量得到。一般用于寻址复杂的数组中的元素。到。一般用于寻址复杂的数组中的元素。MOV DHMOV DH,BX+DI+20HBX+DI+20H源操作数源操作数PA=PA=(DSDS)*10
25、H+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=PA=(SSSS)*10H+10H+(BPBP
26、)+(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其中,其中,DSTDST表示目的操作数或地址,表示目的操
27、作数或地址,SRCSRC表示源操作数或表示源操作数或地址。地址。功能功能:把一个字节或字从源操作数传送到目的操作数,:把一个字节或字从源操作数传送到目的操作数,即即DSTDST(SRC),(SRC),目的操作数原有内容消失。目的操作数原有内容消失。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 注意事项:注意事项:l立即树不能为目的操作数。立即树不能为目的操作数。lCSCS不能是目的操作数,只能作为源操作数。不能是目的操作数,只能作为源操作数。l目的操作数与源操作数不能同时用存储器寻址方式。目的操作数与源操作数不能同时用存储器寻址方式。(这一点适用于所有指
28、令)(这一点适用于所有指令)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;将源操作数送到栈顶指针所指示的栈顶单元。将源操作数送到栈顶指针所指示的栈顶单元。格式格式2 2:POP DSTPOP DST
29、功能:功能:退栈指令,把栈顶的字数据从堆栈中弹出送目的退栈指令,把栈顶的字数据从堆栈中弹出送目的操作数。操作数。DSTDST(SP);(SP);(SPSP)(SP)+2(SP)+2第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 注意事项注意事项:lPUSH PUSH 和和POP POP 指令只能是字操作指令只能是字操作,不能是字节操作。不能是字节操作。lPOPPOP的的DSTDST不允许是不允许是CSCS寄存器。寄存器。lPUSHPUSH和和POP POP 指令不能使用立即数方式。指令不能使用立即数方式。lPUSH PUSH 和和 POPPOP不影响标志位
30、。不影响标志位。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3 3.交换指令交换指令:(XCHG):(XCHG)格式格式:XCHG OPR1,OPR2XCHG OPR1,OPR2其中,其中,OPROPR代表操作数寄存器。代表操作数寄存器。功能:功能:(OPR1OPR1)()(OPR2OPR2)注意:注意:l两个操作数不能同时在存储器中。也不能为立即数。两个操作数不能同时在存储器中。也不能为立即数。l不允许使用段寄存器。不允许使用段寄存器。l不影响标志位。不影响标志位。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统
31、4.4.换码指令换码指令:XLAT:XLAT(查表指令)(查表指令)格式格式:XLAT :XLAT 或或 XLAT OPRXLAT OPR功能功能:(AL):(AL)(DS)(DS)*10H+(BX)+(AL)10H+(BX)+(AL)根据根据 ALAL寄存器提供的位移量寄存器提供的位移量,将将BXBX指示的字节表格中的指示的字节表格中的代码换存到代码换存到ALAL中中.注意事项注意事项:所建字节表格长度不能超过所建字节表格长度不能超过256B.256B.不影响标志位不影响标志位.第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 5.5.累加器专用传送指令累
32、加器专用传送指令: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指令指令 :格式格式1:OUT Port,AL /Port=0FFH1:OUT Port,AL /Port0FFH2:OUT DX
33、,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.有效地址装入指令(有效地址装入指令(LEALEA)格式:格式:LEA REGLEA REG,SRCSRC功能:把源操作数的有效地址装入指定的目标寄存器。功能:把源操作数的有效地址装入指定的
34、目标寄存器。注意事项:注意事项:源操作数的数据类型可以是字节或字,而目的寄存器必源操作数的数据类型可以是字节或字,而目的寄存器必须是须是1616位的通用寄存器。位的通用寄存器。LEALEA处理的是存储单元的有效地址,处理的是存储单元的有效地址,MOVMOV指令处理的是存指令处理的是存储单元的内容。储单元的内容。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 2.2.双指针装入指令(双指针装入指令(LDSLDS,LESLES)格式:格式:LDS REGLDS REG,SRCSRC LES REG LES REG,SRCSRC功能:把双字长操作数低地址之中内中
35、的偏移量装入指功能:把双字长操作数低地址之中内中的偏移量装入指定的目的寄存器。定的目的寄存器。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3.3.3 3.3.3 标志寄存器传送指令标志寄存器传送指令 标志寄存器传送(有四条标志传送指令)标志寄存器传送(有四条标志传送指令)1.LAHF 1.LAHF(LOAD AH WITH FLAGLOAD AH WITH FLAG)将标志寄存器中的将标志寄存器中的SFSF、ZFZF、AFAF、PFPF和和CFCF(即低(即低8 8位)传送至位)传送至AHAH寄存器的指寄存器的指定位,空位没有定义。定位,空位没有定义。
36、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 FLAG)将标志寄存器压入堆栈顶部,同时修改堆栈指针,不影响标志位。将标志寄存器压入堆栈顶部,同时修改堆栈指针,不影响标志位。4.4.POPF POPF(POP F
37、LAGPOP FLAG)堆栈顶部的一个字,传送到标志寄存器,同时修改堆栈指针,影响标志位。堆栈顶部的一个字,传送到标志寄存器,同时修改堆栈指针,影响标志位。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3.3.4 3.3.4 算术运算指令算术运算指令1.1.加法指令:加法指令:格式格式1 1:ADD DSTADD DST,SRC SRC 功能:不带进位的加法,将源操作数与目的操作数相加,将和放入目的操功能:不带进位的加法,将源操作数与目的操作数相加,将和放入目的操作数地址中。作数地址中。DSTDST(SRCSRC)+(DSTDST)格式格式2:ADC D
38、ST,SRC2:ADC DST,SRC功能功能:带进位的加法带进位的加法,将源操作数、目的操作数以及标志寄存器中的进位标将源操作数、目的操作数以及标志寄存器中的进位标志位相加,并将和放入目的操作数中。志位相加,并将和放入目的操作数中。DSTDSTSRC+DST+CFSRC+DST+CF格式格式3:INC OPR3:INC OPR功能功能:将目的操作数加将目的操作数加1,1,放入目的操作数中放入目的操作数中.OPROPROPR+1OPR+1第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 注意事项注意事项:ADDADD和和ADCADC指令是双操作数指令,它们的
39、两个操作数不能指令是双操作数指令,它们的两个操作数不能同时为存储器寻址方式,源操作数和目的操作数必须有一个同时为存储器寻址方式,源操作数和目的操作数必须有一个是寄存器寻址方式。是寄存器寻址方式。INCINC可以是可以是 除立即数以外的任何寻址方除立即数以外的任何寻址方式。式。ADDADD、ADCADC影响条件标志位,影响条件标志位,INCINC影响除了影响除了CFCF之外的其他之外的其他条件码。条件码。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 条件码的设置情况:条件码的设置情况:SF=1 SF=1 加法结果为负数加法结果为负数SF=0 SF=0 加法
40、结果为正数加法结果为正数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 不同符号数相加时,或同符号数相加,结果符号与其相同不同符号数相加时,或同符号数相加,结果符号与其相同第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 2 2.减法指令减法指令:格式格式1:SUB DST,S
41、RC1: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:CMP OPR1,OPR2功能功能:(OPR1)-(OPR2),:(OPR1)-(OPR2),根据相减的结果设置条件码根据相减的结果设置条件码,但不回送结但不回送结果果.格式格式5:NEG OPR5:
42、NEG OPR功能功能:(OPR):(OPR)-(OPR)+1,-(OPR)+1,求操作数的补码,即对求操作数的补码,即对OPROPR取非后,末位取非后,末位再加再加1.1.第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 条件码设置条件码设置:CF=1 CF=1 二进制减法运算中最高有效位向更高位有借位二进制减法运算中最高有效位向更高位有借位(被减数被减数=减数减数)OF=1 OF=1 两数符号相反两数符号相反,而结果符号与减数相同而结果符号与减数相同OF=0 OF=0 同符号数相减时同符号数相减时,或不同符号数相减时或不同符号数相减时,其结果符其结果符号
43、与减数不同号与减数不同第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3.3.乘法指令乘法指令:格式格式1 1:MUL SRC /MUL SRC /无符号数乘法无符号数乘法功能功能:(AX):(AX)(AL)(AL)*(SRC)(SRC)格式格式2 2:IMUL SRC /IMUL SRC /带符号数乘法带符号数乘法功能功能:(DX,AX):(DX,AX)(AX)(AX)*(SRC)(SRC)注意注意:影响影响CF,OF.CF,OF.对于对于MUL,CF OF=0 0 MUL,CF OF=0 0 乘积高一半为乘积高一半为0 0 CF OF=1 1 CF O
44、F=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的指令系统的指令系统 4.4.除法指令:除法指令:格式格式1 1:DIV SRC /DIV SRC /无符号数除法无符号数除法格式格式2:IDIV SRC /2:IDIV SRC /有符号数除法有符号数除法功能:功能:字节除法字节除法:(ALAL)(AX)/SRC(AX)/SRC的商的商 (AH)(
45、AH)(AX)/SRC(AX)/SRC的余数的余数字除法字除法:(AX):(AX)(DX,AX)/SRC(DX,AX)/SRC的商的商 (DX)(DX)(DX,AX)/SRC(DX,AX)/SRC的余数的余数注意事项注意事项:不影响条件码。当除数为不影响条件码。当除数为0 0或商溢出时由系统直接转入或商溢出时由系统直接转入0 0型中断来处理。型中断来处理。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3.3.5 3.3.5 逻辑运算指令逻辑运算指令 格式格式1 1:AND DSTAND DST,SRCSRC功能:逻辑与,(功能:逻辑与,(DSTDST)(
46、DST)(SRC)(DST)(SRC)格式格式2:OR DST,SRC2:OR DST,SRC功能功能:逻辑或逻辑或,(DST),(DST)(DST)(SRC)(DST)(SRC)格式格式3:NOT OPR3:NOT OPR功能:逻辑非,()功能:逻辑非,()(OPR#)(OPR#)格式格式4:XOR DST,SRC4:XOR DST,SRC功能功能:逻辑异或逻辑异或,(DST),(DST)(DST)(DST)(SRC)(SRC)格式格式5:TEST OPR1,OPR25:TEST OPR1,OPR2功能功能:根据与运算结果根据与运算结果,设置条件码设置条件码,结果不回送结果不回送.第第3 3
47、章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 注意事项:注意事项:这是一组位操作指令,它们可以对字或字节按位执行逻这是一组位操作指令,它们可以对字或字节按位执行逻辑操作,因此源操作数经常为一个位串。辑操作,因此源操作数经常为一个位串。NOT NOT 不影响标志位。不影响标志位。其他指令指令后,其他指令指令后,CFCF、OFOF置置0 0,AFAF无定义,无定义,SFSF、ZFZF、PFPF根据运算结果设置。根据运算结果设置。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3.3.6 3.3.6 移位指令移位指令 格式格式1 1
48、:SHL DSTSHL DST,CNTCNT功能:逻辑左移,最低位补功能:逻辑左移,最低位补0 0,最高位移到,最高位移到CFCF中。中。格式格式2 2:SHR DSTSHR DST,CNTCNT功能:逻辑右移,最高位补功能:逻辑右移,最高位补0 0,最低位移到,最低位移到CFCF中。中。格式格式3 3:SAL DSTSAL DST,CNTCNT功能:算术左移,最高位移到功能:算术左移,最高位移到CFCF中,最低位补中,最低位补0 0。格式格式4 4:SAR DSTSAR DST,CNTCNT功能:算术右移,最高位用符号位的值补充,最低位移到功能:算术右移,最高位用符号位的值补充,最低位移到C
49、FCF中。中。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 格式格式5 5:ROL DSTROL DST,SRCSRC功能:循环左移,最高位移到最低位,其余各位依次左移。功能:循环左移,最高位移到最低位,其余各位依次左移。格式格式6 6:ROR DSTROR DST,SRCSRC功能:循环右移,最低位移到最高位,其余各位依次右移。功能:循环右移,最低位移到最高位,其余各位依次右移。格式格式7 7:RCL DSTRCL DST,SRCSRC功能:带进位的循环左移。功能:带进位的循环左移。CFCF移到最低位,操作数最高位移到移到最低位,操作数最高位移到CFC
50、F,其余各位依次左移。其余各位依次左移。格式格式8 8:RCR DSTRCR DST,SRCSRC功能:带进位的循环右移。功能:带进位的循环右移。CF CF 移到最高位,最低位移到移到最高位,最低位移到CFCF,其余,其余各位依次右移。各位依次右移。第第3 3章章 8088/8086MPU8088/8086MPU的指令系统的指令系统 3.3.7 3.3.7 控制转移指令控制转移指令1.1.无条件转移指令无条件转移指令无条件转移指令无条件转移指令JMPJMP分直接转移和间接转移两种。分直接转移和间接转移两种。一般格式:一般格式:JMP OPRD JMP OPRD ;OPRDOPRD是转移的目的地