《指令系统特点》PPT课件.ppt

上传人:牧羊曲112 文档编号:5515949 上传时间:2023-07-15 格式:PPT 页数:84 大小:390.50KB
返回 下载 相关 举报
《指令系统特点》PPT课件.ppt_第1页
第1页 / 共84页
《指令系统特点》PPT课件.ppt_第2页
第2页 / 共84页
《指令系统特点》PPT课件.ppt_第3页
第3页 / 共84页
《指令系统特点》PPT课件.ppt_第4页
第4页 / 共84页
《指令系统特点》PPT课件.ppt_第5页
第5页 / 共84页
点击查看更多>>
资源描述

《《指令系统特点》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《指令系统特点》PPT课件.ppt(84页珍藏版)》请在三一办公上搜索。

1、8086 指令系统特点,可变长指令:指令格式比较复杂。寻址方式多样灵活,处理数据能力比较强(字节/字、有符号/无符号二进制数据、压缩型/非压缩型十进制数据)。有重复指令、乘除运算指令。扩充了条件转移、移位/循环指令。增设了加强软件中断功能和支持多处理器系统的相关指令。,8086 指令格式,指令由两部分构成:,操作码(OP-Code)字段:计算机所要执行的操作类型,由一组二进制代码表示。在汇编语言中用助记符代表。,操作数(Oprand)字段:指令执行的操作所需的操作数,可是操作数本身,或操作数地址,或操作数地址计算方法。,无操作数:控制类指令单操作数:只给出一个操作数地址,该操作数可在寄存器或存

2、储器中,或指令中直接给出立即数。双操作数:源操作数(source),目的操作数(destination)一个操作数在寄存器中,另一个在寄存器或存储器中,或指令中直接给出立即数。不允许两个都在存储器中。,8086 指令格式,可变长指令,指令长度为16个字节。其中B1和B2为基本字节,B3B6根据不同指令作相应的安排。,B1,B2,B3,B4,B5,B6,操作码,从/到寄存器,字/字节,寻址方式,寄存器,寄存器/存储器,8086 指令格式,寻址方式,固定寻址立即数寻址寄存器寻址存储器寻址,5.其它寻址方式,1.固定寻址,有些单字节指令,规定CPU对某个固定的寄存器进行。,如:加法的ASCII调整指

3、令AAA,规定被调整的数总位于AL中。,该指令用来调整AL中的结果,指令编码为:,37H,寻址方式,2.立即数寻址,操作数就在指令中,当执行指令时,CPU直接从指令队列中取得立即数,而不必执行总线周期。,立即数可以是8位,或16位;只能是整数类型的源操作数;主要用来给寄存器赋初值;指令执行速度快。,如:加法指令 MOV AX,1680H,表示将1680H送AX,AH中为16H,AL中为80H;即高地址对应高字节,低地址对应低字节。,寻址方式,3.寄存器寻址,操作数在CPU的寄存器中,指令中给出寄存器名。源操作数和目的操作数均可采用寄存器寻址方式。,寻址的指令长度短;操作数就在CPU内部进行,不

4、需要使用总线周期;指令执行速度快。,如:加1指令 INC reg,表示将寄存器内容加1,指令编码:,0,2,3,7,寻址方式,4.存储器寻址,寻找存储器操作数,必须经总线控制逻辑电路进行存取。,当EU单元需要读/写位于存储器的操作数时:,根据寻址方式(指令中B2字节),由EU计算出操作数地址的偏移量,即有效地址EA;将EA送至BIU单元,同时请求BIU执行一个总线周期;BIU将某个段寄存器的内容左移4位,加上EU送来的EA,形成20位的实际地址,即物理地址PA;执行总线周期,读/写指令所需的操作数。,寻址方式,4.存储器寻址:直接寻址,最简单、直观。指令中直接以位移量形式,给出操作数的有效地址

