资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第一章8086/8088系统,* 工作模式,* 引脚信号,1,第一章8086/8088系统,最小模式和最大模式的概念,为了尽可能适应各种各样的使用场合,在设计8086/8088CPU芯片时,使它们可以在两种模式下工作,即最小模式和最大模式,。,2,第一章8086/8088系统,最小模式,在系统中只有8086或者8088一个处理微器。系统中的所有的总线控制信号都直接由8086或8088产生。因此,系统中的总线控制电路被减到最少。,3,第一章8086/8088系统,最大模式是相对最小模式而言的,最大模式用于中等规模的或大型的8086/8088系统中。在最大模式系统中,总是包含有两个或多个处理微器,其中一个主处理器就是8086或者8088,其他的处理器称为协处理器,它们是协助主处理器工作的。,4,第一章8086/8088系统,8086/8088到底工作在最大模式还是最小模式,这完全有硬件决定。,5,第一章8086/8088系统,8086/8088的引腿信号特点,*,8086/8088的数据线和地址是复用的,*,除了第28腿和第34腿以外,8086和,8088的控制线引腿定义是一样的,。,6,第一章8086/8088系统,第21腿(RESET)是输入复位信号的。在8086/8088系统中,CPU被启动后,处理器的标志寄存器,指令指针寄存器IP,段寄存器DS,SS,ES和指令队都被清除,但是代码段寄存器CS被设置为FFFFH。,7,第一章8086/8088系统,因为IP=0000,CS=FFFFH。所以,8086/8088将从地址FFFF0H开始执行指令。通常,在安排内存区域时,将高地址区作为只读存储区,且在FFFF0H单元开始的几个单元中放一条无条件转移指令,转到一个特定的程序中。这个程序往往实现系统初始化,引导监控程序或者引导操作系统等功能,这样的程序叫引导和装配程序。,8,第一章8086/8088系统,第22引腿用于从内存或I/O接口往CPU输入“准备好”(READY)信号,第23腿(TEST)是在多处理器系统中使用的,。,9,第一章8086/8088系统,A19/S6A16/S3:该高4位地址线和状态线复用。在总线周期的前一部分时间,A19/S6A16/S3腿用来输出高4位地址,在总线周期的其余部分时间,则用来输出状态信息。,10,第二章 指令系统,直接寻址:,所需的操作数通过指令直接提供的偏移地址来得到。,MOV AX,,,2000H,偏移地址:,2000H,段地址:(隐含,DS,),(,DS,),=3000H,2000H,+ 30000H,物理地址:,32000H,结果:(AH)=3050H,OP,AX,50,00,30,32000H,数,据,段,代码,段,11,寄存器间接寻址,操作数在存储器中的地址在(,SI,,,DI,,,BP,,,BX,)中。,(1)若以SI,DI,BX间接寻址,操作数在现行数据段中,例:,MOV AX,,,SI ,1000H,20000H,SI,+ DS,物理地址:,21000H,21 43,21000H,AX,21,43,F,F,0,0,12,第二章 指令系统,(,2,)若以寄存器,BP,间接寻址,则操作数在堆栈段中。,例:,MOV AX,,,BP,3000H,20000H,BP,+ SS,物理地址:,23000H,23000H,AX,21 43,21,43,13,第二章 指令系统,(3)若指令中规定是段超越的,也可以寻访其他段。,MOV AX,,,ES,:,BX,14,第二章 指令系统,直接变址寻址 寄存器相对寻址,由指定的寄存器内容,加上指令中给定的,8,位或,16,位偏移量(当然有一个段寄存器作基本地址)作为操作数地址。,例,15,第二章 指令系统,例:MOV AX,countSI,例:,MOV AX,,,BP,2000H,30000H,SI,Count,35000H,count,(AX)=4525H,+DS,45 25,45,25,3000H,AX,00,30,OP,16,第二章 指令系统,变址地址也可以使段跨越前缀。,MOV DL,,,ES,:,STRINGSI,正常情况下,,SI,,,DI,,,BX,作变址,与,DS,联用。,若用BP变址,与DS联用。,17,第二章 指令系统,基址变址寻址,操作数的偏移地址是一个基址寄存器(,BX,BP,),和一个变址寄存器的内容之和。(SI,DI),基址寄存器,=BX,;段寄存器是,DS,隐含,基址寄存器=BP;段寄存器是SS,例,18,第二章 指令系统,该寻址方式同样可以段超越使用,MOV AX,ES:BXSI,0158H,10A5H,BX,+ DS,221FDH,DI,21000H,AX,21,45,21 45,MOV AX,,,BXDI,DS =2100H;BX =0158H; DI=10A5H,19,第二章 指令系统,操作数偏移地址由一个基址寄存器、一个变址寄存器的内容和,8,位或,16,位,位移量之和构成。,例:,MOV AX,,,MASKBXSI,1000H,2000H,SI,BX,33250H,33 44,33,44,AX,30000H,(,MASK,),DS,0250H,该地址也可以段超越。,20,第二章 指令系统,寻找一个操作数,只能在某一个段的,64KB,范围中寻找。已什么寄存器间址、变址等,则操作数就在什么段域中,,8086/8088有,约定,只要不在指令中,超越这个约定,就按平常状态来寻找操作数。,21,第二章 指令系统,存取方式,约定段,可修改(段超越),偏移地址,取指令(代码),CS,NO,IP,堆栈操作,SS,NO,CP,源串,DS,CS、ES、SS,SI,目串,SS,NO,DI,BP为基寄存器,SS,CS、DS、ES,组合,通用数据读写,DS,CS、ES、SS,组合,22,第二章 指令系统,(1)操作码(,OP,)的机器语言表示,(3)指令的执行时间,(2)寻址方式的机器语言表示,23,第二章 指令系统,8086/8088,指令是多字节指令,一条指令可由,17,个字节构成,操作码通常是,第一字节表示。,OP d w,0,7,0 字节操作 0 源操作数,W= d= (双操作数指令),1 字操作 1 目的操作数,说明:,Ret,的用途。,24,第二章 指令系统,若采用立即寻址:操作码:,OP,s,w,0,7,sw = 01 指令有16位立即数,而且作字操作,11 指令有,8,位立即数,00 字节操作,25,第二章 指令系统,机器指令的第二个字节用于表明寻址方式,Mod Reg R/m,2 65 32 0,Reg,表示寄存器方式,双操作数指令规定必须有一个操作数在寄存器中,该寄存器,由reg决定。Mod与r/m结合在一起确定另一操作数的寻址方式,。,26,第二章 指令系统,若无段超越,则使用隐含段寄存器,若指定段前缀,则在机器指令之前的一个,字节来表示。,001 SEG 110,7 0,标志,例,27,第二章 指令系统,ADD CL,BH,000 000 1 0 02H,d: reg为目的操作数,11 001 111 CFH,mod ret r/w,与,w=0,寄存器寻址,CL BH,CF,02,高,低,OP,W:字节,28,第二章 指令系统,ADD DISP BXDI,,,DX,000000 0 1,w:,字运算,OP d:reg,为源操作数,10 010 00100011,mod ret r/m,DISP,相对基址变址寻址,DX,29,第二章 指令系统,指令执行时间,f=5MHz T= 1/5MHz=0.2s,ADD AX,,,BX,寄存器,寄存器方式,T=3,0.2=0.6,(,s,),ADD AX,,,DISPBXDI,存储器,寄存器方式,T=(9+EA).,().(s),30,第二章 指令系统,指令系统可以分为6组,数据传送指令,逻辑运算,控制转移,处理机控制,串操作,算术指令,31,第二章 指令系统,1、通用数据传送指令,:,MOV,;,PUSH,;,POP,;,XCHG,3,、地址传送指令:,LEA,;,LDS,;,LES,4、寄存器传送指令:,LAHF,;,SAHF,;,PUSHF,;,POPF,(标志入,AH,),(AH入标志),(标志入栈) (标志出栈 ),2、累加器专用传递指令:,IN,,,OUT,,,XLAT,这组指令只限于累加器,AX,,,AL,。,32,第二章 指令系统,MOV,传送指令:,MOV OPRD1,,,OPRD2,目的,源,CPU,内部寄存器之间数据传送(除,CS,,,IP,外),MOV AL,,,BL,MOV AX,,,BX,MOV DS,BX,33,第二章 指令系统,立即数传送至,CPU,内部的通用寄存器(段寄存器除外),AX,,,BX,,,CX,,,DX,,,BP,,,SP,,,SI,,,DI,MOV CL,,,4,MOV AX,,,03FFH,MOV SI,057BH,34,第二章 指令系统,CPU,内部寄存器(除,CS,,,IP,),与存储器(所有寻址方式)之间,的数据传送,MOV AX,,,SI,MOV AL,,,VFFER,MOV AX,PPBXSI,35,第二章 指令系统,MOV,指令不能实现存储单元之,间的数据传递,但可通过,CPU,内,部寄存器为桥梁来实现,MOV AL,,,ARER1,MOV ARER2,AL,36,第二章 指令系统,二个段寄存器之间不允许直接传递信息,37,第二章 指令系统,PUSH,进栈指令,堆栈是以“先进后出”方式工作的一个存储区,它在堆栈段中。其段地址在,SS,中。,只有一个出口,偏移地址在SP之中,SP在任何时候都指向栈顶。,38,第二章 指令系统,PUSH AX,SP SP,- 2,(,SP+1,),AH,(SP) AL,堆栈的存取以字为单位,,可以使用除立即数以外的,其他寻址方式来保存程序区,或寄存器的内容。,低,高,高,低,AH,AL,后,前,SP,SP,39,第二章 指令系统,POP,出栈指令,将压入堆栈的数据弹出。,例:,POP AX,AL,(,SP,),AH,(,SP+1,),SP SP+2,AL 07,AH 21,(,AX,),=2107,21,07,后,前,SP,两条指令均不影响标位。这两条指令主要用于数据保护。,POP,SP,40,第二章 指令系统,XCHG,:交换指令,XCHGOPR1,,,OPR2,把一个字节或字的源操作数与目的操作数相,交换,交换可在通用寄存器之间,通用寄存,器与存储器之间。但段寄存器除外。,XCHG AL,,,CL,XCHG BX,,,DATASI,XCHG BX,,,BP+SI,41,第二章 指令系统,IN,输入指令:,CPU,I/O,DB,CB,AB,输入指令允许把,一个字节或一个,字由输入端口传,送至,AL,或,AX,。由,于,8086,可供,64K,的,I/O,端口空间,,所以可有,65536,个,I/O,端口,前,256,个端口(,0FFH,)可以在指令中指定;端口号超过,256,个,则将端口地址放在,OX,,再用输入指,令输入数据。,例,42,第二章 指令系统,IN AX,28H,IN AL,29H,端口号大于256:,MOV DX,3FCH,IN Ax,DX,输入数据是字还是字节,取决于外设,DB,宽度。,43,第二章 指令系统,OUT:,输出指令,输出指令允许把,AL,或,AX中的,一个字节或一个字,内容,传送至输出端口,OUT 14H,AL,端口号大于256:,MOV DX,0714H,OUT DX,AX,44,第二章 指令系统,XLAT:,换码指令,用于将一种代码转换为另一种代码。用指令之前,先将表的首地址放入,BX,中,在,AL,中置好偏移量(即所需换码字节在表中的相对位置),然后,XLAT,指令将(,BX,)内容加上,AL,中的内容形成的偏移地址的单元内容取到,AL,中。,格式:,XLAT,或,XLAT,执行操作:,AL,(,BX+AL,),例,45,第二章 指令系统,MOV BX,,,OFFSET TAB,MOV AL,,1,XLAT,B,C,A,BX,TAB,A,AL,BX+AL,46,第二章 指令系统,LEA:,有效地址送寄存器,格式:,LEA OPRD1,,,OPRD2,将源操作数OPRD2的偏移地址送到目的操作数OPRD1。,源操作数必须是存储器,目的操作数是一个,16,为通用寄存器。,例,47,第二章 指令系统,LEA BX,,,BUFR,将变量,BUFR,的偏移地址给,BX,BX,23E0,BUFR,48,第二章 指令系统,LEA BX,,,BX+SI,若 BX = 0400H,,SI = 003CH,偏移地址,=0400+003C,=043CH,BX,043C,49,第二章 指令系统,LDS:,地址指针送寄存器和,DS,指令,格式:,LFD OPRD1,,,OPRD2,指令将源操作数,OPRD2,所指定存储区的,4,个相继字节送到指令指定的寄存器及,DS,寄存器中。该指令常指定,SI,。,例,50,第二章 指令系统,LDS SI,,,BX,执行前:,BX=10H,;,DS=C000H,;,(,C0010H,),=0180H,(,C0012H,),=2000H,执行前后:,(,SI,),=0180,,(,DS,),=2000H,c0011H,c0010H,80,00,20,01,c0012H,c0013H,S I,D I,BX,DS,+,C0010H,51,第二章 指令系统,LES :,地址指令送寄存器和,ES,指令,格式,LES OPRD1,,,OPRD2,将源操作数,OPRD2,指定存储器,4,个相继字节送到指令指定的寄存器及,ES,中。该指令常指定寄存器,DI,。,例,52,第二章 指令系统,LES DI,,,BX,执行前:,DS=B000H,,,BX=080AH,,,(,0B080A,),=080AH,(,0B080CH,),=4000H,执行后:,DI =080AH,,,ES= 4000H,0B080AH,DI,OA,00,40,ES,08,0B080BH,0B080CH,0B080DH,上述三种寻址包括所有寻方式。,53,第二章 指令系统,LAHF : PSW,送,AH,指令,格式:,LAHF,执行:,AH PSW,低字节,(进位)(奇偶)(半进位)(零)(符号),CF PF AF IF SF,54,第二章 指令系统,SAHF,:,AH,送,PSW,执行:,PSW,低字节,AH,55,第二章 指令系统,PUSHF,:标志进栈,格式:,PUSHF,执行:,SP SP-2,PSW,(,SP+1,,,SP,),低,高,PSWH,SP,PSWL,56,第二章 指令系统,POPF,:标志出栈,执行:,PSW,(,SP+1,,,SP,),SP SP+2,低,高,PSWH,PSWL,SP,57,第二章 指令系统,2、减法指令:,SUB,SBB,DEC,NEG,CMP,1、加法指令:,ADD,ADC,INC,4,除法指令:,DIV,IDIV,CBW,CWD,3、乘法指令:,MUL,IMUL,5、十进制调整指令,58,第二章 指令系统,格式:,ADD OPRD1,,,OPRD2,OPRD1 OPRD1+OPRD2,目的操作数,OPRD1,可以是,AX,,任一通用寄存器,存储器。源操作数,OPRD2,可以是,AX,任一通用寄存器,存储器,立即数。,ADD AL,,,30H,ADDAX,,,SI,ADD BETASI,,,AX,ADD DI,,,CX,这些指令将对标志产生不同的影响。,59,第二章 指令系统,ADC,带进位加法,格式:,ADC OPRD1,,,OPRD2,执行:,OPRD1 OPRD2+OPRD1+CF,该指令多用多字节运算,60,第二章 指令系统,低,高,56,THORD,87,21,43,54,86,10,32,AA,ID,75,32,SECOND,FIRST,两个四字节数加,分别放在,FLRST,和,SECOND,起始之单元,存放时低字节在地址处。,MOV AX,,,FIRST,;,(,AX,),=8756H,ADD AX,,,DECOND,;,(,AX,),=8756+8654,MOV THIRD,,,AX,;,=1DAAH CF=1,MOV AX,,,FIRST+2,(,AX,),=4321H,ADC AX,,,SECOND+2,(,AX,),=4321+3210+CF,MOV THIRD+2 =7532H,61,第二章 指令系统,INC,:加,1,指令,格式:,INC OPRD,该指令的操作数,OPRD,可以是通过寄存器,也可以是存储器单元。,执行:OPRD OPRD+1,INC AX; AX=AX+1,62,第二章 指令系统,注意,执行加法指令时,,CF,位是根据最高有效位是否有进位而设置。有进位,CF=1,,无进位,CF=0,。,OF根据符号及其变化情况而设置。若两个操作数符号相同,结果的符号与之相反,则溢出OF=1,63,第二章 指令系统,SUB,:减法指令,格式:,SUB OPRD1,,,OPRD2,操作:,OPRD1=OPRD1-OPRD2,目的操作数,OPRD1,可以是,AX,,通用寄存器,存储器单元,,源操作数OPRD2可以是立即数,通用寄存器,存储器单元。,64,第二章 指令系统,例,SUB CX,,,BX;,CX=CX-BX,SUB BX,,,CL;,BX=BX-CL,65,第二章 指令系统,SBB OPRD1,,,OPRD2,格式:,SBB OPRD1,,,OPRD2,操作:,OPRD1=OPRD1-OPRD2-CF,用于多字节数相减。,66,第二章 指令系统,DEC,:减指令,格式:,DEC OPRD,执行:OPRD OPRD-1,DEC CX;,CX=CX-1,67,第二章 指令系统,NEG,:取补指令,格式:,NEG OPRD,对操作数,OPRD,取补,执行:,OPRD OPRD+1,例:NEG AL,68,第二章 指令系统,CMP,:比较指令,格式:,CMP PRD1,,,OPRD2,完成两个操作数相减,(,OPRD1-OPRD2,),结果反映在标志位上并不回送结果。目的操作数可以是寄存器,或内存;源操作数可以是立即数,寄存器或内存。,该指令主要用于比较两者之间的关系。,69,第二章 指令系统,CMP AX,,,BX,若,AX,与,BX,同符号:(AX-BX),则,AX-BX,不会溢出,用,SF,判其符号就可判断两数大小。即,SF=0,,,AXBX,,,SF=1,,,AXBX,负,-,正:负 SF=1 ,,AXBX,AXBX,负,-,正,正 则,SF=0 AXBX,若无溢出(,OF=0,),SF=1,;,AXBX,若有溢出(OF=1),SF=0,;,AXBX,71,第二章 指令系统,相异符号相减有两种可能,A- B 无溢出:SF=1:AB,正-负,有溢出:SF=0:AB,正-负,有溢出:SF=1:AB,72,第二章 指令系统,MUL,:无符号数乘法,格式:,MUL OPRD,执行:字节操作,AX AL*(OPRD,),字操作,DX,,,AX,AX*,(,OPRD,),OPRD,可以是寄存器或内存单元,例,MOV AL,,,FIRST,FIRST,MUL SECOND,SELIND,MOV THIRD,,,AX,THIRD,73,第二章 指令系统,IMUL,:带符号数乘法,同MUL上,但是带符号数,MUL,:,255*255=65025,(,1111,,,1111b,),*(1111,1111b),IMUL,:(,-1,),*,(,-1,),=1,例:,AL= 0B4H BL =11H,AL = 0B4H =-76D,IMUL BL -1292D,BL =,11H = 17D,AL = 180D,MUL BL 3060D,BL = 17D,74,第二章 指令系统,DIV,:无符号数除法,格式:,DIV OPRD,执行:字节操作:,AL ,AX /,(,OPRD,),的商,OPRD,为,8,位,AH AX /,(,OPRD,),的余数,字操作:,AX,(,DX,,,AX,),/,(,OPRD,)的商,DX,(,DX,,,AX,),/,(,OPRD,)的余数,商、余数均为无符号数;,OPRD,为寄存器,或内存单元。,75,第二章 指令系统,IDIV,:带符号除法,同上,商、余数等为有符号数。,76,第二章 指令系统,CBW,扩展存储器,AL,中的字节符号,,把它送至,AH,中,AL 80H,,则扩展后,AH 0FFH,目的:在两个字节操作数相除时,产生一个字的被除数。,77,第二章 指令系统,CWD:将AX的符号扩展到DX中,AX =8000H,则 DX FFFFH,目的:在两个字操作数相除时,产生一个字节的被除数。,78,第二章 指令系统,例:有一内存,BUFFER,,前两个字节是,16,位带符号被除数,三、四字节是,16,位带符号除数,再下两个字节放商,再下两个字节放余数。,BUFFER,被除数,除数,余数,商,79,第二章 指令系统,LEA BX,,,BUIFFER,;,BUFFER,的,偏址,BX,MOVAX,,,BX,;,被除数,AX,CWD,;,扩展为(,DX,,,AX,),IDIV 2BX,;,(,AX,),商,(,DX,),余数,MOV 4BX, AX,MOV6BX,DX,80,第二章 指令系统,BCD,码的概念,压缩的,BCD,码:,四位一个数,连续排列。,非压缩的,BCD,码:,ASCII,码的数字码,低四位为,BCD,码,高四位为,0011,无意义。,(一),压缩的BCD码十进制调整,DAA,,DAS,(二)非压缩的BCD码调整,AAA,,,AAS,,,AAM,,,AAD,81,第二章 指令系统,DAA,加法十进制调整指令,作用:紧跟加法指令之后,校正作用,若(,AL&0FH,),9,或,AF=1,,则,AL AL+6,,,AF 1,;,若(AL&F0H)9,或CF=1,则AL L+6,AF 1。,原来,16,进制是满,16,进位,,十进制为满,10,进位,,所以到进行用16进制进行,10进制调整时为+6,* * *,9,+ * * *,82,第二章 指令系统,例:ADD AL,BL,97,+96,193,1001 0111,+1001 0110,0010 1101 D,110 110 6,1001 0011,1,CF=1,83,第二章 指令系统,DAS,减法的十进制,执行:,AL AL,中的差调整到压缩的,BCD,格式,(低四位),若(,AL&OFH,),9,或,AF=1,,则,AL AL-6,(高四位),若(AL&F0H)90H,或CF=1,则AL AL-60H,84,第二章 指令系统,AAA,:加法的,ASCII,调整,(,AL,),AL,调整,(,AH,),(,AH,),+,调整进位值,执行,1)若AL低四位在09之间,AF=0 执行(3)2)若AL低四位在0FH之间,AF=1,,则AL 寄存器加6,AH寄存器加1,AF加1。,3)清除AL高四位,4,),AF,位的结果送,CF,位。,85,第二章 指令系统,AAS:减法的ASCII调整,AL 把AL中的差调整到非压缩的BCD格式,AH AH - 调整产生的借位值,86,第二章 指令系统,AAM,:乘法的,ASCII,调整,校正作用:AH AL被OA除的商,AL AL,被,OA,除的除数,MUL AL,BL,AAM,(AL)=07H,(BL)=09H,执行MUL:(AL)=3FH=63,执行AAM:(AH)=06H,(AL)=03H,前面都是对运算结果进行十进制调整。,6 AH,10 63,60,3 AL,87,第二章 指令系统,AAD:除法的ASCII调整:,AX,存放二位非压缩,BCD,数,即,AH,为十位数,,AL,为个位数。,AL 10*,(,AH,),+,(,AL,),AH 0,作用:,相除之前将,AX,中的被除数用,AAD,调整为二进制数。,并存放于AL中,。,88,第二章 指令系统,逻辑运算指令,AND,,,OR,,,NOT,,,XOR,,,TEST,这几条指令:NOT不允许使用立即数,其余,指令的OPRD2为立即数,至少有一个操作数存放在,Reg,中,,另一个则可为任意寻址方式。,移位指令,SHL,,,SAL,,,SHR,,,SAR,,,ROL,,,ROR,,,RCL,,,RCR,89,第二章 指令系统,AND:与,AND OPTD1,OPRD2,执行:,OPRD1 OPRD1 OPRD2,90,第二章 指令系统,OR,:或,OR OPRD1,,,OPRD2,执行:OPRD1 OPRD1,v,OPRD2,91,第二章 指令系统,NOT,:非,NOT OPRD,执行:OPRD OPRD,92,第二章 指令系统,XOR:异或指令,XOR OPRD1,OPRD2,执行:,OPRD1 OPRD1 OPRD2,93,第二章 指令系统,TEST:测试指令,TEST OPRD1,OPRD2,执行:,OPRD1 OPRD2,操作数相与,不保留结果,只影响标志位。,94,第二章 指令系统,SHL:逻辑左移指令,格式:SHL OPRD,m,OPRD,为除立即数外的任何寻址方式,移位次数由,m,定,,m,为,1,或,CL,。m为,1,时只移一位,大于,1,时,移位次数应置于,CL,中。,例,95,第二章 指令系统,SHL AX,,,1,或,SHL AX,,,CL,CF 7 0,0,96,第二章 指令系统,SAL,:算术左移指令,同SHL。在移位次数为1时,移位后,bit,7,与CF不同,则表明溢出,故OF=1,否则OF=0。该指令用于有符号乘法。,CF 7 0,97,第二章 指令系统,SHR:逻辑右移,格式:,SHR OPRD,,,m,7 0 CF,0,98,第二章 指令系统,SAR:算术右移,7 0 CF,该指令用于有符号除法,99,第二章 指令系统,ROL,:循环左移指令,格式:ROL OPRD,m,CF 7 0,CF 15 0,8,位,16位,100,第二章 指令系统,ROR,:循环右移指令,7 0 CF,101,第二章 指令系统,RCL:带进位循环左移指令,CF 7 0,102,第二章 指令系统,RCR:带进位循环右移指令,7 0 CF,103,第二章 指令系统,串处理指令,MOVS,;,CMPS,;,SCAS,;,LODS,;,STOS,与上述指令配合使用的前缀有:,REP;REPE/REPZ;REPNE/REPNZ,1、与,REP,配合使用的,MOVS,,,STOS,,,LODS,指令,2、与,REPE/REPZ,和,REPNE/REPNZ,联合,工作的,CMPS,和,SCAS,指令,104,REP:重复串操作到(CX)=0为止,执行步骤:,CX=0,?,CX=CX-1,执行串处理指令MOVS,STOS,,LODS,退出REP,Y,N,105,第二章 指令系统,MOVS,串传送指令,格式,MOVS OPRD1,,,OPRD2,应标示字或字节,可以简化为,MOVSB,(字节传送),MOVSW,(字传送),标准格式,MOVS ES:BYTE PTRDI,DS:SI。,106,第二章 指令系统,MOVS执行操作步骤:,(DI) (SI),DF=0,?,(SI)=(SI)-1/2,(DI)=(DI)-1/2,(SI)=(SI)+1/2,(DI)=(DI)+1/2,Y,N,DF,决定了串传送,的方向,可有以,下二条指令确定,CLD,:使,DF=0,STD:使DF=1,107,第二章 指令系统,例,MOV SI,OFFSET SOURSE,MOV DI,OFFSET DEST,MOV CX,100,CLR,REP MOVSB,在此处源串在数据段中(也允许段,超越),但目的串必须在附加段中。,108,第二章 指令系统,STOS,存串指令,格式:,STOS OPRD,(目的),STOSB,(字节),STOSW,(字),执行:,(,DI,),AL,,,DI DI1,(,DI,),AX,,,DI,DI2,将AL或AX的内容存入(DI)指定的,附加段单元中。,109,第二章 指令系统,例,MOV DI,,,0500H,MOV AL,,,20H,MOV CX,,,5,CLD,REP STOSB,执行情况,110,第二章 指令系统,CX=0,CX -1 CX,(DI) AL,DI +1 DI,DF=0,N,Y,退出,Y,N,DI -1 DI,111,第二章 指令系统,LODS 取串指令:,格式:LODS OPRD,LODSB(字节),LODSW(字),执行:,字节 AL (SI), SI SI1,字 AX (SI), SI SI 2,将SI指定的数据段单元内容(允许段超越)送入AL,AX。一般不将该指令与REP联用。,112,第二章 指令系统,REPE/REPZ,当相等,/,为零时重复串操作,CX/ZF,=0,CX = CX -1,重复串指令,N,Y,退出,113,第二章 指令系统,与,REP,相比,实际上,REPE,和,REPZ,相同,只是除满足,CX=0,结束外,还增加了一个Z,F=0,退出的条件。,114,第二章 指令系统,REPNE/REPNZ,当不相等,/,不为零时重,复串操作。退出条件与上面相反。,即,CX=0,ZF=1退出,115,第二章 指令系统,CMPS,串比较指令,格式:,CMPS OPRD1,,,OPRD2,CMPSB,(字节),CMPSW(字),执行:(,SI,),(,DI,),字节,SI=SI1,,,DI=DI1,字,SI=SI2,,,DI=DI2,SI 指向的数据段单元内容与 DI 指,向的附加段相减,但不保留结果,只影响,条件码。,116,第二章 指令系统,SCAS,串扫描指令,格式:,SCAS OPRD,SCASB,SCASW,执行:,AL - (DI) DI DI1,AX - (DI) DI DI2,指令把AL(AX)的内容与(DI)指向的附 加段单元内容相减,但不保留结果,只影响条件码。,117,第二章 指令系统,I,T,S,I,A,I,T,S,S,B,STING1,STRING2,例:,MOV SI,OFFSET,STING1,MOV DI,OFFSET,STING2,MOV CX, 7 H,CLD,REPZ CMPSB,JNZ,UNMAT,MOV AL,0,JMP,OUTPUT,UNMAT,:MOV AL,0FFH,OUTPUT,:.,118,第二章 指令系统,控制转移指令,5、中断,4、子程序指令,3、循环指令,2、条件转移,1、无条件转移指令,119,第二章 指令系统,无条件转移指令,作用:,转移到指令的地址去执行从该地址开始的指令。分段内和段间转移两种。前者只须改变,IP,,而后者不仅要改变,IP,,还要改变,CS,。,3)段内直接转移,1)段内直接短转移,2)段内直接近转移,5)段间间接转移,4)段间直接转移,120,第二章 指令系统,段内直接短转移,格式:,JMP SHORT OPRD,执行:(,IP,),(,IP,),+8,位偏移量,其中OPRD在汇编格式中可以直接使用符号地址,但机器执行时是IP+8位偏移量来做的。由于可以前后跳转,所以允许在-128127字节范围内转移。,121,第二章 指令系统,例,:,JMP SHORT,HELL,HELL,:MOV AL,3,代码段,JMP,MOV,E8,08,B0,08,0100H,0101H,010AH,010BH,0102H,122,第二章 指令系统,段内直接近转移,格式:,JMP NEAR PTR OPR,执行:IP IP+16位偏移量,OPR,为地址符号,123,第二章 指令系统,段内直接转移,格式:,JMP WORD PTR OPRD,执行:,IP,(,EA,),有效地址,EA,由,OPRD,的寻址方式确定,可以是除立即数以外的任何寻址方式。,JMP BX,执行: IP BX,124,第二章 指令系统,段间直接转移,格式:,TMP FAR PTR OPRD,执行:,IP OPRD,的段内偏移地址,CS OPRD,所在的段地址。,汇编格式中,OPRD,可使用地址符号。,JMP FAR PTR,NEXT,NEXT,:INC CX,125,第二章 指令系统,段间间接转移,格式:J,MP DWORD PTR OPRD,执行:,IP,(,EA,),CS,(,EA+2,),(,EA,)由,OPRD,的寻址方式决定,可以是除立即数及寄存器方式以外的所有寻址方式。,例:,JMP DWORD PTR ALPHASPDI,126,第二章 指令系统,1)根据单个条件标志的设置情况转,移,4) 测试CX的值为0则转移指令,3)用于有符号数的条件转移指令:,2)用于无符号数的条件转移。,127,第二章 指令系统,根据单个条件标志的设置情况转移,l,JZ,(或,JE,) OPRD,OPRD,结果为,0,(或相等)则转移,测试:ZF=1,l,JC/JNC OPRD,:,根据,CF,转移,,JC是当CF=1转移,,JNC是当CF=0转移,。,128,第二章 指令系统,l,JE/JZ,或,JNE/JNZ OPRD,:,(相等转移,/,等于,0,转移),一条指令的两种助记符。,JE/JZ,是当,ZF=1,时转移。,JNE/JNZ,当,ZF=0,时转移。,l,JS/JNS OPRD,:,JS,是当,SF=1,,为负则转移,,JNS,是当,SF=0,转移。,129,第二章 指令系统,l,JO/JNO OPRD,:,JO,是当,OF=1,,溢出则转移。,JNO,是当,OF=0,,不溢出则转移。,l,JP/JPE,或,JNP/JPO OPRD,:,JP/JPE,(偶转移)当,PF=1,时转移,JNP/JPO,(奇转移)当,PF=0,时转移,其中,OPRD,是汇编指令中的地址符号。,例:,CMP CX,,,DX,JE,LAB2,;,CX=DX,转至,LAB2,JNC,NEXT,LAB2,: MOV AX,0,130,用于无符号数的条件转移,:,l,JA/JNBE OPRD,:,是当,CF=0,,,ZF=0,时转移。 用无符号数,a,b,比较时,,ab时则转移。,l,JAE/JNB OPRD,:,当,CF=0,或,ZF=1,时转移 。无符号数,a,b,比较,,ab,则转移,l,JBE/JNA OPRD,:,当,CF=1,或,ZF=1,时转移。,无符号数a,b比较,,a,b则转移,l,JB/JNAE OPERD:,当CF=1,ZF=0时转移,a b则转移,131,第二章 指令系统,用于有符号数的条件转移指令:,l,JG/JNLE,:,当,SF,与,OF,同号, 且,ZF=0,时转移,有符号数,a,b,比较:,ab,则转移,SF=0 AB,(,OF=0,),SF=1 AB,SF=0 AB,132,第二章 指令系统,l,JGE/JNL OPRD,:,当,SF,与,OF,同号,且,ZF=1,时转移,ab,转移,l,JL/JNGE OPRD,:,SF,与,OF,异号,且,ZF=0,时转移,ab,转移,l,JLE/JNG OPRD,:,SF,与,OF,异号或,ZF=1,时转移。,a,b 转移,133,第二章 指令系统,测试,CX,的值为,0,则转移指令,JCXZ OPRD,CX=0 转移,134,第二章 指令系统,循环指令,l,LOOP,循环,格式:,LOOP OPRD,测试条件:,CX0,循环,l,LOOPZ/LOOPE OPRD,:,为零,/,相等循环,测试:,ZF=1,且(,CX,),0循环,l,LOOPNZ/LOOPNE OPRD:,与上面相反。,135,三条指令执行步骤,1,),CX,CX - 1,2,)检查是否满足测试条件,如满足依据,OPRD,改变,IP,值。一般,OPRD,为目标地址符,。,例,MOV CX,,,M,MOV AX,,,0,MOV SI,,,AX,S_LOOP,:,ADD AX,,,ARRAYSI,ADD SI,,,2,LOOP,S_LOOP,MOV TOTAL,AX,136,第二章 指令系统,子程序指令:,CALL,,,RET,子程序结构相当于高级语言的过程。将某,些具有独立功能的部分程序编为独立的模式,称为子程序。,1,)段内直接调用与返回,5,)返回的两种特别情况,4,)段间间接调用返回,3),段间直接调用,2,)段内间接调用及返回,137,第二章 指令系统,段内直接调用与返回,CALL NEAR PTR OPRD,CALL OPRD,RET,SP SP-2,IP (SP+1,SP),(SP+1,SP) IP,SP SP+2,IP (IP)+D,16,OPRD是子程序入口地址,一般在汇编程,序中子程序名称,138,第二章 指令系统,段内间接调用及返回,CALL WORD PTR OPRD,CALL OPRD RET,SP SP-2 IP (SP+1,SP),(,SP+1,,,SP,),I,P SP SP+2,IP,(,EA,),EA,是由,OPRD,寻址方式所确定的,16,位有效地址如:,CALL BX,;地址在,BX,中(,16,位),CALL WORD PTR (BX),;,地址在BX内容所指向的内存单元中(16位)。,139,第二章 指令系统,段间直接调用:,CALL FAR PTR OPRD,RET,SP SP-2,IP SP+1,SP,(,SP+1,,,SP,),CS,SP SP+2,SP SP-2,CS SP+1,SP,(,SP+1,,,SP,) I,P,SP SP+2,(I,P,),偏移地址,(,CS,),段地址,在程序中给出程序名,就可以,得到子程序,的入口偏移地址及段地址,SP,IP,L,CS,H,CS,L,IP,H,140,第二章 指令系统,段间间接调用返回,CALL DWORD PTR OPRD,RET,SP SP-2,IP SP+1,SP,(,SP+1,,,SP,),CS,SP SP+2,SP SP-2,CS (SP+1,SP),(,SP+1,,,SP,),IP,SP SP+2,IP,(,EA,),CS,(,EA+2,),EA为OPED寻址方式所确定的有效地址,141,第二章 指令系统,返回的两种特别情况,段内带立即数返回,RET EXP,段间带立即数返回,RET EXP,用于修改出栈时的栈指针,,即 (SP) (SP)+D,16,142,第二章 指令系统,中断:,当系统运行或程序运行遇到某些特殊情况,要求计算机能自动执行一组程序来处理,这就是中断。,分外部和内部中断两种。,同样产生一次中断,也需要全面保存现场信息,如:,IP,,,CS,,,PSW,。,IBMPC的中断是采用中断向量形式的。,143,第二章 指令系统,既在存储器的最低地址区的1024个单元(00000H003FFH),一个地址需4个字节才能描述(IP,CS),故共有256个中断向量(地址),只要将类型号N乘以4就可能得到中断向量。,INT,中断指令:,INT TYPE,INTO,溢出,IRET,返回,144,第二章 指令系统,处理机控制指令:,CLC,:,CF 0,CMC,:,CF CF,STC,:,CF 1,CLD,:,DF 0,STD,:,DF 1,CLI,:,IF 0,STI: IF 1,145,第二章 指令系统,NOP,:空操作,一个机器周期,占一个字节存储单元,HLT:停机指令,使处理机处于停机等待状态,以便等待一次外部中断到来。中断结束后可继续执行下面程序,HLT,中断,146,第二章 指令系统,WAIT:使处理机处于空转状态,等待中,断。但中断结束后继续执行WAIT。,WAIT,中断,ESC,:换码指令,用协处理器,LOCK
展开阅读全文