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