5、EA,即EADISP执行速度快,主要用于存取位于存储器中的简单变量。,如:MOV AX,1680H,表示将1680H和1681H两单元的取入AX中。,寻址方式,4.存储器寻址:间接寻址,指寄存器寻址方式,操作数一定在存储器中;存储单元的EA由寄存器指出:基址寄存器BX,基址指针寄存器BP,变址寄存器SI和DI;书写时,寄存器带方括号;根据所采用的寄存器不同,分为三种:,基址寻址:BX或BP位移量变址寻址:SI或DI位移量基址加变址:BX或BPSI或DI位移量,寻址方式,4.存储器寻址实例,例:设DS=1200H,BX=05A6H,SS=5000H,BP=40A0H,SI=2000H,DI=30

6、00H,位移量DISP=1618H。试判断下列指令的寻址方式,并求出在各种寻址方式下的EA和PA,并说明指令执行的结果。,MOV AX,0618H 直接寻址,EA=DISP=0618H,执行结果:将数据段12618H和12619H两单元的内容取出送AX。,PA=DS左移4位+EA=12000H+0618H=12618H,寻址方式,5.其它寻址方式,串操作指令寻址方式,源串操作数第1个字节/字有效地址存放在源变址寄存器SI中。,目标串操作数第1个字节/字有效地址存放在目标变址寄存器DI中。,重复串操作时,自动修改SI和DI的内容,指向后面的字节/字。,指令中,不必给出SI或DI的编码,故串操作指

7、令是隐含寻址方式。,寻址方式,I/O端口寻址方式,直接端口寻址:以8位立即数方式在指令中直接给出。端口号范围 0255 例如:IN AL,n,间接端口寻址:通过DX间接寻址,16位端口地址放在DX中。端口号范围 065535 例如:OUT DX,AL,寻址方式,转移类指令的寻址方式,8086系统中,存储器采用分段结构,转移类指令有段内转移和段间转移。,条件转移指令:只允许实现段内转移,且段内短转移,即转移地址范围为-128+127字节,由指令直接给出8位地址偏移量。,无条件转移指令和调用指令:段内短转移,段内直接转移,段内间接转移,段间直接转移,段间间接转移,寻址方式,指令的分类,8086指令

8、系统中,包含133条基本指令,与寻址方式结合,再加上不同的数据形式,可构成上千种指令。,数据传送类 算术运算类 逻辑运算与移位类 串操作类 处理器控制类,可完成寄存器与寄存器之间、寄存器与存储器之间,寄存器与I/O端口之间的字节或字传送。,特点:除SAHF和POPF外,不影响标志寄存器内容。,通用数据传送(5条)目标地址传送(3条)标志位传送(4条)I/O数据传送(2条),共14条,分为4小类:,数据传送类,数据传送类,通用数据传送指令(5条),字节或字传送:MOV 目的,源字压入堆栈:PUSH 源字弹出堆栈:POP 目的字节或字交换:XCHG 目的,源字节翻译:XLAT,通用数据传送,MOV

9、 d,s;将源操作数s指定的内容送到目的d,源操作数:8/16位寄存器、存储器中的某个字节/字,或者8/16位立即数;目标操作数:8/16位寄存器、存储器中的某个字节/字,不能为立即数;,通用数据传送,MOV 指令需注意问题:,MOV指令可传送8位数据,也可传送16位数据。MOV 指令中的两操作数s和d,必用1个寄存器,不允许同为存储单元。不能用CS和IP做目的操作数。不允许段寄存器之间直接数据传送。不允许立即数做目的操作数。不能向段寄存器送立即数。,通用数据传送,PUSH s;将源操作数(16位)压入堆栈POP d;将堆栈中当前栈顶两相邻单元数据字弹出到d,特点:s和d可以是16位寄存器或存

10、储器两相邻单元;堆栈按字操作;每执行一条入栈指令,堆栈地址指针SP减2,入栈的数据位于栈顶;高位字节先入栈,放在较高地址单元,低位字节后入栈,放在较低地址单元;“先进后出原则”执行弹出指令时,过程相反,栈顶指针的值加2;CS段寄存器值可以入栈,但不能反过来弹出一个字到CS。,通用数据传送,7,0,CS,IP,2003E,20000,10030,10000,存储器,CS段首地址,SS,SP,+1,指令代码,SS段首地址,PUSH BX其中:CS=1000H,IP=0030H,SS=2000H,SP=0040H,BX=2340H,2340H,x16,BX,-2,x16,2003F,20040,新栈

