微机原理与接口技术_中科大第四版_ppt

上传人:hjk****65 文档编号:253002875 上传时间:2024-11-27 格式:PPT 页数:91 大小:1.63MB
返回 下载 相关 举报
微机原理与接口技术_中科大第四版_ppt_第1页
第1页 / 共91页
微机原理与接口技术_中科大第四版_ppt_第2页
第2页 / 共91页
微机原理与接口技术_中科大第四版_ppt_第3页
第3页 / 共91页
点击查看更多>>
资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,微型计算机原理及其应用,第三章:,8086/8088,的指令系统,合肥工业大学计算机与信息学院,1,第三章:,8086/8088,的指令系统,寻址方式,指令系统,2,第三章:,8086/8088,的指令系统,寻址方式,指令系统,3,第三章:,8086/8088,的指令系统,寻址方式,什么叫指令?指令系统?寻址方式?,指令:计算机提供给用户的硬件命令。,指令系统,(,集,),:指令的集合。,操作码:,指计算机所要执行的操作,即指出操作类型,是一种助记符。,操作数:,指在指令执行操作的过程中所需要的操作数。该字段除可以是操作数本身外,也可以是操作数地址或是地址的一部分,还可以是指向操作数地址的指针或其它有关操作数的信息。,寻址方式:,就是指令中用于说明操作数所在地址的方法,或者说是寻找操作数有效地址的方法。,指令的一般格式,4,第三章:,8086/8088,的指令系统,寻址方式,什么叫指令?指令系统?寻址方式?,例如:,ADD CL,BH,在计算机内部的表示:,00000010 11001111,5,第三章:,8086/8088,的指令系统,寻址方式,8086/8088,指令系统中有哪些寻址方式?,立即寻址方式,(Immediate Addressing),寄存器寻址方式,(Register Addressing),直接寻址方式,(Direct Addressing),寄存器间接寻址方式,(Register Indirect Addressing),寄存器相对寻址方式,(Register Relative Addressing),基址加变址寻址方式,(Based Indexed Addressing),相对基址加变址寻址方式,(Relative Based Indexed Addressing),6,第三章:,8086/8088,的指令系统,寻址方式,8086/8088,指令系统中有哪些寻址方式?,立即寻址方式,(Immediate Addressing),寄存器寻址方式,(Register Addressing),直接寻址方式,(Direct Addressing),寄存器间接寻址方式,(Register Indirect Addressing),寄存器相对寻址方式,(Register Relative Addressing),基址加变址寻址方式,(Based Indexed Addressing),相对基址加变址寻址方式,(Relative Based Indexed Addressing),7,第三章:,8086/8088,的指令系统,寻址方式,立即寻址方式,(Immediate Addressing),操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,这种寻址方式也就称为立即数寻址方式。,MOV AX,3412H,8,第三章:,8086/8088,的指令系统,寻址方式,立即寻址方式,(Immediate Addressing),立即操作数可以是,8,位或,16,位,并且是指令的一部分。立即数据总是紧跟在指令操作码之后并和操作码一起存放在代码段中,因而立即数据总是和操作码一起被放入,BIU,中的指令队列里,在指令执行时不需再存取存储器。,MOV AH, 80H,ADD AX, 1234H,MOV ECX, 123456H MOV B1, 12H,MOV W1, 3456H,ADD D1, 32123456H,其中:,B1,、,W1,和,D1,分别是字节、字和双字单元。 以上指令中的第二操作数都是立即数,在汇编语言中,规定:立即数不能作为指令中的第一操作数。该规定与高级语言中“赋值语句的左边不能是常量”的规定相一致。使用立即寻址的指令主要用来给寄存器赋初值。,9,第三章:,8086/8088,的指令系统,寻址方式,8086/8088,指令系统中有哪些寻址方式?,立即寻址方式,(Immediate Addressing),寄存器寻址方式,(Register Addressing),直接寻址方式,(Direct Addressing),寄存器间接寻址方式,(Register Indirect Addressing),寄存器相对寻址方式,(Register Relative Addressing),基址加变址寻址方式,(Based Indexed Addressing),相对基址加变址寻址方式,(Relative Based Indexed Addressing),10,第三章:,8086/8088,的指令系统,寻址方式,寄存器寻址方式,(Register Addressing),操作数包含在,CPU,的内部寄存器中,如寄存器,AX,、,BX,、,CX,、,DX,等,指令指定寄存器号。,MOV AX,BX,11,第三章:,8086/8088,的指令系统,寻址方式,寄存器寻址方式,(Register Addressing),对于,16,位操作数,寄存器可以是,AX,,,BX,,,CX,,,DX,,,SI,,,DI,,,SP,或,BP,;,而对,8,位操作数,寄存器可以是,AH,,,AL,,,BH,,,BL,,,CH,,,CL,,,DH,或,DL,。,特点:,操作数在,CPU,内,不用通过总线读写,速度快;,目的和源操作数均可采用此寻址方式。,MOV AX, BX;,MOV CL, DL;,MOV ESI, EDI;,INC CX;,ROL AH, 1;,12,第三章:,8086/8088,的指令系统,寻址方式,8086/8088,指令系统中有哪些寻址方式?,立即寻址方式,(Immediate Addressing),寄存器寻址方式,(Register Addressing),直接寻址方式,(Direct Addressing),寄存器间接寻址方式,(Register Indirect Addressing),寄存器相对寻址方式,(Register Relative Addressing),基址加变址寻址方式,(Based Indexed Addressing),相对基址加变址寻址方式,(Relative Based Indexed Addressing),13,第三章:,8086/8088,的指令系统,寻址方式,直接寻址方式,(Direct Addressing),操作数的有效地址,(Effective Address, EA,。在,IBM PC,中把操作数的偏移地址称为有效地址,),是指令的一部分,它与操作码一起存放在代码段中,但操作数一般是在数据段中,因而这种寻址方式是以,DS,的内容为基准。,MOV AL, DS:2000H,(,MOV AL,2000H,),14,第三章:,8086/8088,的指令系统,寻址方式,直接寻址方式,(Direct Addressing),若,DS=4000H,,则此指令式将数据段中物理地址为,42000H,单元的内容传送,AL,寄存器。例:,MOV AL,2000H;,DS*10H+2000H,送,AL,;,MOV AX,2000H;,DS*10H+2000H,送,AL,,,DS*10H+2000H+1,送,AH,;,MOV AL,ES:2000H;,这里,ES,是段超越前缀,所以源操作数是在,ES*10H+2000H,的内存单元中。,MOV 3000H,AL;,目的操作数采用直接寻址,将,AL,送,DS*10H+3000H,的内存单元。,15,第三章:,8086/8088,的指令系统,寻址方式,8086/8088,指令系统中有哪些寻址方式?,立即寻址方式,(Immediate Addressing),寄存器寻址方式,(Register Addressing),直接寻址方式,(Direct Addressing),寄存器间接寻址方式,(Register Indirect Addressing),寄存器相对寻址方式,(Register Relative Addressing),基址加变址寻址方式,(Based Indexed Addressing),相对基址加变址寻址方式,(Relative Based Indexed Addressing),16,第三章:,8086/8088,的指令系统,寻址方式,寄存器间接寻址方式,(Register Indirect Addressing),操作数的有效地址,EA,存放在基址寄存器,(BX,或,BP),或变址寄存器,(DI,或,SI),中。,MOV AX,BX,17,第三章:,8086/8088,的指令系统,寻址方式,寄存器间接寻址方式,(Register Indirect Addressing),MOV AL,BX; DS*10H+BX,送,AL,设,DS=3000H,,,BX=2000H,,,(32000H)=45H,,则执行该指令后,,AL=45H,。,MOV AL,BP; SS*10H+BP,送,AL,设,DS=2000H,,,SS=1000H,,,BP=0100H,,,(10100H)=3BH,,,(20100H)=4CH,。执行这条指令后,,AL=3BH,。,MOV AX,BX;,DS*10H+BX,送,AL,,,DS*10H+BX+1,送,AH,18,第三章:,8086/8088,的指令系统,寻址方式,8086/8088,指令系统中有哪些寻址方式?,立即寻址方式,(Immediate Addressing),寄存器寻址方式,(Register Addressing),直接寻址方式,(Direct Addressing),寄存器间接寻址方式,(Register Indirect Addressing),寄存器相对寻址方式,(Register Relative Addressing),基址加变址寻址方式,(Based Indexed Addressing),相对基址加变址寻址方式,(Relative Based Indexed Addressing),19,第三章:,8086/8088,的指令系统,寻址方式,寄存器相对寻址方式,(Register Relative Addressing),操作数的有效地址,EA,是,8,位或,16,位的位移量与基址寄存器,BX,或基址指示器,BP,或某个变址寄存器,(DI,或,SI),之和。,MOV Al, BX+5,20,第三章:,8086/8088,的指令系统,寻址方式,寄存器相对寻址方式,(Register Relative Addressing),MOV AL,5BX,MOV AL,BX+5,COUNT EQU 5,MOV AL,COUNTBX,以上三个例子是等价的,它执行的操作是:,DS*10H+BX+5,送,AL,。这里,,5,称为位移量(,displacement,),它可以是,8,位或,16,位的二进制数。,21,第三章:,8086/8088,的指令系统,寻址方式,8086/8088,指令系统中有哪些寻址方式?,立即寻址方式,(Immediate Addressing),寄存器寻址方式,(Register Addressing),直接寻址方式,(Direct Addressing),寄存器间接寻址方式,(Register Indirect Addressing),寄存器相对寻址方式,(Register Relative Addressing),基址加变址寻址方式,(Based Indexed Addressing),相对基址加变址寻址方式,(Relative Based Indexed Addressing),22,第三章:,8086/8088,的指令系统,寻址方式,基址加变址寻址方式,(Based Indexed Addressing),有效地址,EA,是由基址寄存器,BX(,或基址指示器,BP),的内容与变址寄存器,(DI,或,SI),的内容之和。,MOV AX, BX+SI,23,第三章:,8086/8088,的指令系统,寻址方式,8086/8088,指令系统中有哪些寻址方式?,立即寻址方式,(Immediate Addressing),寄存器寻址方式,(Register Addressing),直接寻址方式,(Direct Addressing),寄存器间接寻址方式,(Register Indirect Addressing),寄存器相对寻址方式,(Register Relative Addressing),基址加变址寻址方式,(Based Indexed Addressing),相对基址加变址寻址方式,(Relative Based Indexed Addressing),24,第三章:,8086/8088,的指令系统,寻址方式,相对基址加变址寻址方式,(Relative Based Indexed Addressing),操作数,EA,的有效地址是一个基址寄存器和一个变址寄存器的内容和,8,位或,16,位位移量之和。,例如:,MOV AX,COUNTBXSI,MOV AX,COUNTBX+SI,MOV AX,BX+SI+COUNT,以上三者等价,若,(DS)=3000H,(BX)=2000H,(SI)=1000H,COUNT=0250H,,,则物理地址,=16d*(DS)+(BX)+(SI)+COUNT =30000+2000+1000+0250=33250H,25,第三章:,8086/8088,的指令系统,寻址方式,段寄存器使用的基本约定,26,第三章:,8086/8088,的指令系统,寻址方式,指令系统,27,第三章:,8086/8088,的指令系统,指令系统,8086/8088,指令系统可分为以下六个功能组,数据传送,(Data,Transter,),算术运算,(Arithmetic),逻辑运算,(Logic),串操作,(String,Menipulation,),程序控制,(Program Control),处理器控制,(Processor Control),28,第三章:,8086/8088,的指令系统,指令系统,8086/8088,指令系统可分为以下六个功能组,数据传送,(Data,Transter,),算术运算,(Arithmetic),逻辑运算,(Logic),串操作,(String,Menipulation,),程序控制,(Program Control),处理器控制,(Processor Control),29,第三章:,8086/8088,的指令系统,指令系统,数据传送指令,通用数据传送指令,(MOV,、,PUSH,、,POP,、,XCHG),地址传送指令,(LEA,、,LDS,、,LES),标志寄存器传送指令,(LAHF,、,SAHF,、,PUSHF,、,POPF),累加器专用传送指令,(IN,、,OUT,、,XLAT),数据传送指令负责把数据、地址或立即数传送到寄存器或存储单元中。,30,第三章:,8086/8088,的指令系统,指令系统,数据传送指令,通用数据传送指令,(MOV,、,PUSH,、,POP,、,XCHG),地址传送指令,(LEA,、,LDS,、,LES),标志寄存器传送指令,(LAHF,、,SAHF,、,PUSHF,、,POPF),累加器专用传送指令,(IN,、,OUT,、,XLAT),数据传送指令负责把数据、地址或立即数传送到寄存器或存储单元中。,31,第三章:,8086/8088,的指令系统,指令系统,数据传送指令,通用数据传送指令,1.,MOV(Move,),传送,格式为:,MOV DST,SRC,(DST,:目的操作数;,SRC,:源操作数,),执行操作,:,(DST)(SRC),其中:,DST,可以是通用寄存器、段寄存器、存储器操作数;,SRC,可以是通用寄存器、段寄存器、存储器操作数、立即数。,32,第三章:,8086/8088,的指令系统,指令系统,数据传送指令,通用数据传送指令,对于,MOV,指令应注意几个问题:,存储器传送指令中,不允许对,IP,进行操作,,CS,不能作为目的操作数;,两个操作数中,除立即寻址之外必须有一个为寄存器寻址方式,即两个存储器操作数之间不允许直接进行信息传送;如我们需要把地址,(,即段内的地址偏移量,),为,AREA1,的存储单元的内容,传送至同一段内的地址为,AREA2,的存储单元中去,,MOV,指令不能直接完成这样的传送,但我们可以,CPU,内部寄存器为桥梁来完成这样的传送:,MOV AL,,,AREA1 MOV AREA2,,,AL,两个段寄存器之间不能直接传送信息,也不允许用立即寻址方式为段寄存器赋初值;如:,MOV,AX,,,0,MOV,DS,,,AX,目的操作数,不能用立即寻址方式。,33,第三章:,8086/8088,的指令系统,指令系统,数据传送指令,通用数据传送指令,2.,PUSH(Push,onto the stack),进栈指令,格式为:,PUSH SRC,执行操作,:,(SP)(SP)-2 (SP)+1,(SP)(SRC),功能:将数据压入堆栈,注意:源操作数可以是,CPU,内部的,16,位通用寄存器、段寄存器,(CS,除外,),和内存操作数,(,所有寻址方式,),。入栈操作对象必须是,16,位数,不能是,8,位数。,例如:,MOV AX, 0543HPUSH AX,34,第三章:,8086/8088,的指令系统,指令系统,数据传送指令,通用数据传送指令,3.,POP(Pop,from the stack),出栈指令,格式为:,POP DST,执行操作,:,(DST)(SP)+1,(SP) (SP)(SP)+2,功能:将数据弹出堆栈,注意:对指令执行的要求同入栈指令。,例如:,POP DXPOP BXPOP DS,35,第三章:,8086/8088,的指令系统,指令系统,数据传送指令,通用数据传送指令,4.,XCHG(Exchange,),交换指令,格式为:,XCHG OPR1,OPR2,执行操作,:,(OPR1)(OPR2),功能:完成数据交换,注意:,交换指令可把一个字节或,一个字的源操作数与目的操作数,相交换。交换能在通用寄存器之间、,通用寄存器与存储器之间进行。,但段寄存器和立即数不能作为一个,操作数。,例如:,XCHG AL,,,CLXCHG AX,,,DIXCHG BX,,,SIXCHG AX,,,BUFFERXCHG DATASI,,,DH,XCHG AX,BX,;,AX BX,36,第三章:,8086/8088,的指令系统,指令系统,数据传送指令,通用数据传送指令,(MOV,、,PUSH,、,POP,、,XCHG),地址传送指令,(LEA,、,LDS,、,LES),标志寄存器传送指令,(LAHF,、,SAHF,、,PUSHF,、,POPF),累加器专用传送指令,(IN,、,OUT,、,XLAT),数据传送指令负责把数据、地址或立即数传送到寄存器或存储单元中。,37,第三章:,8086/8088,的指令系统,指令系统,数据传送指令,地址传送指令,1.,LEA(,Load,Effective Address,),有效地址传送指令,格式为:,LEA OPRD1,OPRD2,功能:把源操作数,OPRD2,的地址偏移量传送至目的操作数,OPRD1,。,注意:源操作数必须是一个内存操作数目的操作数必须是一个,16,位的通用寄存器。这条指令通常用来建立串操作指令所须的寄存器指针。,例如:,LEA BX,DI,38,第三章:,8086/8088,的指令系统,指令系统,数据传送指令,地址传送指令,2.,LDS(,Load,P,ointer,I,nto DS,),取地址指针指令,格式为:,L,DS,OPRD1,OPRD2,功能:完成一个地址指针的传送。地址指针包括段地址部分和偏移量部分。指令将段地址送入,DS,,偏移量部分送入一个,16,位的指针寄存器或变址寄存器。,注意:源操作数是一个内存操作数,目的操作数是一个通用寄存器,/,变址寄存器。,例如:,LDS BX,TABLESI,39,第三章:,8086/8088,的指令系统,指令系统,数据传送指令,地址传送指令,3.,LES(,Load,P,ointer,I,nto ES,),取地址指针指令,格式为:,LE,S,OPRD1,OPRD2,功能:,这条指令除将地址指针的段地址部分送入,ES,外,与,LDS,类似。,例如:,LES BX,TABLESI,40,第三章:,8086/8088,的指令系统,指令系统,数据传送指令,通用数据传送指令,(MOV,、,PUSH,、,POP,、,XCHG),地址传送指令,(LEA,、,LDS,、,LES),标志寄存器传送指令,(LAHF,、,SAHF,、,PUSHF,、,POPF),累加器专用传送指令,(IN,、,OUT,、,XLAT),数据传送指令负责把数据、地址或立即数传送到寄存器或存储单元中。,41,第三章:,8086/8088,的指令系统,指令系统,数据传送指令,标志寄存器传送指令,LAHF(LOAD AH WITH FLAG),功能:将标志寄存器中的,SF,、,ZF,、,AF,、,PF,和,CF(,即低,8,位,),传送至,AH,寄存器,空位没有定义。,SAHF(STORE AH WITH FLAG),功能:将寄存器,AH,的指定位,送至标志寄存器的,SF,、,ZF,、,AF,、,PF,和,CF,位,(,即低,8,位,),。根据,AH,的内容,影响上述标志位,对,OF,、,DF,和,IF,无影响。,PUSHF(PUSH FLAG),功能:将标志寄存器压入堆栈顶部,同时修改堆栈指针,不影响标志位。,POPF(POP FLAG),功能:堆栈顶部的一个字,传送到标志寄存器,同时修改堆栈指针,影响标志位。,42,第三章:,8086/8088,的指令系统,指令系统,数据传送指令,通用数据传送指令,(MOV,、,PUSH,、,POP,、,XCHG),地址传送指令,(LEA,、,LDS,、,LES),标志寄存器传送指令,(LAHF,、,SAHF,、,PUSHF,、,POPF),累加器专用传送指令,(IN,、,OUT,、,XLAT),数据传送指令负责把数据、地址或立即数传送到寄存器或存储单元中。,43,第三章:,8086/8088,的指令系统,指令系统,数据传送指令,累加器专用传送指令,这组指令只使用,AX,或,AL,传送信息,IN(Input,),输入指令,一般格式,IN,AL,n,;,B,ALn,IN,AX,n,;,W AXn+1nIN AL,DX,;,B ALDXIN AX,DX,;,W AXDX+1DX,功能:从,I/O,端口输入数据至,AL,或,AX,。,注意:输入指令允许把一个字节或一个字由一个输入端口传送到,AL,或,AX,中。若端口地址超过,255,时,则必须用,DX,保存端口地址,这样用,DX,作端口寻址最多可寻找,64K,个端口。,44,第三章:,8086/8088,的指令系统,指令系统,数据传送指令,累加器专用传送指令,OUT(Output,),输入指令,一般格式,OUT,n,AL,;,B AL,nOUT,n,AX,;,W AX,n+1nOUT DX,AL,;,B AL,DXOUT DX,AX,;,W AX,DX+1DX,功能:将,AL,或,AX,的内容输出至,I/O,端口。,注意:,该指令将,AL,或,AX,中的内容传送到一个输出端口。端口寻址方式与,IN,指令相同。,45,第三章:,8086/8088,的指令系统,指令系统,数据传送指令,累加器专用传送指令,XLAT(Translate,),换码,(,查表,),指令,一般格式,XLAT,;,AL=(D,S,)16,(BX)+(AL),功能:完成一个字节的查表转换。,注意:寄存器,AL,的内容作为一个,256,字节的表的下标; 表的基地址在,BX,中; 转换后的结果存放在,AL,中。,46,第三章:,8086/8088,的指令系统,指令系统,8086/8088,指令系统可分为以下六个功能组,数据传送,(Data,Transter,),算术运算,(Arithmetic),逻辑运算,(Logic),串操作,(String,Menipulation,),程序控制,(Program Control),处理器控制,(Processor Control),47,第三章:,8086/8088,的指令系统,指令系统,算术运算指令,加法指令,(ADD,、,ADC,、,INC),减法指令,(SUB,、,SBB,、,DEC,、,NEG,、,CMP),乘法指令,(MUL,、,IMUL),除法指令,(DIV,、,IDIV,、,CBW,、,CWD),十进制调整指令,(DAA,、,DAS,、,AAA,、,AAS,、,AAM,、,AAD),8086,提供加、减、乘、除四种基本算术操作。这些操作都可用于字节或字的运算,也可以用于带符号数与无符号数的运算。带符号数用补码表示。同时,8086,也提供了各种校正操作,故可以进行十进制算术运算。,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(add,),加法指令,一般格式,ADD DST,SRC,;,(DST),(SRC)+(DST),功能:完成两个操作数相加,结果送至目的操作数,DST,。目的操作数可以是累加器,任一通用寄存器以及存储器操作数。,ADC(add,with carry),带进位的加法指令,一般格式,ADC DST,SRC,;,(DST),(SRC)+(DST)+CF,功能:这条指令与上,条指令类似,只是在两个操作数相加时,要把进位标志,CF,的现行值加上去,结果送至目的操作数。本指令主要用于多字节操作数相加。,INC(increment,),加一指令,一般格式,INC OPR,;,(OPR),(OPR)+1,功能:完成对指定的操作数,OPR,加,1,,然后返回此操作数。此指令主要用于在循环程序中修改地址指针和循环次数等。,50,第三章:,8086/8088,的指令系统,指令系统,算术运算指令,加法指令,ADD AL,30;,累加器与立即数相加,ADD BX,3000H;,通用寄存器与存储单元内容相加,ADD DI,CX;,通用寄存器之间,ADD DX,DATABX+SI;,通用寄存器与存储单元内容相加,ADD BETASI,DX;,存储器操作数与寄存器相加,51,第三章:,8086/8088,的指令系统,指令系统,算术运算指令,加法指令,MOV AX,FIRST,ADD AX,SECOND;,进行字运算,MOV THIRD,AX,MOV AX,FIRST+2,ADC AX,SECOND+2,MOV THIRD+2,AX,52,第三章:,8086/8088,的指令系统,指令系统,算术运算指令,加法指令,(ADD,、,ADC,、,INC),减法指令,(SUB,、,SBB,、,DEC,、,NEG,、,CMP),乘法指令,(MUL,、,IMUL),除法指令,(DIV,、,IDIV,、,CBW,、,CWD),十进制调整指令,(DAA,、,DAS,、,AAA,、,AAS,、,AAM,、,AAD),8086,提供加、减、乘、除四种基本算术操作。这些操作都可用于字节或字的运算,也可以用于带符号数与无符号数的运算。带符号数用补码表示。同时,8086,也提供了各种校正操作,故可以进行十进制算术运算。,53,第三章:,8086/8088,的指令系统,指令系统,算术运算指令,减法指令,SUB(subtract,),减法指令,一般格式,SUB DST,SRC,;,(DST),(DST)-(SRC),功能:完成两个操作数相减,也即从,DST,中减去,SRC,,结果放在,SRC,中。,SBB(subtract,with borrow),带借位的减法指令,一般格式,SBB DST,SRC,;,(DST),(DST)-(SRC)-CF,功能:这条指令与,SUB,类似,只是在两个操作数相减时,还要减去借位标志,CF,的现行值。本指令对标志位,AF,、,CF,、,OF,、,PF,、,SF,和,ZF,都有影响。本指令主要用于多字节操作数相减。,DEC(decrement,),减一指令,一般格式,DEC OPR,;,(OPR),(OPR)-1,功能:完成对指定的操作数,OPR,减,1,,然后返回此操作数。,54,第三章:,8086/8088,的指令系统,指令系统,算术运算指令,减法指令,NEG(negate,),求补指令,一般格式,NEG OPR,;,(OPR), (OPR),功能:对操作数取补,即用零减去操作数,再把结果送回操作数。,CMP(compare,),比较指令,一般格式,CMP OPR1,OPR2,;,(OPR1),-(OPR2),功能:比较指令完成两个操作数相减,使结果反映在标志位上,但并不送回结果,(,即不带回送的减法,),。,55,第三章:,8086/8088,的指令系统,指令系统,算术运算指令,减法指令,SUB CX,BX,SUB BP,CL,DEC SI,DEC CL,NEG AL,NEG MULRE,CMP AL,100,CMP DX,DI,CMP CX,COUHTBP,CMP COUNTSI,AX,56,第三章:,8086/8088,的指令系统,指令系统,算术运算指令,加法指令,(ADD,、,ADC,、,INC),减法指令,(SUB,、,SBB,、,DEC,、,NEG,、,CMP),乘法指令,(MUL,、,IMUL),除法指令,(DIV,、,IDIV,、,CBW,、,CWD),十进制调整指令,(DAA,、,DAS,、,AAA,、,AAS,、,AAM,、,AAD),8086,提供加、减、乘、除四种基本算术操作。这些操作都可用于字节或字的运算,也可以用于带符号数与无符号数的运算。带符号数用补码表示。同时,8086,也提供了各种校正操作,故可以进行十进制算术运算。,57,第三章:,8086/8088,的指令系统,指令系统,算术运算指令,乘法指令,MUL(unsigned,multiple),无符号数乘法指令,一般格式,MUL SRC,字节操作数,(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(signed,multiple),带符号数乘法指令,一般格式,IMUL SRC,功能:这是一条带符号数的乘法指令,同,MUL,一样可以进行字节与字节、字和字的乘法运算。结果放在,AX,或,DX,,,AX,中。当结果的高半部分不是结果的低半部分的符号扩展时,标志位,CF=OF=0,,否则,CF=OF=1,。,58,第三章:,8086/8088,的指令系统,指令系统,算术运算指令,乘法指令,MOVAL,FIRST,MUL SECOND ;,结果为,AX=FIRST*SECOND,MOV AX,THIRD,MUL AX ;,结果,DX,:,AX=THIRD*,THIRD,MOV BX,2000H,MUL BX,59,第三章:,8086/8088,的指令系统,指令系统,算术运算指令,乘法指令,例:若,(AL)=0B4H,,,(BL)=11H,,求执行指令,IMUL BL,和,MUL BL,后的结果。,解:,(AL)=0B4H=180D(,无符号数,)=-76D(,带符号数,),,,(BL)=11H=17D(,无符号数,)=17D(,带符号数,),, 执行,IMUL BL,的结果为,(AX)=0FAF4H=-1292DCF=OF=1,执行,MUL BL,的结果为,(AX)=0BF4H=3060DCF=OF=1,60,第三章:,8086/8088,的指令系统,指令系统,算术运算指令,加法指令,(ADD,、,ADC,、,INC),减法指令,(SUB,、,SBB,、,DEC,、,NEG,、,CMP),乘法指令,(MUL,、,IMUL),除法指令,(DIV,、,IDIV,、,CBW,、,CWD),十进制调整指令,(DAA,、,DAS,、,AAA,、,AAS,、,AAM,、,AAD),8086,提供加、减、乘、除四种基本算术操作。这些操作都可用于字节或字的运算,也可以用于带符号数与无符号数的运算。带符号数用补码表示。同时,8086,也提供了各种校正操作,故可以进行十进制算术运算。,61,第三章:,8086/8088,的指令系统,指令系统,算术运算指令,除法指令,DIV(unsigned,divide),无符号数除法指令,一般格式,DIV SRC,字节操作数,(AL),(AX)/SRC,的商,(AH),(AX)/SRC,的余数,字操作数,(AX),(DX,AX)/SRC,的商,(DX),(DX,AX)/SRC,的余数,IDIV(signed,divide),带符号数除法指令,一般格式,IDIV SRC,功能:该指令执行过程同,DIV,指令,但,IDIV,指令认为操作数的最高位为符号位,除法运算的结果商的最高位也为符号位。在除法指令中,在字节运算时被除数在,AX,中;运算结果商在,AL,中,余数在,AH,中。字运算时被除数为,DX,:,AX,构成的,32,位数,运算结果商在,AX,中,余数在,DX,中。,CBW(convert,byte to word),字节转换为字指令,功能:将,AL,的内容符号扩展到,AH,。若,(AL),最高有效位为,0,,,即若,(AL),的,D,7,=0,,,则,(AH)=00,;若,(AL),最高有效位为,1,,则,(AH)=0FFH,。,CWD(convert,word to double word),字转换为双字指令,功能:将,AX,的内容符号扩展到,DX,。若,(AX),最高有效位为,0,,,即若,(AX),的,D,15,=0,,,则,(DX)=00,;若,(AX),最高有效位为,1,,则,(DX)=0FFH,。,62,第三章:,8086/8088,的指令系统,指令系统,算术运算指令,除法指令,若,AX=2000H,,,DX=,0,200H,,,BX=1000H,,则,DIV BX,执行后,,AX=2002H,,,DX=0000,。,63,第三章:,8086/8088,的指令系统,指令系统,算术运算指令,加法指令,(ADD,、,ADC,、,INC),减法指令,(SUB,、,SBB,、,DEC,、,NEG,、,CMP),乘法指令,(MUL,、,IMUL),除法指令,(DIV,、,IDIV,、,CBW,、,CWD),十进制调整指令,(DAA,、,DAS,、,AAA,、,AAS,、,AAM,、,AAD),8086,提供加、减、乘、除四种基本算术操作。这些操作都可用于字节或字的运算,也可以用于带符号数与无符号数的运算。带符号数用补码表示。同时,8086,也提供了各种校正操作,故可以进行十进制算术运算。,64,第三章:,8086/8088,的指令系统,指令系统,算术运算指令,十进制调整指令,计算机中的算术运算,都是针对二进制数的运算,而人们在日常生活中习惯使用十进制。为此在,8086/8088,系统中,针对十进制算术运算有一类十进制调整指令。,在计算机中人们用,BCD,码表示十进制数,对,BCD,码计算机中有两种表示方法:一类为压缩,BCD,码,即规定每个字节表示两位,BCD,数;另一类称为非压缩,BCD,码,即用一个字节表示一位,BCD,数,在这字节的高四位用,0,填充。例如,十进制数,25D,,表示为压缩,BCD,数时为:,25H,;表示为非压缩,BCD,数时为:,0205H,,用两字节表示。,十进制调整指令,指令格式,指令说明,DAA,压缩的,BCD,码加法调整,DAS,压缩的,BCD,码减法调整,AAA,非压缩的,BCD,码加法调整,AAS,非压缩的,BCD,码减法调整,AAM,乘法后的,BCD,码调整,AAD,除法前的,BCD,码调整,65,第三章:,8086/8088,的指令系统,指令系统,算术运算指令,十进制调整指令,【,例如,】,ADD AL,BL DAA,若执行前:,AL=28H,,,BL=68H,,则执行,ADD,后:,AL=90H,,,AF=1,;再执行,DAA,指令后,正确的结果为:,AL=96H,,,CF=0,,,AF=1,。,【,例如,】,MUL BL AAM,若执行前:,AL=07,,,BL=09,,则执行,MUL BL,后,,AX=003FH,,再执行,AAM,指令后,正确的结果为:,AH=06H,,,AL=03H,。,66,第三章:,8086/8088,的指令系统,指令系统,8086/8088,指令系统可分为以下六个功能组,数据传送,(Data,Transter,),算术运算,(Arithmetic),逻辑运算,(Logic),串操作,(String,Menipulation,),程序控制,(Program Control),处理器控制,(Processor Control),67,第三章:,8086/8088,的指令系统,指令系统,逻辑运算指令,逻辑运算指令,(ADD,、,OR,、,NOT,、,XOR,、,TEST),移位指令,(SHL,、,SAL,、,SHR,、,SAR,、,ROL,、,ROR,、,RCL,、,RCR),68,第三章:,8086/8088,的指令系统,指令系统,逻辑运算指令,逻辑运算指令,(ADD,、,OR,、,NOT,、,XOR,、,TEST),移位指令,(SHL,、,SAL,、,SHR,、,SAR,、,ROL,、,ROR,、,RCL,、,RCR),69,第三章:,8086/8088,的指令系统,指令系统,逻辑运算指令,逻辑运算指令,AND(and,),逻辑与指令,一般格式,AND DST,SRC; (DST),(DST)(SRC),OR(or,),逻辑或指令,一般格式,OR DST,SRC; (DST),(DST)(SRC),NOT(not,),逻辑非指令,一般格式,NOT OPR; (DST),(DST),XOR(exclusive,or),逻辑异或指令,一般格式,XOR DST,SRC; (DST),(DST)(SRC),TEST(test,),测试指令,一般格式,TEST OPR1,OPR2;,(OPR1)(OPR2),70,第三章:,8086/8088,的指令系统,指令系统,逻辑运算指令,逻辑运算指令,例如:要求屏蔽,0,、,1,位,可用,AND,指令并设置常数,0FCH,。,MOVAL,0BFHANDAL,0FCH,例如:要测试操作数的某位是否为,0,,可用,TEST,指令,同样把,TEST,指令的源操作数设置成为一个立即数,其中需要测试的位应设为,1,。,MOVAL,40HTESTAL,0AFH,71,第三章:,8086/8088,的指令系统,指令系统,逻辑运算指令,逻辑运算指令,(ADD,、,OR,、,NOT,、,XOR,、,TEST),移位指令,(SHL,、,SAL,、,SHR,、,SAR,、,ROL,、,ROR,、,RCL,、,RCR),72,第三章:,8086/8088,的指令系统,指令系统,逻辑运算指令,移位指令,SHL(shift,logical left),逻辑左移指令,一般格式,SHL OPR,CNT,SAL(shift,arithmetic left),算术左移指令,一般格式,SAL OPR,CNT,SHR(shift,logical right),逻辑右移指令,一般格式,SHR OPR,CNT,SAR(shift,arithmetic right),算术右移指令,一般格式,SAR OPR,CNT,ROL(rotate,left),循环左移指令,一般格式,ROL OPR,CNT,ROR(rotate,right),循环右移指令,一般格式,ROR OPR,CNT,RCL(rotate,left through carry),带进位循环左移指令,一般格式,RCL OPR,CNT,RCR(rotate,right through carry),带进位循环右移指令,一般格式,RCR OPR,CNT,73,第三章:,8086/8088,的指令系统,指令系统,8086/8088,指令系统可分为以下六个功能组,数据传送,(Data,Transter,),算术运算,(Arithmetic),逻辑运算,(Logic),串操作,(String,Menipulation,),程序控制,(Program Control),处理器控制,(Processor Control),74,第三章:,8086/8088,的指令系统,指令系统,串操作指令,串操作类指令可以用来实现内存区域的数据串操作。这些数据串可以是字节串,也可以是字串。,功能,指令格式,执行操作,串传送,MOVS DST,,,SRC,MOVSB,MOVSW,由操作数说明是字节或字操作;其余同,MOVSB,或,MOVSW,(ES,:,DI)(DS,:,SI),;,SI=SI1,,,DI=DI1,;,(ES,:,DI)(DS,:,SI),;,SI=SI2,,,DI=DI2,;,串比较,CMPS DST,,,SRC,CMPSB,CMPSW,由操作数说明是字节或字操作;其余同,CMPSB,或,CMPSW,(ES,:,DI),(DS,:,SI),;,SI=SI1,,,DI=DI1,;,(ES,:,DI),(DS,:,SI),;,SI=SI2,,,DI=DI2,;,串搜索,SCAS DST,SCASB,SCASW,由操作数说明是字节或字操作;其余同,SCASB,或,SCASW,AL,(ES,:,DI),;,DI=DI1,;重复前缀控制前两步,AX,(ES,:,DI),;,DI=DI2,;重复前缀控制前两步,存串,STOS DST,STOSB,STOSW,由操作数说明是字节或字操作;其余同,STOSB,或,STOSW,AL(ES,:,DI),;,DI=DI1,;重复前缀控制前两步,AX(ES,:,DI),;,DI=DI2,;重复前缀控制前两步,取串,LODS SRC,LODSB,LODSW,由操作数说明是字节或字操作;其余同,LODSB,或,LODSW,(DS,:,SI)AL,;,SI=SI1,;重复前缀控制前两步,(DS,:,SI)AX,;,SI=SI2,;重复前缀控制前两步,75,第三章:,8086/8088,的指令系统,指令系统,8086/8088,指令系统可分为以下六个功能组,数据传送,(Data,Transter,),算术运算,(Arithmetic),逻辑运算,(Logic),串操作,(String,Menipulation,),程序控制,(Program Control),处理器控制,(Processor Control),76,第三章:,8086/8088,的指令系统,指令系统,程序控制指令,无条件转移指令,(JMP),条件转移指令,(JZ/JE,、,JNZ,、,JS,、,JNS,、,JO,、,JNO,、,JP,、,JNP,、,JB,、,JNB),循环指令,(LOOP,、,LOOPZ,、,LOOPNZ),子程序,(CALL,、,RET),中断,(I
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 机械制造 > 工业自动化


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!