《汇编语言程序设计》第8章:逻辑运算
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
www.tup.com.cn
南开大学 朱耀庭
第8章 逻辑运算 章
8.1 逻辑运算指令 8.2 移位指令 8.3 循环移位指令 8.4 逻辑运算指令应用
www.tup.com.cn
南开大学 朱耀庭
8.1 逻辑运算指令
1 2 3 4 5
AND指令 指令 TEST指令 指令 OR指令 逻辑或、逻辑加 指令(逻辑或 逻辑加) 指令 逻辑或、 XOR指令 逻辑异或、称按位加 指令(逻辑异或 称按位加) 指令 逻辑异或、 NOT指令 逻辑非、或叫求反码 指令(逻辑非 或叫求反码) 指令 逻辑非、
www.tup.com.cn
南开大学 朱耀庭
8.2 移位指令
1 2 3 4
SHL指令 逻辑左移 指令(逻辑左移 指令 逻辑左移) SHR指令 逻辑右移 指令(逻辑右移 指令 逻辑右移)
SAL指令 算术左移 指令(算术左移 指令 算术左移) SAR指令 算术右移 指令(算术右移 指令 算术右移)
www.tup.com.cn
www.tup.com.cn
南开大Biblioteka Baidu 朱耀庭
2. TEST指令 指令
格式: 目的操作数, 格式:TEST 目的操作数,源操作数 功能: 对两个操作数进行逻辑与运算, 功能:TEST对两个操作数进行逻辑与运算,但结果并不 对两个操作数进行逻辑与运算 送至目的操作数。只是影响状态标志。 送至目的操作数。只是影响状态标志。此指令执行后两个 操作数都不变。 操作数都不变。 作用:这条指令常用来检测一些条件是否满足, 作用:这条指令常用来检测一些条件是否满足,但又不希 望改变原有的操作数的情况, 望改变原有的操作数的情况,即适用于检查一个字节或字 中的某些特定位是否有一位为1。方法是: 中的某些特定位是否有一位为 。方法是:将要检查的字 节或字作为本指令的一个操作数, 节或字作为本指令的一个操作数,另一个操作数为指令要 检查的位的逻辑乘常数。如果测试结果(TEST指令执行结 检查的位的逻辑乘常数。如果测试结果 指令执行结 果)不为 即ZF=0),则说明至少有一个特定位为1。因此, 不为0(即 ,则说明至少有一个特定位为 。因此, 不为 通常是在TEST指令后面跟上一条条件转移指令,以便根 指令后面跟上一条条件转移指令, 通常是在 指令后面跟上一条条件转移指令 是否为0来进行转移 据ZF是否为 来进行转移 是否为
南开大学 朱耀庭
1. SHL指令 逻辑左移 指令(逻辑左移 指令 逻辑左移)
格式: 目的操作数, 格式:SHL 目的操作数,COUNT 其中,目的操作数可以是通用寄存器,也可以是存储器。 其中,目的操作数可以是通用寄存器,也可以是存储器。 功能: 指令将目的操作数左移COUNT次(位)。最高位 功能:SHL指令将目的操作数左移 指令将目的操作数左移 次位。 移入进位标志CF中去,而CF中原来的值被冲掉。移位后 移入进位标志 中去, 中原来的值被冲掉。 中去 中原来的值被冲掉 空出的最低位中填0,如图8-1所示 所示。 空出的最低位中填0,如图8-1所示。
TEST AL,01000000B , JNZ L ;第6位对应灯亮或开关 转标号 执行 位对应灯亮或开关ON转标号 第 位对应灯亮或开关 转标号L执行 … ;第6位对应灯灭或开关 第 位对应灯灭或开关OFF转标号 执行 转标号L执行 位对应灯灭或开关 转标号
例如:检查 的低 位是否至少有一位为1的程序段可以 的低4位是否至少有一位为 例如:检查BL的低 位是否至少有一位为 的程序段可以 书写如下: 书写如下:
www.tup.com.cn
南开大学 朱耀庭
1. AND指令 指令
格式: 目的操作数, 格式:AND 目的操作数,源操作数 功能: 将两个操作数(字节或字 进行按位“ 功能:AND将两个操作数 字节或字 进行按位“逻辑与”运算,结果 将两个操作数 字节或字)进行按位 逻辑与”运算, 送回目的操作数。若原来的两个操作数中的对应位均为1, 送回目的操作数。若原来的两个操作数中的对应位均为 ,则结果中 的该位置1;否则,该位置0。 的该位置 ;否则,该位置 。 作用:用AND指令可以将一个字节或字中的某些特定位清零,或者说 作用: 指令可以将一个字节或字中的某些特定位清零, 指令可以将一个字节或字中的某些特定位清零 将某些特定位截取下来。AND指令执行后,标志CF=0, OF=0, PF, 将某些特定位截取下来。 指令执行后,标志 , , , 指令执行后 SF, ZF反映操作的结果;AF未定义。 , 反映操作的结果; 未定义。 反映操作的结果 未定义 例如, 的每一位代表一个灯或开关状态, 表示灯亮或开关 表示灯亮或开关ON、 例如,设AL的每一位代表一个灯或开关状态,1表示灯亮或开关 、 的每一位代表一个灯或开关状态 0表示灯灭或开关 表示灯灭或开关OFF。 表示灯灭或开关 。 则指令: 的作用就是关掉第6位所在位置的灯 则指令:AND AL, 10111111B的作用就是关掉第 位所在位置的灯 , 的作用就是关掉第 或开关,其他位对应灯或开关状态不变。 或开关,其他位对应灯或开关状态不变。 的作用是关掉除第6位以外的灯或开关 而:AND AL, 01000000B的作用是关掉除第 位以外的灯或开关, , 的作用是关掉除第 位以外的灯或开关, 而第6位的灯或开关保留原状态 位的灯或开关保留原状态。 而第 位的灯或开关保留原状态。
3. OR指令 逻辑或、逻辑加 指令(逻辑或 指令 逻辑或、逻辑加)
格式: 目的操作数, 格式:OR 目的操作数,源操作数 功能: 指令将两个操作数 字节或字)进行按位逻辑加操 指令将两个操作数(字节或字 功能:OR指令将两个操作数 字节或字 进行按位逻辑加操 并将结果送至目的操作数。 作,并将结果送至目的操作数。如果两个操作数中对应位 有一个为1或全为 或全为1,则结果的该位为1;否则, 有一个为 或全为 ,则结果的该位为 ;否则,结果的该 位为0。 位为 。 OR指令对状态标志的影响同 指令对状态标志的影响同AND指令。OR指令往往用于 指令。 指令往往用于 指令对状态标志的影响同 指令 对字节或字的特定位置数(拼数 拼数)。 对字节或字的特定位置数 拼数 。 例如: ;将AL高4位拼上 位拼上3 例如:OR AL,30H , 将 高 位拼上 又如: 的每一位代表一个灯或开关状态, 表示灯亮 又如:设AL的每一位代表一个灯或开关状态,1表示灯亮 的每一位代表一个灯或开关状态 或开关ON、0表示灯灭或开关 表示灯灭或开关OFF。则指令:OR AL, 或开关 、 表示灯灭或开关 。则指令: , 01000000B的作用就是打开第 位所在位置的灯或开关, 的作用就是打开第6位所在位置的灯或开关 的作用就是打开第 位所在位置的灯或开关, 其他位对应灯或开关状态不变
汇编语言程序设计
-------朱耀庭 ---------朱耀庭
www.tup.com.cn
第8章 逻辑运算 章
逻辑运算指令是对字节或字中的各位进行运算的指令, 逻辑运算指令是对字节或字中的各位进行运算的指令,即 它是位运算指令。 它是位运算指令。 在目前计算机广泛应用的情况下, 在目前计算机广泛应用的情况下,计算机大量的工作不是 进行算术运算,而是进行信息处理、信息传送, 进行算术运算,而是进行信息处理、信息传送,这些都需 要做大量的位运算。 要做大量的位运算。在研制系统软件或进行软件开发中也 需要大量的位运算。 需要大量的位运算。 本章结合二进制数和BCD码的输入 输出问题来介绍逻辑 码的输入/输出问题来介绍逻辑 本章结合二进制数和 码的输入 运算指令的应用。与算术运算指令一样, 运算指令的应用。与算术运算指令一样,逻辑运算的结果 也对标志寄存器产生影响。 也对标志寄存器产生影响。 希望同学们在掌握逻辑运算指令及其程序设计的同时, 希望同学们在掌握逻辑运算指令及其程序设计的同时,关 注逻辑运算与条件转移指令的关系, 注逻辑运算与条件转移指令的关系,为分支程序设计奠定 基础
www.tup.com.cn
南开大学 朱耀庭
2. TEST指令 指令
例如: 的每一位代表一个灯或开关状态, 表示灯亮 例如:设AL的每一位代表一个灯或开关状态,1表示灯亮 的每一位代表一个灯或开关状态 或开关ON、0表示灯灭或开关 表示灯灭或开关OFF。 或开关 、 表示灯灭或开关 。 则程序段: 则程序段:
TEST BL,0FH , JE L … L: : … ;ZF=1时转 即低4位全为 时转L处) 时转L(即低 位全为0时转 处 时转 即低 位全为 时转 ;低4位至少有一位为 时的处理 位至少有一位为1时的处理 低 位至少有一位为 ;低4位全为 时的处理 低 位全为 位全为0时的处理
www.tup.com.cn 南开大学 朱耀庭
www.tup.com.cn 南开大学 朱耀庭
4. XOR指令 逻辑异或、称按位加 指令(逻辑异或 称按位加) 指令 逻辑异或、
格式: 目的操作数, 格式: XOR 目的操作数,源操作数 功能: 指令将两个操作数(字节或字 功能: XOR指令将两个操作数 字节或字 进行按位逻辑异 指令将两个操作数 字节或字)进行按位逻辑异 或操作,并将结果送至目的操作数。 或操作,并将结果送至目的操作数。如果两个操作数中对 应位相同(均为 或均为1),则结果该位为0;否则, 均为0或均为 应位相同 均为 或均为 ,则结果该位为 ;否则,结果 该位为1。该指令对状态标志的影响和AND指令相同。 指令相同。 该位为 。该指令对状态标志的影响和 指令相同 XOR指令适用于对一个数 字节或字 或一个数的特定位求 指令适用于对一个数(字节或字 指令适用于对一个数 字节或字)或一个数的特定位求 反 例如: 寄存器中数01011100B求反,只要逻辑异或 求反, 例如:将AL寄存器中数 寄存器中数 求反 常数0FFH(即8位全 即可。 位全1)即可 常数 即 位全 即可。 MOV AL,01011100B , XOR AL,0FFH ;10100011B=>AL ,
www.tup.com.cn
南开大学 朱耀庭
4. XOR指令 逻辑异或、称按位加 指令(逻辑异或 称按位加) 指令 逻辑异或、
注意:以上4个逻辑指令的两个操作数均可以是同数据类 注意:以上 个逻辑指令的两个操作数均可以是同数据类 型的寄存器操作数; 型的寄存器操作数;或同数据类型的一个寄存器操作数和 一个内存操作数;或目的操作数是寄存器或存储器, 一个内存操作数;或目的操作数是寄存器或存储器,源操 作数为立即数。 作数为立即数。 例如: 例如: AND ALPHA[DI],0FH , OR GAMMA[BX+SI],3030H ;其中 其中GAMA为字变量 为字变量 + , 为字变量 XOR A,0FFH 其中A为字节变量 , ;其中 为字节变量 TEST BYTE PTR[DI],0F0H ,
www.tup.com.cn
南开大学 朱耀庭
5. NOT指令 逻辑非、或叫求反码 指令(逻辑非 或叫求反码) 指令 逻辑非、
格式: 格式:NOT 目的操作数 功能: 指令对目的操作数的每一位求反码, 功能:NOT指令对目的操作数的每一位求反码,并将结果 指令对目的操作数的每一位求反码 送回目的操作数 此指令只有目的操作数, 此指令只有目的操作数,目的操作数可以是通用寄存器也 可以是存储器。具体操作是从0FFH(对于字节来说 或从 对于字节来说)或从 可以是存储器。具体操作是从 对于字节来说 0FFFFH(对字来说 中减去指定的操作数,并将结果送回 对字来说)中减去指定的操作数 对字来说 中减去指定的操作数, 目的操作数。 目的操作数。此指令不改变状态标志
www.tup.com.cn
南开大学 朱耀庭
4. XOR指令 逻辑异或、称按位加 指令(逻辑异或 称按位加) 指令 逻辑异或、
再如: 寄存器的中间4位求反 再如:将AL寄存器的中间 位求反,只要逻辑异或立即数 寄存器的中间 位求反, 00111100B(即3CH)即可 即 即可 XOR AL,3CH , 又如: 又如: XOR AL,BL , XOR AL,BL , 结果AL不变 在图形显示时, 不变。 结果 不变。在图形显示时,这一特性往往用于动画制 想想为什么? 作。想想为什么?