11、顶,栈底(原栈顶),通用数据传送,POP CX 其中:CS=1000H,IP=0020H,SS=1600H,SP=004CH,7,0,CS,IP,1604C,16000,10020,10000,存储器,CS段首地址,SS,SP,+1,指令代码,SS段首地址,1234H,x16,CX,2,x16,1604D,1604E,原栈顶,新栈顶,通用数据传送,目标地址传送指令(3条),装入有效地址:LEA 目的,源装入DS寄存器:LDS 目的,源装入ES寄存器:LES 目的,源,目标地址传送,用于指定源操作数(需是M操作数)的16位偏移地址EA,传送到一个指定的16位通用寄存器中。通常用来建立串操作指令所

12、需的寄存器指针。,目标地址传送,LEA d,s;取有效地址指令,注意和LEA和MOV指令区别。,例如:LEA AX,0618H;将内存单元的偏移量0618H送AX,;指令执行后,AX中的内容为0618H,LEA SP,3768H;使堆栈指针SP为3768H,LEA BX,BPDI;将内存单元的偏移量BP+DI送BX,;指令执行后,BX中内容为BP+DI的值,目标地址传送,标志位传送指令(4条),将FR低字节装入AH寄存器:LAHF将AH内容装入FR低字节:SAHF将FR内容压入堆栈:PUSHF从堆栈弹出FR内容:POPF,标志位传送,了解内容,特点:I/O指令只能用累加器作为执行I/O数据传送

13、的机构;直接寻址I/O指令:寻址范围0255;间接寻址I/O指令:寻址范围065535;I/O设备地址两种形式:固定端口和可变端口。,I/O数据传送指令(2条),输入字节或字:IN 累加器,端口输出字节或字:OUT 端口,累加器,I/O数据传送,端口号可由8位立即数直接给出;也可由DX寄存器间接给出16位端口号。,IN AL,PORT;AL(端口PORT),IN AX,PORT;AX(端口PORT),IN 累加器,端口号;指定端口中内容输入到累加器AL/AX,I/O数据传送,端口号可由8位立即数直接给出;也可用DX寄存器间接给出16位端口号。,OUT PORT,AL;端口PORT AL,OUT

14、 PORT,AX;端口PORT AX,OUT 端口号,累加器;累加器AL/AX中内容输出到指定端口,I/O数据传送,例如:OUT DX,ALCS=4000H,IP=0020H,DX=6A10H,AL66H。,执行结果:将累加器AL中的数据字节66H,输出到DX指定的端口6A10H中。,I/O数据传送,算术运算类,无符号/有符号、8/16位二进制数运算:加减乘除无符号压缩型/非压缩型十进制运算:十进制调整根据运算结果影响状态标志,有时要利用某些标志才能得到正确的结果;使用时请留心有关状态标志。,加法(3条)减法(5条)乘法(2条)除法(4条)十进制调整(6条),共20条,分为5小类:,加法,O

15、S Z A P C,表示运算结果影响标志位,表示运算结果不影响标志位,ADD d,s;dds 功能:源操作数和目的操作数相加,结果送到目的操作数。,源操作数:8/16位通用寄存器,存储器,立即数 目的操作数:8/16位通用寄存器,存储器,提示:目的操作数不能为立即数;源操作数和目的操作数不能同时为存储器。,加法,CF将重新根据结果置成新的状态。ADC指令一般用于16位以上的多字节数字相加。,例如:ADC AX,BX;AX=AX+BX+C ADC BX,BP+2;由BX+2寻址的堆栈段存储单元的字;内容,加上BX和进位位,结果存入BX。,ADC d,s;ddsCF功能:源操作数和目的操作数相加外

