资源描述:
《微机原理与接口技术第3章ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、物理与电气工程学院第3章指令系统8086指令系统(2)3.3.3逻辑运算和位移指令三、逻辑运算和移位类逻辑运算移位操作非循环移位循环移位位操作类指令以二进制位为基本单位进行数据的操作当需要对字节或字数据中的各个二进制位操作时,可以考虑采用位操作类指令注意这些指令对标志位的影响1.逻辑运算指令ANDORXORNOTTEST2.移位指令SHLSHRSAR3.循环移位指令ROLRORRCLRCR位操作类指令逻辑指令逻辑指令在底层软件中提供了对二进制位的控制。可以对位进行置位、清0或取反。常用于控制系统的I/O设备
2、。1、逻辑运算逻辑运算指令对操作数的要求大多与MOV指令相同。“非”运算指令要求操作数不能是立即数;NOT指令对标志位无影响,其余指令执行后,总是使CF=OF=0,SF、ZF、PF根据运算结果设置,AF状态不确定。AND指令ANDdst,src功能:dst←dst&src对两个操作数执行逻辑与运算,结果送目的操作数只有相与的两位都是1,结果才是1;否则与的结果为0。测试指令TESTdst,src功能:dst&src对两个操作数执行逻辑与运算,但结果不回送给目的操作数。仅影响标志位,两个操作数都不变。AND与
3、TEST指令的关系,同SUB与CMP指令的关系一样。★它常用在要检测某些条件是否满足,但又不希望改变原有操作数的情况下。紧跟在这条指令后面的往往是一条条件转移指令,根据测试结果产生分支,转向不同的处理程序。设AL寄存器中存有报警标志。若D7=1,表示温度报警,程序要转到温度报警处理程序T_ALARM;若D6=1,则转压力报警程序P_ALARM。为此,可按下面方法使用TEST指令来实现这种功能:TESTAL,80H;查AL的D7=1?JNZT_ALARM;是1(非零),则转温度报警程序TESTAL,40H;D
4、7=0,再查D6=1?JNZP_ALARM;是1,转压力报警程序其中JNZ为条件转移指令,表示结果非0则转移。(即ZF=0,则转移)【例】OR指令ORdst,src功能:dst←dst∨src对两个操作数执行逻辑或运算,结果送目的操作数只要相或的两位有一位是1,结果就是1;否则,结果为0。XOR指令XORdst,src功能:dst←dst⊕src对两个操作数执行逻辑异或运算,结果送目的操作数只有相异或的两位不相同,结果才是1;否则,结果为0。NOT指令NOTdst功能:dst←~dst对目的操作数执行按位取
5、反的运算,结果送目的操作数按位取反,原来是0的位变为1;原来是1的位变为0。NOT指令不影响标志位!逻辑运算的例子MOVAL,75H;AL=75HANDAL,32H;AL=30H;CF=OF=0,SF=0,ZF=0,PF=1ORAL,71H;AL=71H;CF=OF=0,SF=0,ZF=0,PF=1XORAL,0F1H;AL=80H;CF=OF=0,SF=1,ZF=0,PF=0NOTAL;AL=7FH,标志不变【例】逻辑指令的应用ANDBL,11110110B;BL中D0和D3清0,其余位不变ORBL,00
6、001001B;BL中D0和D3置1,其余位不变XORBL,00001001B;BL中D0和D3求反,其余位不变AND可用于复位(同0相与)某些位而不影响其他位。OR可用于置位(同1相或)某些位而不影响其他位。XOR可用于求反(同1相异或)某些位而不影响其他位。例题(1)清除DH中的最低三位,而不改变其他位,结果存入DL中;ANDDH,0F8HMOVDL,DH(2)把BX中的0~3位清零,5~8位置1,10~12位取反;ANDBX,0FFFF0HORBX,01E0HXORBX,1C00H①清进位标志位:AN
7、DAX,AX或ORAL,AL等。②清零操作数:XORAX,AX不仅把AX清零,而且也影响了状态标志。③把某几位取反:用XOR指令,把要取反的位和1异或,不变的位和0异或。④清零或置位某几位:用AND指令清零,用OR指令置位。常见的用法举例:将操作数移动一位或多位,分别具有左移或右移操作。移位操作分成逻辑移位和算术移位。移位指令的操作数可以是8/16位的通用寄存器或存储器。移位次数要么是1,要么是CL。都会影响标志位,主要是学习CF。二、移位指令非循环移位指令循环移位指令注:移动一位时由指令直接给出;移动两位
8、及以上,则移位次数由CL指定。二、移位指令1.非循环移位指令逻辑左移算术左移逻辑右移算术右移算术左移和逻辑左移算术左移指令:SALOPRD,1SALOPRD,CL逻辑左移指令:SHLOPRD,1SHLOPRD,CL有符号数无符号数移动一位后,若CF与最高不相等,则OF=1;否则OF=0逻辑左移SHL与SAL等价格式:SALOPRD,1或CL;功能:OPRD算术左移M位格式:SHLOPRD,1或CL;功能:OPRD