《汇编语言程序设计》第8章:逻辑运算.ppt
《《汇编语言程序设计》第8章:逻辑运算.ppt》由会员分享,可在线阅读,更多相关《《汇编语言程序设计》第8章:逻辑运算.ppt(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-朱耀庭汇编语言程序设计汇编语言程序设计-朱耀庭朱耀庭 第第8章章 逻辑运算逻辑运算v逻辑运算指令是对字节或字中的各位进行运算的指令,即逻辑运算指令是对字节或字中的各位进行运算的指令,即它是位运算指令。它是位运算指令。v在目前计算机广泛应用的情况下,计算机大量的工作不是在目前计算机广泛应用的情况下,计算机大量的工作不是进行算术运算,而是进行信息处理、信息传送,这些都需进行算术运算,而是进行信息处理、信息传送,这些都需要做大量的位运算。在研制系统软件或进行软件开发中也要做大量的位运算。在研制系统软件或进行软件开发中也需要大量的位运算。需要大量的位运算。v本章结合二进制数和本章结合二进制数和BCD
2、码的输入码的输入/输出问题来介绍逻辑运输出问题来介绍逻辑运算指令的应用。与算术运算指令一样,逻辑运算的结果也算指令的应用。与算术运算指令一样,逻辑运算的结果也对标志寄存器产生影响。对标志寄存器产生影响。v希望同学们在掌握逻辑运算指令及其程序设计的同时,关希望同学们在掌握逻辑运算指令及其程序设计的同时,关注逻辑运算与条件转移指令的关系,为分支程序设计奠定注逻辑运算与条件转移指令的关系,为分支程序设计奠定基础基础 南开大学南开大学 朱耀庭朱耀庭第第8章章 逻辑运算逻辑运算 8.4 逻辑运算指令应用逻辑运算指令应用 8.3 循环移位指令循环移位指令 8.2 移位指令移位指令 8.1 逻辑运算指令逻辑
3、运算指令南开大学南开大学 朱耀庭朱耀庭8.1 逻辑运算指令运算指令AND指令指令 1OR指令指令(逻辑或、逻辑加逻辑或、逻辑加)3NOT指令指令(逻辑非、或叫求反码逻辑非、或叫求反码)5TEST指令指令 2XOR指令指令(逻辑异或、称按位加逻辑异或、称按位加)南开大学南开大学 朱耀庭朱耀庭1.AND指令指令 v格式:格式:AND 目的操作数,源操作数目的操作数,源操作数v功能:功能:AND将两个操作数将两个操作数(字节或字字节或字)进行按位进行按位“逻辑与逻辑与”运算,结果运算,结果送回目的操作数。若原来的两个操作数中的对应位均为送回目的操作数。若原来的两个操作数中的对应位均为1,则结果中,则
4、结果中的该位置的该位置1;否则,该位置;否则,该位置0。v作用:用作用:用AND指令可以将一个字节或字中的某些特定位清零,或者说指令可以将一个字节或字中的某些特定位清零,或者说将某些特定位截取下来。将某些特定位截取下来。AND指令执行后,标志指令执行后,标志CF=0,OF=0,PF,SF,ZF反映操作的结果;反映操作的结果;AF未定义。未定义。v例如,设例如,设AL的每一位代表一个灯或开关状态,的每一位代表一个灯或开关状态,1表示灯亮或开关表示灯亮或开关ON、0表示灯灭或开关表示灯灭或开关OFF。则指令:则指令:AND AL,10111111B的作用就是关掉第的作用就是关掉第6位所在位置的灯位
5、所在位置的灯或开关,其他位对应灯或开关状态不变。或开关,其他位对应灯或开关状态不变。而:而:AND AL,01000000B的作用是关掉除第的作用是关掉除第6位以外的灯或开关,位以外的灯或开关,而第而第6位的灯或开关保留原状态。位的灯或开关保留原状态。南开大学南开大学 朱耀庭朱耀庭2.TEST指令指令 v格式:格式:TEST 目的操作数,源操作数目的操作数,源操作数v功能:功能:TEST对两个操作数进行逻辑与运算,但结果并不对两个操作数进行逻辑与运算,但结果并不送至目的操作数。只是影响状态标志。此指令执行后两个送至目的操作数。只是影响状态标志。此指令执行后两个操作数都不变。操作数都不变。v作用
6、:这条指令常用来检测一些条件是否满足,但又不希作用:这条指令常用来检测一些条件是否满足,但又不希望改变原有的操作数的情况,即适用于检查一个字节或字望改变原有的操作数的情况,即适用于检查一个字节或字中的某些特定位是否有一位为中的某些特定位是否有一位为1。方法是:将要检查的字。方法是:将要检查的字节或字作为本指令的一个操作数,另一个操作数为指令要节或字作为本指令的一个操作数,另一个操作数为指令要检查的位的逻辑乘常数。如果测试结果检查的位的逻辑乘常数。如果测试结果(TEST指令执行结指令执行结果果)不为不为0(即即ZF=0),则说明至少有一个特定位为,则说明至少有一个特定位为1。因此,。因此,通常是
7、在通常是在TEST指令后面跟上一条条件转移指令,以便根指令后面跟上一条条件转移指令,以便根据据ZF是否为是否为0来进行转移来进行转移 南开大学南开大学 朱耀庭朱耀庭2.TEST指令指令 v例如:设例如:设AL的每一位代表一个灯或开关状态,的每一位代表一个灯或开关状态,1表示灯亮表示灯亮或开关或开关ON、0表示灯灭或开关表示灯灭或开关OFF。v则程序段:则程序段:TEST AL,01000000B JNZ L ;第第6位对应灯亮或开关位对应灯亮或开关ON转标号转标号L执行执行 ;第第6位对应灯灭或开关位对应灯灭或开关OFF转标号转标号L执行执行v例如:检查例如:检查BL的低的低4位是否至少有一位
8、为位是否至少有一位为1的程序段可以书的程序段可以书写如下:写如下:TEST BL,0FH JE L ;ZF=1时转时转L(即低即低4位全为位全为0时转时转L处处);低低4位至少有一位为位至少有一位为1时的处理时的处理 L:;低低4位全为位全为0时的处理时的处理南开大学南开大学 朱耀庭朱耀庭3.OR指令指令(逻辑或、逻辑加逻辑或、逻辑加)v格式:格式:OR 目的操作数,源操作数目的操作数,源操作数v功能:功能:OR指令将两个操作数指令将两个操作数(字节或字字节或字)进行按位逻辑加操进行按位逻辑加操作,并将结果送至目的操作数。如果两个操作数中对应位作,并将结果送至目的操作数。如果两个操作数中对应位
9、有一个为有一个为1或全为或全为1,则结果的该位为,则结果的该位为1;否则,结果的该;否则,结果的该位为位为0。vOR指令对状态标志的影响同指令对状态标志的影响同AND指令。指令。OR指令往往用于指令往往用于对字节或字的特定位置数对字节或字的特定位置数(拼数拼数)。v例如:例如:OR AL,30H ;将将AL高高4位拼上位拼上3v又如:设又如:设AL的每一位代表一个灯或开关状态,的每一位代表一个灯或开关状态,1表示灯亮表示灯亮或开关或开关ON、0表示灯灭或开关表示灯灭或开关OFF。则指令:。则指令:OR AL,01000000B的作用就是打开第的作用就是打开第6位所在位置的灯或开关,位所在位置的
10、灯或开关,其他位对应灯或开关状态不变其他位对应灯或开关状态不变南开大学南开大学 朱耀庭朱耀庭4.XOR指令指令(逻辑异或、称按位加逻辑异或、称按位加)v格式:格式:XOR 目的操作数,源操作数目的操作数,源操作数v功能:功能:XOR指令将两个操作数指令将两个操作数(字节或字字节或字)进行按位逻辑异进行按位逻辑异或操作,并将结果送至目的操作数。如果两个操作数中对或操作,并将结果送至目的操作数。如果两个操作数中对应位相同应位相同(均为均为0或均为或均为1),则结果该位为,则结果该位为0;否则,结果该;否则,结果该位为位为1。该指令对状态标志的影响和。该指令对状态标志的影响和AND指令相同。指令相同
11、。vXOR指令适用于对一个数指令适用于对一个数(字节或字字节或字)或一个数的特定位求或一个数的特定位求反反 v例如:将例如:将AL寄存器中数寄存器中数01011100B求反,只要逻辑异或常求反,只要逻辑异或常数数0FFH(即即8位全位全1)即可。即可。MOV AL,01011100B XOR AL,0FFH ;10100011B=AL南开大学南开大学 朱耀庭朱耀庭4.XOR指令指令(逻辑异或、称按位加逻辑异或、称按位加)v再如:将再如:将AL寄存器的中间寄存器的中间4位求反,只要逻辑异或立即数位求反,只要逻辑异或立即数00111100B(即即3CH)即可即可 XOR AL,3CHv 又如:又如
12、:XOR AL,BL XOR AL,BLv结果结果AL不变。在图形显示时,这一特性往往用于动画制作。不变。在图形显示时,这一特性往往用于动画制作。想想为什么?想想为什么?南开大学南开大学 朱耀庭朱耀庭4.XOR指令指令(逻辑异或、称按位加逻辑异或、称按位加)v注意:以上注意:以上4个逻辑指令的两个操作数均可以是同数据类个逻辑指令的两个操作数均可以是同数据类型的寄存器操作数;或同数据类型的一个寄存器操作数和型的寄存器操作数;或同数据类型的一个寄存器操作数和一个内存操作数;或目的操作数是寄存器或存储器,源操一个内存操作数;或目的操作数是寄存器或存储器,源操作数为立即数。作数为立即数。v例如:例如:
13、AND ALPHADI,0FHOR GAMMABXSI,3030H;其中;其中GAMA为字变量为字变量XOR A,0FFH ;其中;其中A为字节变量为字节变量TEST BYTE PTRDI,0F0H 南开大学南开大学 朱耀庭朱耀庭5.NOT指令指令(逻辑非、或叫求反码逻辑非、或叫求反码)v格式:格式:NOT 目的操作数目的操作数v功能:功能:NOT指令对目的操作数的每一位求反码,并将结果指令对目的操作数的每一位求反码,并将结果送回目的操作数送回目的操作数v此指令只有目的操作数,目的操作数可以是通用寄存器也此指令只有目的操作数,目的操作数可以是通用寄存器也可以是存储器。具体操作是从可以是存储器。
14、具体操作是从0FFH(对于字节来说对于字节来说)或从或从0FFFFH(对字来说对字来说)中减去指定的操作数,并将结果送回目中减去指定的操作数,并将结果送回目的操作数。此指令不改变状态标志的操作数。此指令不改变状态标志 南开大学南开大学 朱耀庭朱耀庭8.2 移位指令移位指令SHL指令指令(逻辑左移左移)1SAL指令指令(算算术左移左移)3SHR指令指令(逻辑右移右移)2SAR指令指令(算算术右移右移)南开大学南开大学 朱耀庭朱耀庭1.SHL指令指令(逻辑左移左移)v格式:格式:SHL 目的操作数,目的操作数,COUNTv其中,目的操作数可以是通用寄存器,也可以是存储器。其中,目的操作数可以是通用
15、寄存器,也可以是存储器。v功能:功能:SHL指令将目的操作数左移指令将目的操作数左移COUNT次次(位位)。最高位。最高位移入进位标志移入进位标志CF中去,而中去,而CF中原来的值被冲掉。移位后中原来的值被冲掉。移位后空出的最低位中填空出的最低位中填0,如图,如图8-1所示。所示。图图8-1 SHL指令操作过程指令操作过程动画演示动画演示南开大学南开大学 朱耀庭朱耀庭1.SHL指令指令(逻辑左移左移)v移位次数移位次数COUNT若为若为1,则:,则:SHL目的操作数,。移目的操作数,。移位后目的操作数的最高位与位后目的操作数的最高位与CF不同,则将不同,则将OF置置1,否则,否则OF=0。对于
16、带符号数来说,这用来表示移位以后的符号。对于带符号数来说,这用来表示移位以后的符号位与移位前的符号位是否相同。若相同则位与移位前的符号位是否相同。若相同则OF=0,表示没,表示没有产生超位结果有产生超位结果(因为每左移因为每左移1位数值就扩大位数值就扩大1倍倍)。v移位次数移位次数COUNT不为不为1,则:,则:MOV CL,COUNT且且SHL 目目的操作数,的操作数,CL。移位后。移位后OF的值不能确定。的值不能确定。v状态标志状态标志PF、SF、ZF表示移位后的结果;标志表示移位后的结果;标志AF(辅助进辅助进位位)总是不确定的;总是不确定的;CF中总是包含从目的操作数中移出的中总是包含
17、从目的操作数中移出的最后一位的值。最后一位的值。v例如:例如:SHL AL,1 ;将;将(AL)左移一位左移一位 MOV CL,3 SHL,AL,CL ;将;将(AL)左移左移3位位南开大学南开大学 朱耀庭朱耀庭1.SHL指令指令(逻辑左移左移)v用用SHL指指令令将将一一个个无无符符号号数数左左移移1位位等等于于将将数数倍倍增增(乘乘2),用用SHL指指令令使使数数倍倍增增比比用用乘乘法法指指令令速速度度快快得得多多。可可以以通通过过CF是是否否为为0检检查查移移位位结结果果是是否否超超位位。比比如如,将将8位位数数65(01000001B)左左 移移 1位位 得得 到到 130(10000
18、010B)。这这 时时CF=0指指明明没没有有超超位位。再再将将130左左移移1位位得得到到4(00000100B)。这这时时CF=1表表明明已已超超位位,此此时时将将OF置置位位(置置1)。因因此此通通过过检检查查OF也也可可以以知知道道是是否否超超位位。检检查查超超位位的的方方法法是是在在移移位位指指令令后面跟上一条测试后面跟上一条测试CF(或或OF)的条件转移指令。的条件转移指令。例例8-1 读以下程序,并且说明输入一个字符后输出什么读以下程序,并且说明输入一个字符后输出什么南开大学南开大学 朱耀庭朱耀庭2.SHR指令指令(逻辑右移右移)v格式:格式:SHR指令格式和指令格式和SHL相同
19、。相同。v功能:将一个无符号数向右移位,左边功能:将一个无符号数向右移位,左边(最高位最高位)出现空位出现空位补补0,右边,右边(低位低位)移至移至CF,如图,如图8-2所示。所示。v此指令影响状态标志:此指令影响状态标志:CF,OF,PF,SF,ZF,但但AF不确定。不确定。图图8-2 SHR指令操作过程指令操作过程动画演示动画演示南开大学南开大学 朱耀庭朱耀庭2.SHR指令指令(逻辑右移右移)vSHR指指令令适适用用于于将将一一个个无无符符号号数数减减半半,右右移移1位位等等于于将将数数除除以以2。用用SHR指指令令使使数数减减半半比比用用除除法法指指令令速速度度要要快快得得多多。另另外外
20、,可可以以通通过右右移移1位位后后看看CF是是否否为0,检查数数是是否否为偶偶数数。CF为1表表明明此此数数不不是是偶偶数数。比比如如将将8位位数数11(0000101B)右右移移1位位得得到到5(00000101),这时CF=1,故故数数11不不是是偶偶数数。检查的的方方法法是是在在移移位位指指令令后后跟跟上上一一条条测试CF的条件的条件转移指令。移指令。南开大学南开大学 朱耀庭朱耀庭3.SAL指令指令(算算术左移左移)v SAL指指令令同同SHL指指令令,实际上上SHL和和SAL是是同同一一条条指指令令的两种助的两种助记符,它符,它们执行的操作完全一行的操作完全一样v它一般用于它一般用于带
21、符号位的数的倍增符号位的数的倍增(乘乘2)v对于于带符号的数符号的数检查超位超位时只能只能测试OF 南开大学南开大学 朱耀庭朱耀庭4.SAR指令指令(算算术右移右移)vSAR指指令令类似似于于SHR指指令令,SAR同同SHR的的区区别在在于于:SHR是是连同同符符号号位位一一起起右右移移,左左边(最最高高位位)出出现的的空空位位补0;而而SAR右右移移时符符号号位位不不动(保保持持不不变),左左边(数数的的最最高高位位)出出现的的空空位位补上上符符号号位位的的值。SAR指指令令的的操操作作如如图8-3所所示。示。图图8-3 SAR指令操作过程指令操作过程动画演示动画演示南开大学南开大学 朱耀庭
22、朱耀庭4.SAR指令指令(算算术右移右移)vSAR指令适用于将指令适用于将带符号位的数减半符号位的数减半(除以除以2)。例如,用。例如,用SAR指令将指令将8位数位数+8(00001000)右移右移1位得到位得到+4(00000100);将;将8位数位数-120(10001000)右移右移1位得位得-60(110001000)。v另外,用另外,用SAR指令将指令将+5(00000101)右移右移1位位(减半减半)得得+2(00000010);用用SAR指令将指令将-5(11111011)右移右移1位位(减半减半)得得-3(11111101)。可。可见SAR将奇数右移将奇数右移1位位时,总是得出
23、比是得出比该数的一半数的一半还小的小的结果。果。v值得注意的是:如果目的操作数得注意的是:如果目的操作数为负的,且其中具有的,且其中具有1的位数移出以的位数移出以后,后,则SAR指令指令产生的生的结果与用整数除果与用整数除IDIV指令指令产生的生的结果是不一果是不一样的。例如,的。例如,-5经SAR在右移在右移1位之后得位之后得-3,而用,而用IDIV作整数作整数-5被被2除后除后得得-2。这是因是因为IDIV指令将所有的数指令将所有的数(包括正、包括正、负)向向0进行舍入,而行舍入,而SAR指令将正数向指令将正数向0进行舍入,将行舍入,将负数向数向负无无穷大大进行舍入。行舍入。南开大学南开大
24、学 朱耀庭朱耀庭4.SAR指令指令(算算术右移右移)vSAR影响状影响状态标志有志有CF,OF,PF,SF,ZFv综上所述,移位指令可以上所述,移位指令可以对字字节(8位位)或字或字(16位位)中的位中的位进行操作。行操作。v指令的第一个操作数指令的第一个操作数为目的操作数,目的操作数可以是通目的操作数,目的操作数可以是通用寄存器,也可以是存用寄存器,也可以是存储器器(各种各种寻址方式址方式)。指令的第二。指令的第二个操作数不是通常的源操作数,而是移位次数个操作数不是通常的源操作数,而是移位次数计数数值操作操作数,一条指令可数,一条指令可实现高达高达255次移位的操作。指令中的移次移位的操作。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言程序设计 汇编语言 程序设计 逻辑运算
限制150内