16、,再加上进位标志CF,结果送到目的操作数。,加法,INC d;dd+1功能:将目的操作数当作无符号数,加1后,结果送到目的操作数。,目的操作数:8/16位通用寄存器,存储器;但不允许为立即数。,间接寻址的存储器单元加1时,数据长度需用伪指令说明;,INC指令只影响OF、SF、ZF、AF、PF5个标志,不影响CF。,循环程序中,常用该指令对地址指针和循环计数值进行修改。,加法,O S Z A P C,表示运算结果影响标志位,表示运算结果不影响标志位,减法,SUB d,s;dd-s 功能:目的操作数减去源操作数,结果送到目的操作数。,源操作数:8/16位通用寄存器,存储器,立即数 目的操作数:8/

17、16位通用寄存器,存储器,提示:目的操作数不能为立即数;源操作数和目的操作数不能同时为存储器。不允许进行段寄存器减法。,减法,SBB d,s;dd s-CF功能:目的操作数减去源操作数外,再减去进位标志位 CF,结果送到目的操作数。,CF将重新根据结果置成新的状态。SBB指令一般用于16位以上的多字节数字相减。,例如:SBB AX,BX;AX=AX-BX-CF SBB WORD PTRDI,50A0H;由DI寻址的数据段存储;单元的内容,减去50A0H;及CF值。,减法,DEC d;dd-1功能:将目的操作数减1后,结果送到目的操作数。,目的操作数:8/16位通用寄存器,存储器;但不允许为立即

18、数。,间接寻址的存储器单元减1时,数据长度需用TYPE PTR类型伪指令来标识数据长度。,DEC指令只影响OF、SF、ZF、AF、PF5个标志,不影响CF。,循环程序中,常用该指令对地址指针和循环计数值进行修改。,减法,CMP d,s;d-s 只置标志位 功能:目的操作数减去源操作数,不送回结果。只根据运算结果置标志位。,源操作数:8/16位通用寄存器,存储器,立即数 目的操作数:8/16位通用寄存器,存储器,提示:目的操作数不能为立即数;源操作数和目的操作数不能同时为存储器;不允许进行段寄存器比较。,减法,例 用比较指令判断两个数大小。,无符号数:根据借位标志CF判断。ZF=1,d=s;ZF

19、=0,ds CF=0,表示无借位,即d s;CF=1,表示有借位,即ds;,有符号数:根据溢出标志OF和符号标志SF两者的 异或运算结果来判断。OFSF=0时,则ds;OFSF=1时,则ds;,通常,比较指令后面跟一条条件转移指令,检查标志位的状态决定程序的转向。,减法,了解内容,O S Z A P C,x 表示标志位为任意值,表示运算结果影响标志位,乘法,了解内容,O S Z A P C,x 表示标志位为任意值,表示运算结果不影响标志位,除法,了解内容,逻辑运算和移位循环类,逻辑运算(5条)移位(4条)循环(4条),共13条,分为3小类:,逻辑运算,O S Z A P C,x 表示标志位为任

20、意值,表示运算结果不影响标志位,1 表示标志位置1,表示运算结果影响标志位,AND d,s;dd s 按位“与”操作,源操作数:8/16位通用寄存器,存储器,立即数 目的操作数:8/16位通用寄存器,存储器,提示:目的操作数不能为立即数。源操作数和目的操作数不能同时为存储器。影响SF,ZF,PF;OF,CF置0;AF无意义。二者均为1,结果为1;否则为0。用来对一个数据的指定位清零。,逻辑运算,例:对指定位清零。如将AL高4位清零,(AL)=3AH。AND AL,0FH 结果:(AL)=0AH,0011 1010,0000 1111,AND),0000 1010,逻辑运算,OR d,s;dd

21、s 按位“或”操作,源操作数:8/16位通用寄存器,存储器,立即数 目的操作数:8/16位通用寄存器,存储器,提示:目的操作数不能为立即数源操作数和目的操作数不能同时为存储器影响SF,ZF,PF;OF,CF置0;AF无意义二者均为0,结果为0;否则为1用来对一个数据的指定位置1,逻辑运算,例:将AL最高位置1,(AL)=14H OR AL,80H结果:(AL)=94H,0001 0100,1000 0000,OR),1001 0100,逻辑运算,XOR d,s;dd s 按位“异或”操作,源操作数:8/16位通用寄存器,存储器,立即数 目的操作数:8/16位通用寄存器,存储器,提示:目的操作数

