【教学课件】第三章数据信息表示和指令系统.ppt
1,第三章 数据信息表示和指令系统,内部信息分为:数据信息和控制信息两大类。数据信息:是计算机处理的对象,分为数值型和非数值型。控制信息:其基础是机器指令。,Mar.2002,2,第一节 数据信息表示,进位计数制的基本概念(S)r=(ki*ri)其中,r称为基数,一、进位计数制,3,2.计算机中常用的进位制 二进制:如(1101.01)2=(13.25)10 八进制:如(15.2)8=(13.25)10 十六进制:如(D.4)16=(13.25)10 十进制的BCD码:如(137)10=(0001,0011,0111)BCD,3.十进制数与二进制之间的转换,4,真 值:用正负号加绝对值表示的数值。机器数:用约定数的某一位表示符号,连同数符一 起数码化的数。,例:+1010 01010-1010 11010,二、带符号数的表示 1.真值与机器数,5,2.原码表示法表示形式:最高位表示符号位(0表示该数为正,1表示 该数为负),用二进制绝对值表示有效数值 部分。,真值原码 说明(+1010)201010原定点整数(正)(-1010)211010原 定点整数(负)(+0.010)20.010原定点小数(正)(-0.010)21.010原定点小数(负)(-1010.010)2 11010.010原 其它,例:,6,表数的范围:(1)n位整数N(n为不包括符号位在内的整数)-(2n-1)N2n-1(2)n位小数N的表数范围(n为小数的位数)-(1-2-n)N1-2-n,零的表示:(+0)2或(+0.000)2 00000原或0.000原(-0)2或(-0.000)2 10000原或1.000原,7,3.反码的表示法,正数:与原码相同 例:X原=01010;X反=01010负数:符号位同原码,尾数部分为真值逐位取反.例:X原=11010;X反=10101 反码表数范围同原码,零的表示:(+0)2或(+0.000)2 00000反或0.000反(-0)2或(-0.000)2 11111反或1.111反,8,4.补码表示法模运算:对于(2位)十进制运算器,100是两位十进制运算器的溢出值。计算器中数受字长的限制,运算均是有模运算56-24=56+76(mod 100)即-24(相对模100)的补码是76。,9,补码的定义:X补=(M+X)mod M,其中M=2k 特别地,(1)定点整数,形式Xn Xn-1.X0,M=2n+1 X补=(2n+1+X)mod 2n+1(2)定点小数,形式X0.X1 X2.Xn,M=2 X补=(2+X)mod 2,10,补码的表示形式:,定点整数:x补=Xn Xn-1 Xn-2.X1 X0 定点小数:x补=X0.X1 X2.Xn-1 Xn,补码的表数范围:,(a)n位整数N的表数范围:(n为不包括符号位在内的整数)-2n N 2n-1,(b)n位小数N的表数范围:(n为小数的位数)-1 N 1-2-n,11,(1)从真值转换成补码表示,(1)公式法:利用X补=(M+X)mod M生成例子:定点小数的最小负数-1的补码-1.00补=(10.00+(-1.00)mod 10.00=1.00,(2)利用反码:正数的补码同反码;负数的补码为反码的最低位加1,(3)扫描法:正数同前;对负数,从右往左扫描当遇到第一个1时,把它前面的数值位逐位取反,其余不变。,例子:零的补码(-0.000)补,(1.111+0.001),10.000,0.000,12,例子:真值补码说明(+1010)2 01010补定点整数(正)(-1010)2 10110补定点整数(负)(+0.010)2 0.010补 定点小数(正)(-0.010)2 1.110补定点小数(负),零的表示:(+0)2或(+0.000)2-00000补或0.000补(-0)2 或(-0.000)2-00000补或0.0000补,13,(2).从补码求原码及真值,正数:原码与补码相同,真值为略去正号后的数值。例:X补=0010;X原=0010;真值 X=010=10,负数:原码的符号位仍为1,数值部分是把尾数各位求反,末位加1,真值为将负数原码符号变为“-”,即得到真 值.例:X补=10110;X原=11010;真值X=-1010,14,1.定点数 定义:是指在计算机中小数点位置固定不变的数。(1)定点整数:小数点位置在最低位右边 a.带符号定点整数,三、定点数与浮点数,15,原码定点整数表示范围:-(2n-1)(2n-1),补码定点整数表示范围:-2n(2n-1),b.无符号定点整数,设机器字长n+1位,无符号定点整数的表示范围:0(2n+1-1),16,(2)定点小数:小数点位置在最高数位之前、符 号位之后。,设机器字长n+1位,则:原码定点小数的表示范围:-(1-2-n)(1-2-n)补码定点小数的表示范围:-1(1-2-n),溢出,17,2.浮点数,例:,258.69=10125.869=102 2.5869=10-1 2586.9=10-2 25869.,对于任意数N,N=RE M,Re m其中:E(Exponent)被称为浮点数的阶码,M(Mantissa)被称为 浮点数的尾数,R(Radix)被称为阶的基数。,18,(1)典型浮点数格式,数符,阶符,E(阶码),M(尾数),其中:E是指数值、带符号整数、常用移码或补码表示 M是纯小数、常用原码或补码表示,浮点数规格化:即是将尾数的有效绝对值限定在某个 范围之内。,-如果阶码的底是2,则规格化后尾数应满足:2-1|M|1,19,例3-31:某浮点数长12位,其中阶码是用4位补码表示 尾符1位,尾数7位补码表示。写出(-101.011)2 的规格化浮点代码。,进行整理:(-101.011)2=(-0.101011)2 2+3,浮点代码为:1,0011,0101001,例3-32:按上例浮点格式,若浮点代码为0,0100,0101101 则该浮点代码规格化形式为:0,0011,1011010,20,(2)移码(增码),定义:若浮点数的阶码为n+1位(包括阶符),则 x移=2n+x,-2nx 2n-1,0,2n,2n+1-1,x移,-2n,0,2n-1,移码与真值的映射图,x,21,移码的性质:-移码为全0时,表示真值最小;移码为全1时,表示真 值最大-当x0时,x移的符号位(最高位)为0,当x0时,x移的符号位为1,移码符号与原、补码符号相反-x移与x补除符号位相反外,其他各位相同。因此由 x补得到x移的方法是变x补的符号为其反码,-在移码表示中,0有唯一的编码1000-x移等于全0时,表明阶码最小,例3-33 某机浮点数的阶码8位,用移码表示,则阶码 表示范围 128 x 127 见书58页表3-2,22,(3)浮点数表示范围,表:浮点数的典型值,形式:X=+2EM,设阶码l+1位(含一位阶符),移码表示,以2为底;尾符1位,尾数n位,规格化且补码表示,23,浮点数表示范围为:-(22l-1)(22l-1)(1-2-n),浮点数的最小绝对值为:(2-2l)2-1,例3-34 设某机字长32位,采用浮点表示,阶码8位,移码 表示并以2为底,尾符1位,尾数23位,补码表示,规格化。则符点数的表示范围为:-2127 2127(1 2-23),机器零:000,0.000 或尾数为0,阶码不为0(此种情况 要将用移码表示的阶码也置为0)。,24,(4)实用浮点格式举例,按IEEE标准,常用的浮点数的格式为:数符 阶码 尾数 总位数短实数 1 8 23 32长实数 1 11 52 64临时实数 1 15 64 80,短实数:(共32位)尾数24位(包括1位数符),阶码8位(偏 置127),以2为底其浮点格式如下:,25,实际:数符1位,尾数23+1位(隐含尾数最高数位1),原码 表示。隐含的最高数位1是一位整数,其位权为20。故 尾数的真值为:1+尾数 阶码=阶码真值+127,非零浮点数真值为:(-1)S2阶码-127(1+尾数)(-1)S2e-127(1.f),浮点数的表数范围:-2128(2-2-23)2128(2-2-23),26,例1:若采用IEEE短实数格式,试求出32位浮点代码(CC968000)16 的真值。,解:1,10011001,00101101000000000000000 阶码真值=阶码-(127)10=(10011001)2-(127)10=(153)10-(127)10=(26)10 尾数真值=1+0.00101101=(1.00101101)2=(1.17578125)10 浮点数真值=-226(1.17578125)10,27,例2:将(-0.11)2用IEEEE短实数浮点格式表示出来。,解:(-0.11)2=-0.11 20=-1.1 2-1=-(1+0.1)2-1 阶码=阶码真值+127=-1+127=126=(01111110)2 尾数=0.1000 浮点代码为:1,01111110,100.0,28,四、字符表示(见书61页),29,第二节 指令系统基本概念,机器指令:是用来表示计算机中的控制信息的,规定计算 机执行某种操作的指示和命令。指令系统:一台计算机的所有指令的集合构成了该计算机 的指令系统。本节主要讨论:指令格式、寻址方式、指令类型,30,一、指令格式,一条指令一般包含下列信息:操作码操作数的地址操作结果的地址下一条指令地址,指令的基本格式:,操作码,地址码,设计指令格式包括:指令长度、操作码结构和地址码结构,31,1.地址码结构,包括:指令中需要几个地址指令格式;地址如何给出寻址方式;地址码长度,指令分类:(1)三地址指令,A2,A3,格式:,意义:,(A1)OP(A2)A3,32,(2)二地址指令,(3)一地址指令,A2,格式:,(A1)OP(A2)A3,意义:,(4)零地址指令 格式:,格式:,意义:OP(A)A,OP,意义:-无任何操作数。-所需操作数是隐含指定的。,33,2.操作码结构操作码:指令中表示机器操作性质和种类的部分操作码长度:决定了指令系统中完成不同操作的 指令条数。,操作码的设计方法:(1)固定长度操作码(2)可变长度操作码,34,二、寻址方式,寻址方式:指令中提供操作数地址或操作数的方法,形式地址:指令给出的不能直接访存的地址(如偏移量)有效地址:将形式地址经过一定的计算而得到的能直接访问 主存的地址。指令与寻址方式:不同指令可以使用不同的寻址方式 同一类指令因寻址方式不同构成相互区别的指令 在一条指令里,不同的操作数可能用不同的寻址方式,35,几种基本的寻址方式:,1.立即寻址指令(地址码部分):给出操作数。操作数:在指令中,2.直接寻址指令(地址码部分):给出操作数的内存地址A操作数地址形成:A操作数:在内存中(A),36,4.间接寻址指令(地址码部分):存放操作数地址的主存单元地址A操作数地址形成:(A)操作数:(A),3.寄存器寻址指令(地址码部分):通用寄存器的地址R#操作数地址形成:R#操作数:在内存中(R#),37,6.变址寻址指令(地址码部分):存放变址寄存器RX和位移量D操作数地址形成:(RX)+D操作数:(RX)+D),7.基址寻址指令(地址码部分):存放变址寄存器RB和位移量D操作数地址形成:(RB)+D操作数:(RB)+D),5.寄存器间接寻址指令(地址码部分):存放操作数地址的寄存器号R#操作数地址形成:(R#)操作数:(R#),38,9.页面寻址指令(地址码部分):存放页内地址d(低)操作数地址形成:(PC)H,d操作数:(PC)H,d),10.堆栈寻址指令(地址码部分):操作数地址形成:(SP),8.相对寻址指令(地址码部分):存放位移量d操作数地址形成:(PC)+d操作数:(PC)+d),39,三、指令类型,按功能,常见的指令类型:1.数据传送类指令2.输入/输出(I/O)类指令3.算术运算类指令4.逻辑运算类指令5.移位操作指令6.程序控制类指令7.串操作指令8.数据转换指令9.堆栈操作指令10.特权指令,40,第三节 指令系统举例,本节以8086/8088为例,着重介绍它的寻址方式和指令功能。,8086/8088的指令采用变长格式,由16个字节组成第1个字节:包含操作码;第2个字节:表示寻址方式(对于大多数指令);第36个字节:表示存储器操作数地址的位移量、立即操 作数。,41,一、8086/8088寻址方式,1.寄存器寻址指令中所需的操作数放在CPU的某寄存器中指令给出该寄存器的地址,例1:MOV DX,AX 若(AX)=1234H,则指令执行后(DX)为1234H,例2:MOV CL,AL 若(AL)=34H,则(CL)为34H,42,2.立即寻址,指令中所需的OP数直接包含在指令代码中.立即数可以是8位或16位二进制数(带括号数,以补码表示)只能作为源操作数,且只能是常数,例3:设存在指令:MOVAL,10H;,该指令执行后的结果:(AL)=10H,43,3.存储器操作数的寻址方式,存储单元地址的逻辑地址形式:段基址:偏移量,段基址:在某个段R中(CS,DS,ES,SS)偏移量(有效地址EA):存放OP数的存储单元与段起址(段基址)间的距离,44,(1).直接寻址方式操作数的有效地址(EA)由指令中的位移量字段直接提供,用符号表示 例4:MOV BX,VAR;MOV BX,DS:VAR;把字单元内容送到BX中.,用常数表示例5:MOV AX,DS:1000H;把当前数据段偏移量1000H的;字的存储单元内容送入AX中,见下页的图。,8086的EA和一般概念不同,45,46,(2).寄存器间接寻址操作数的有效地址EA存放在SI,DI,BX,BP寄存器中指令提供所用寄存器.BX,SI,DI 隐含使用DS;BP隐含使用SS.,物理地址=16d(DS)+(BX)或 物理地址=16d(DS)+(SI)或 物理地址=16d(DS)+(DI)或 物理地址=16d(SS)+(BP),47,例6:设存在指令:mov ax,bx,求指令执行后(AX)=?其中:(ax)=0a3b4h,(bx)=1010h,(ds)=3000h,(31010h)=3445h,指令执行后结果:(ax)=3445h。,采用寄存器间接寻址方式如下图所示:,48,(3).变址寻址 操作数有效地址EA为指定R的内容与指令中的位移量(8,16位)相加而成.,操作数的物理地址形成如下:物理地址=16d(DS)+(SI)+8位位移量或16位位移量或物理地址=16d(DS)+(DI)+8位位移量或16位位移量 其中,8位位移量或16位位移量可以采用符号地址。,49,例7:设存在指令:mov ax,0010hsi;其中:(ds)=3000h,(si)=0210h,(30220h)=0a45ch 该指令等价于指令:mov ax,si+0010h,该指令的寻址情况如下图所示:,指令执行的结果:(ax)=0a45ch,50,(4).基址变址寻址 操作数的有效地址EA由指令中的位移量,基址寄存器(BX或BP)内容与变址寄存器(SI或DI)内容相加而成.,操作数的物理地址形成如下:物理地址=16d(DS)+(BX)+(SI)+8位位移量或16位位移量 or物理地址=16d(DS)+(BX)+(DI)+8位位移量或16位位移量 or物理地址=16d(SS)+(BP)+(SI)+8位位移量或16位位移量 or物理地址=16d(SS)+(BP)+(DI)+8位位移量或16位位移量其中,8位位移量或16位位移量可以采用符号地址。,51,例8:设存在指令:movax,0010hbpdi;(ss)=4000h,(bp)=0100h,(di)=0001h,(30111h)=6789h求指令执行后(ax)=?,该指令的寻址情况如下图所示:,指令执行的结果:(ax)=6789h,52,4.串操作寻址方式8086/8088提供专门的串指令,操作数在存储器中,串操作指令规定:隐含使用SI作为源串在数据段(DS)中的地址指针。隐含使用DI作为源串 在附加段(ES)地址指针,标志寄存器中的方向位DF=0:SI,DI自动增量;DF=1:SI,DI自动减量,53,5.I/O端口寻址 I/O接口的编址:与存储器统一编址 I/O端口单独编址 I/O操作必须通过累加器AX 或AL 将在第十章第一节介绍,54,二、8086/8088指令,按操作数地址可分为三种类型:双操作数指令 单操作数指令 无操作数指令,按指令功能可分为六大类:传送类指令算术运算类指令逻辑运算类指令串操作指令程序转移指令处理器控制指令,55,1.传送类指令 可分为四种:数据传送指令,交换指令,标志传送指令,地址传送指令。除SAHF,POPF指令外,此类指令对标志为无影响,(1)数据传送指令,操作数可以是字节、字 源、目的操作数位数必须一 致,且不能同时在存储器中,格式:MOV DEST,SRC 功能:把源操作数传送到目的地址中,且源操作数保持 不变。执行操作:(SRC)(DES),56,目的地址是段R名时,源操作数不能是立即数(立即数不能直接传给段R),段R间不能直接传送数据,下图为该指令的传送方向图:,源操作数:可在通用R、段R、存储器中、或是立即数,目的操作数:不能为立即数,57,例 1:立即数送R或存储单元 MOV AL,1FH;字节传送;MOV AX,2345H;字传送;MOV DA_BYTE,0FFH;字节传送;MOV DA_WORD,1234H;字传送;,例 2:寄存器之间传送 MOV AH,BL;MOV DS,AX;,58,例 3:R 与 M 之间传送 MOV AL,DB_BYTE;,例4:把立即数10A0H传送给DS,ESMOV AX,10A0H;MOV DS,AX;MOV ES,AX;,59,(2)交换指令格式:XCHG DEST,SRC功能:将源操作数与目的操作数相互交换。执行操作:(SRC)(DEST)说明:本指令的两个操作数至少有一个必须在寄存器(除段寄存器)中,可以采用除立即数以外的任 一种寻址方式。本指令不影响标志位。,见84页图3-28。,60,例5 设当前状态:(ds)=2f00h,(ax)=7edch,(si)=0045h,(2f046h)=5454h 则执行指令:xchg ax,si+01h,结果为:源操作数的地址=2f000h+0045h+01h=2f046h(ax)=5454h(2f046h)=7edch,61,(3)标志传送指令,取标志指令LAHF 格式:LAHF 功能:把将PSW寄存器的低八位送入AH寄存器中。执行操作:(LOW PSW)(AH)见书84页图3-29。,存标志指令SAHF 格式:SAHF 功能:把AH寄存器的内容送给PSW寄存器的低八位。执行操作:(AH)(PSW的低八位),62,例6:将标志寄存器低八位清零。MOV AH,00H SAHF,标志寄存器进栈指令 格式:PUSHF 功能:把PSW寄存器的内容全部压入堆栈。执行操作:(SP)2(SP)(PSW)(SP)+1,(SP),标志寄存器出栈指令 格式:POPF 功能:把(SP)出堆栈到标志寄存器 执行操作:(SP)PSW(SP)+2(SP),63,(3)地址传送指令 功能:将存储器操作数的地址(偏移量、段基址)传送 给指定寄存器。,装入有效地址指令格式:LEA reg,src功能:将源操作数的有效地址传送到由reg指定的寄存器 中。执行操作:src(reg)说明:源操作数必须是存放在存储单元中的数据,即源 操作数的寻址方式不能采用立即数和寄存器方 式。reg只能是十六位的通用寄存器。该指令不 影响标志位。,64,装入地址指针指令 格式:LDS REG,SRC LES REG,SRC,功能:把由SRC所指定的连续的四个字节存储单元的前 两个存储单元的内容送入由REG指定的寄存器 中,把后两个存储单元的内容送入段寄存器DS 或ES中。执行操作:(SRC)(REG)(SRC+2)(DS)或(ES),65,例:设当前状态:(si)=0002h,(ds)=0a00h,(bx)=0010h,(0a010h)=0f0d9h(0a012h)=3c4dh则语句:LDS si,bx 执行后结果=?,执行后:源操作数的物理地址=0a000h+0010h=0a010h(si)=0f0d9h,(ds)=3c4dh,66,2.算术运算类指令,(1)加法运算指令,加法指令,指令格式:ADD DEST,SRC执行操作:(SRC)+(DEST)DEST 设置标志寄存器的 OF、SF、ZF、AF、PF、CF;标志位源操作数:可在通用R/存储单元或立即数目的操作数:在通用R或存储单元中,67,例:设存在这样的加法语句:addal,40h;(al)=0f4h,该指令的计算过程:(al)1 1 1 1 0 1 0 0+40h 0 1 0 0 0 0 0 0,10 0 1 1 0 1 0 0,该指令执行后:(al)=34h,of=0,cf=1,zf=0,sf=0,af=0,pf=1。,68,带进位加法指令,格式:ADC DEST,SRC功能:将源操作数与目的操作数进行相加,并加上CF位 的值,把所得的结果存放在由DEST指定的地址中,并根据结果设置标志位。执行操作:(SRC)+(DEST)+CF(DEST),例:32位无符号数存放在DX(高16位),AX(低16位)中,若要 加上常数76F1A23H,则用下述指令实现:,ADD AX,1A23HADC DX,76FH;(低16位进位加上),69,加“1”指令格式:INCDEST功能:将由DEST所指定的操作数加1,并把所得结果回送 入由DEST指定的单元或寄存器中,并根据结果设 置标志位OF、SF、ZF、AF、PF。执行操作:(DEST)+1(DEST)说明:该指令即可对字节操作也可对字进行操作。该指令 的操作数统被作为无符号数处理,可以使用除立即 数寻址方式外的任一种寻址方式。该指令不影响 CF。,例:inc cx inc bx+100h,70,(2)减法运算指令,一般减法指令格式:SUBDEST,SRC功能:用目的操作数减去源操作数,把所的结果存放在 由DEST所指定的地址中,并根据结果设置标志位。执行操作:(DEST)-(SRC)(DEST),71,例:设存在语句:sub dh,4ah 执行前状态:(dh)=a4h该指令的运算过程:,(dh)1 0 1 0 0 1 0 0 4ah 0 1 0 0 1 0 1 0 0 1 0 1 1 0 1 0,该指令的执行结果为:(dh)=5ah,of=0,cf=0,zf=0,sf=0,72,带借位减法格式:SBB DEST,SRC功能:用目的操作数减去源操作数,再减去CF的值,并把所得结果存放在有DEST所指定的地址中,根据结果设置标志位。执行操作:(DEST)(SRC)CF(DEST),减“1”指令格式:DEC DEST功能:把由DEST所指定的操作数减1,并把结果回放入 由DEST指定的存储单元或寄存器中。执行操作:(DES)1(DES),73,求负数指令格式:NEG DEST功能:对由DEST指定的操作数求其补码,把所得结果放 入由DEST指定的操作数中,并根据结果设置标志 位。执行操作:(DEST)(DEST)或 0FFFFH(DEST)+1(DEST),74,比较指令格式:CMP DEST,SRC功能:用目的操作数减去源操作数,并不保存运算的结果,但是根据结果设置标志位。执行操作:(DEST)(SRC),无符号数:CF=0:(DEST)(SRC);带符号数:OF=SF:(DEST)(SRC);OFSF:(DEST)(SRC);,75,(3)乘法指令,无符号数乘法指令格式:MULOPRD功能:把由OPRD指定的无符号操作数与AL或AX的内容(无符号操作数)相乘,如果是两个字节相乘,结 果放在AX寄存器中;如果是两个字相乘,结果放 在DX:AX寄存器中。执行操作:字节相乘(OPRD)(AL)(AX)字相乘(OPRD)(AX)(DX:AX),76,例:将二个字节存储单元da_byte1、da_byte2内容(无符 号数)相乘,乘积放在字单元proc中。,可用以下指令实现:MOV al,da_byte2MUL da_byte1MOV proc,ax,77,带符号数乘法指令格式:IMULOPRD功能:把由OPRD指定的带符号操作数与AL或AX的内容(带符号操作数)相乘,如果是两个字节相乘,结果 放在AX寄存器中;如果是两个字相乘,结果放在 DX:AX寄存器中。执行操作:字节相乘(OPRD)(AL)(AX)字相乘(OPRD)(AX)(DX:AX),78,(4)除法指令,无符号数除法格式:DIV OPRD功能:用AX或DX:AX寄存器的内容(无符号数)除以 由OPRD指定的无符号操作数。如果是16位数除以 8 位数,则结果的8位商存放在寄存器AL中,8位余 数存放在AH寄存器中;如果是32位数除以16位数,则结果的16位商存放在AX寄存器中,16位余数 存放在寄存器DX中。,79,带符号数除法指令格式:IDIV OPRD功能:用AX或DX:AX寄存器的内容(带符号数)除 以由OPRD指定的带符号操作数。如果是16位数 除以八位数,则结果的8位商存放在寄存器AL中,8位余数存放在AH寄存器中;如果是32位数除 以16位数,则结果的16位商存放在AX寄存器中,16位余数存放在寄存器DX中。,80,字节/字符号扩展指令指令格式:CBW:扩展AL中的符号位至AH中 CWD:扩展AX中的符号位至DX中,81,例:两个8位带符号数存放于BYTE1,BYTE2字节单元中,将BYTE1除以BYTE2,商放入QUOT字节单元中。,MOV AL,BYTE1 CBW IDIV BYTE2 MOV QUOT,AL,82,3.逻辑运算类指令,(1).逻辑运算指令(按位进行逻辑运算),指令格式:逻辑与:ADD DEST,SRC;SF,ZF,DF按结果设定逻辑或:OR DEST,SRC;CF,OF总为0 逻辑异或:XOR DEST,SRC;AF不确定,逻辑非指令:NOT DEST;对标志位无影响,83,例:(AL)=10100101,AND AL,0FH 指令运算结果:,(AL)=1 0 1 0 0 1 0 1 0FH=0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 1 AL,标志位:SF=0,ZF=0,PF=1,84,(2)测试指令 指令格式:TEST DEST,SRC;(同AND按位与,结果不送DEST),影响SF,ZF,PF.,例:测试AL的第3位是否为0;TEST AL,08H;ZF=1:则为0;ZF=0:则不为0,85,(3)移位指令,逻辑左移格式:SHLDEST,SRC功能:把由DEST指定的操作数按位左移1位(或(CL)位),移出的位放入CF中,空出的位用0填补,并把移位后所得的结果放入由DES指定的地址或 寄存器中,算术左移 格式:SAL DEST,SRC。其它同SHL,说明:根据该指令移位后所得的结果设置ZF、SF、PF,对AF位无定义。,86,逻辑右移格式:SHRDEST,SRC功能:把由DES指定的操作数按位右移1位(或(CL)位),移出的最低位放入CF中,空出的最高位用0填补,并把移位后所得的结果放入由DES指定的地址或 寄存器中。,说明:根据该指令移位后所得的结果设置ZF、SF、PF,对 AF位无定义。,87,算术右移格式:SARDEST,SRC功能:把由DEST指定的操作数按位右移1位(或(CL)位),移出的最低位放入CF中,空出的最高位用 其移位前的值填补(如果移位前该位是0则填补 值为0,如果是1填补值是1),并把移位后所得 的结果放入由DES指定的地址或寄存器中。,执行操作如图:,说明:根据该指令移位后所得的结果设置ZF、SF、PF,对AF位无定义。,88,循环左移格式:ROLDEST,SRC功能:把由DEST指定的操作数按位左移1位(或(CL)位),移出的最高位放入CF中,并还要把该值移入空 出的最低位中,把移位后所得的结果放入由DES指 定的地址或寄存器中。,执行操作如图:,说明:该指令不影响除CF和OF外的其他标志位。,89,循环右移格式:RORDES,SRC功能:把由DES指定的操作数按位右移1位(或(CL)位),移出的最低位放入CF中,并还要把该位的值 移入空出的最高位中,把移位后的所得的结果放 入由DES指定的地址或寄存器中。,执行操作如图:,说明:该指令不影响除CF和OF外的其他标志位。,90,带进位循环左移格式:SHLDES,SRC功能:把由DES指定的操作数按位左移1位(或(CL)位),把移出的最高位移入CF中,把CF的值移入空 出的最低位中,把移位后所得的结果放入由DES 指定的地址或寄存器中。,执行操作如图3.15:,说明:该指令不影响除CF和OF外的其他标志位。,91,带进位循环右移格式:RCRDES,SRC功能:把由DES指定的操作数按位右移1位(或(CL)位),把移出的最低位移入CF中,把CF的值移入空 出的最高位中,把移位后所得的值放入由DES指定 的地址或寄存器中。,执行操作如图:说明:该指令不影响除CF和OF外的其他标志位。,92,例:AX中存放一带符号数,完成(AX)*3/2运算,MOV DX,AX SAL AX,1;乘2AXADD AX,DX;乘3AX SAR AX,1;(AX)*3/2,93,例:把存放在M+4,M+2,M 三个单元中的一个无符号数右移 一位。,SHR M+4,1 RCR M+2,1 RCR M,1,94,4.处理器控制指令(1)标志位操作指令:可对标志位(CF,IF,DF)直接操作清除进位标志指令:CLC;置CF=0进位标志置位指令:STC;置CF=1,进位标志取反指令:CMC;CF取反清除方向标志指令:CLD;置DF=0方向标志置位指令:STD;置DF=1清除中断标志指令:CLI;置IF=0中断标志置位指令:STI;置IF=1,95,(2)与部事件同步指令,HLT;停机指令WAIT;等待指令(CPU等待外部事件就绪达到同步目 的)ESC;外部协处理器指令的前缀LOCK;总线封锁前缀指令,(3)空操作指令NOP:该指令使CPU执行一次空操作,只占据CPU三个时 钟周期,不影响任何寄存器、存储单元及标志位。,