22、不能为立即数源操作数和目的操作数不能同时为存储器影响SF,ZF,PF;OF,CF置0;AF无意义二者相反,结果为1;否则为0用来使某个寄存器清零,如 XOR AX,AX,逻辑运算,例:比较两个操作数是否相同。如判断AL中数据是否为3CH。XOR AL,3CH结果:ZF=1,则(AL)=3CH ZF=0,不等,逻辑运算,例:将指定的数据变反,(AL)=3AH。,XOR AL,0FFH;结果:(AL)=C5H,0011 1010,1111 1111,XOR),1100 0101,逻辑运算,TEST d,s;d s 按位“与”操作;不送回操作数,操作数不变,源操作数:8/16位通用寄存器,存储器,立

23、即数 目的操作数:8/16位通用寄存器,存储器,提示:目的操作数不能为立即数;源操作数和目的操作数不能同时为存储器;影响SF,ZF,PF;OF,CF置0;AF无意义二者均为1,结果为1;否则为0用来检测指定位是1还是0,逻辑运算,例1:测试AL的最高位D7是否为1(即正数/负数)TEST AL,80H;结果:ZF=0,则AL最高位为1 ZF=1,则AL最高位为0,逻辑运算,例2:测试(BX)所指存储单元的最低位D0是否为1(即奇数/偶数);,TEST BX,01H;结果:ZF=0,则AL最高位为1 ZF=1,则AL最高位为0,逻辑运算,AND BL,11110110B;BL中D0和D3清0,其

24、余位不变OR BL,00001001B;BL中D0和D3置1,其余位不变XOR BL,00001001B;BL中D0和D3求反,其余位不变,AND指令可用于复位某些位(同0相与),不影响其他位,OR指令可用于置位某些位(同1相或),不影响其他位,XOR指令可用于求反某些位(同1相异或),不影响其他位,逻辑运算,移位,O S Z A P C,x 表示标志位为任意值,表示运算结果影响标志位,将操作数移动1位或多位,分逻辑移位和算术移位,分别具有左移或右移操作。移位指令的目的操作数是指定的被移位的操作数,可以是8/16位通用寄存器或存储单元;计数值COUNT表示移位位数:COUNT为1:表示移动1位

25、,指令的COUNT字段可直接写1若移动n位(n255):则n事先装入CL,指令的COUNT字段只能写CL按照移入的位设置进位标志CF,根据移位后的结果影响SF、ZF、PF,移位,0,0,0,移位,例:将AL寄存器中的无符号数乘以10,XOR AH,AH;实现AH=0,同时使CF=0SHL AX,1;AX2xALMOV BX,AX;BXAX=2xALSHL AX,1;AX4xALSHL AX,1;AX8xALADD AX,BX;AX8xAL+2xAL=10 xAL,逻辑左移一位相当于无符号数乘以2 逻辑右移一位相当于无符号数除以2,移位,O S Z A P C,x 表示标志位为任意值,表示运算结

26、果不影响标志位,表示运算结果影响标志位,循环,了解内容,串操作类指令,基本字符串指令(10条)重复前缀(3条),共13条,分为2小类:,了解内容,数据串:位于存储器中由若干个字节或字组成的一组 数据(或字符)。每个字节或字称为数据串的元素。,字节串:元素为字节的数据串。字串:元素为字的数据串。,串操作类指令,是唯一的源操作数和目的操作数均在存储单元的指令。可以对字节串或字串进行操作。所有串操作指令都用SI对DS段中的源操作数进行间接寻址,用DI对ES段中的目的操作数进行间接寻址。执行时:地址指针的修改与方向标志DF有关。DF=1,SI和DI作自动减量修改,DF=0,SI和DI作自动增量修改。执

27、行前:需对SI,DI,DF进行设置,且把串长度设置在CX中。在串操作指令前加前缀,可使串操作重复进行,其执行过程相当于一个循环程序的运行。,串操作类指令,程序控制类指令,控制转移类指令用于实现分支、循环、过程等程序结构,是仅次于传送指令的常用指令。,控制转移类指令通过改变IP(和CS)值,实现程序执行顺序的改变,段内转移 近转移(near)在当前代码段64KB范围内转移(32KB范围)不需要更改CS段地址,只要改变IP偏移地址段内转移 短转移(short)转移范围可以用一个字节表达,在段内128127范围的转移,程序控制类指令,段间转移 远转移(far)从当前代码段跳转到另一个代码段,可以在1

28、MB范围需要更改CS段地址和IP偏移地址目标地址必须用一个32位数表达,称为32位远指针,它就是逻辑地址,代码段,代码段,程序控制类指令,无条件转移(3条)条件转移(18条),共28条,分为4小类:,循环控制(4条)中断(3条),程序控制类指令,无条件转移,只要执行无条件转移指令JMP,就使程序转到指定的目标地址,从目标地址处开始执行指令。操作数Label是要转移到的目标地址(目的地址、转移地址),JMP Label;程序转向Label标号指定的地址,无条件转移,条件转移,条件转移指令与无条件转移指令区别:,无条件转移指令出现后,一定转移至目标地址执行程序。条件转移指令只有当条件成立时,才转移

29、至目标地址执行程序,否则程序顺序执行。,条件转移指令之前,一定要有测试条件的指令。,为缩短指令长度,加快转移速度,所有的条件转移指令都被设计成短转移,即转移目标与本指令之间的字节距离在-128+127范围以内。如果遇到超出了短转移所能转移的范围时,可通过两条转移指令来实现转移。,条件转移指令Jcc根据指定的条件确定程序是否发生转移。其通用格式为:Jcc label;条件满足,发生转移;IPIP8位位移量;否则,顺序执行label是一个标号、一个8位位移量,表示Jcc指令后的那条指令的偏移地址,到目标指令的偏移地址的地址位移。Jcc指令不影响标志,但要利用标志。,条件转移,条件转移,循环控制,L

30、OOP label 功能:先将CX寄存器内容减1后送回CX,再判断CX是否为0,若CX0,则转移到目标标号所给定的地址继续循环,否则,结束循环顺序执行下一条指令。这是一条常用的循环控制指令,使用LOOP指令前,应将循环次数送入CX寄存器。其操作过程与条件转移指令类似,只是它的位移量应为负值。,循环控制,LOOPE/LOOPZ 目标标号LOOPE和LOOPZ是同一条指令的两种不同的助记符。功能:是先将CX减1送CX,若ZF=1且CX0时则循环,否则顺序执行下一条指令。,循环控制,LOOPNE/LOOPNZ 目标标号 LOOPNE和LOOPNZ也是同一条指令的两种不同的助记符。功能:是先将CX减1

31、送CX,若ZF=0且CX0时则循环,否则顺序执行下一条指令。,循环控制,JCXZ 目标标号 JCXZ指令不对CX寄存器内容进行操作,只根据CX内容控制转移。它既是一条条件转移指令,也可用来控制循环,但循环控制条件与LOOP指令相反。循环控制指令在使用时放在循环程序的开头或结尾处,以控制循环程序的运行。,循环控制,中断指令,了解内容,INT 中断类型n,8086系统中允许有256种中断类型(0255),CPU根据中断类型号,从内存实际地址为00000H 003FFH区中的中断向量表找到中断服务程序的入口地址。每个类型号含4字节的中断向量,中断向量就是中断服务程序的入口地址。中断类型n4,就得到中断向量的存放地址,由此地址开始,前2个单元中存放中断服务程序入口地址的偏移量(即IP),后2个单元中存放着中断服务程序入口地址的段首址(即CS)。,中断指令,CPU执行INT指令过程:(SP)(SP)-2,将标志寄存器F内容入栈;清除中断标志IF和单步标志TF,以禁止可屏蔽中断和单步中断进入;(SP)(SP)-2,将当前程序断点的段地址入栈保护;(SP)(SP)-2,将当前程序断点的偏移地址入栈保护;n4,从中断入口地址表中获得中断入口的段地址和偏移地址,分别置入段寄存器CS和指令指针IP中,CPU将转向中断入口去执行相应的中断服务程序。,中断指令,Thank You!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号