3-4逻辑运算指令

上传人:豆浆 文档编号:48543580 上传时间:2018-07-17 格式:PPT 页数:17 大小:950.50KB
返回 下载 相关 举报
3-4逻辑运算指令_第1页
第1页 / 共17页
3-4逻辑运算指令_第2页
第2页 / 共17页
3-4逻辑运算指令_第3页
第3页 / 共17页
3-4逻辑运算指令_第4页
第4页 / 共17页
3-4逻辑运算指令_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《3-4逻辑运算指令》由会员分享,可在线阅读,更多相关《3-4逻辑运算指令(17页珍藏版)》请在金锄头文库上搜索。

1、微型计算机原理及应用第3章 8086指令系统第3章 8086指令系统指令是让计算机完成某种操作的命令,指令的集合称作指令系统 ,不同CPU的计算机有不同的指令系统。指令是根据计算机CPU硬 件特点研制出来的,指令的符号用规定的英文字母组成,称为助 记符。 操作码 操作数,操作数目标操作数, 用以存放结果源操作数助记符,用以 说明CPU执行 的操作立即操作数 具有固定数值的操作数,即常数。它不会由于指 令的执行而发生变化,存在于指令之中。立即数操作数只能用 作源操作数,而不能用作目标操作数。寄存器操作数 存放在8086CPU的8个通用寄存器或段寄存器 中,既可作为源操作数,也可以用作目标操作数。

2、存储器操作数 可以是字节、字或双字,分别存放在1个、2个 或4个存储单元中。存储器操作数在指令中既可作为源操作数 ,也用作目的操作数。对大多数指令,逻辑运算和移位指令 注意他们的应用!3.3.3 逻辑运算和移位指令1逻辑运算指令8086的逻辑运算指令包括AND、OR、NOT、XOR指令 和TEST(测试)指令。比如: AND AL,0FH ;AL的内容和0FH相与,结果在AL中OR AX,00F0H ;AX和00F0相或,结果在AX中 NOT BX ;BX中内容求反,结果在BX中XOR AX,AX ;AX的内容本身进行异或,结果AX清零。8086指令系统提供对8位数和16位数的逻辑操作指令。A

3、ND “与1相与,该位被保留;与0相与,该位变成0”OR 与1相或该位变成1;与0相或该位被保留XOR 与0相异或保留,与1相异或反相 1、AND指令对一个数据的指定位清0 2、OR指令常用来对一些指定位置1 3、XOR指令常用在程序的开头使某个寄存器清0。 4、NOT指令常用于将某个数据取成反码再加上1,便 得到补码。AND、OR、XOR逻辑运算指令的作用1、要求保留AL的D7、D5、D4、D0位,其余各位置“1”分析:只有或指令可以置1,可以采用:OR AL,0100 1110B 指令。 2、要求保留AL的D7、D5、D4、D0位,其余各位置“0”分析:只有与指令可以置0,可以采用:AND

4、 AL,1011 0001B指令。 3、若AL中存有一端口的状态信息,D1位控制扬声器发声, 要求该位在0、1之间来回变化,其余位保持不变。分析:可用以下指令实现: L1: XOR AL , 0000 0010BOUT XXH,ALJMP L1AND、OR、XOR逻辑运算指令的的应用实例一会儿叫一会儿停,叫的时候1有效,停的时候0有效TEST指令和AND指令执行同样的操作,但TEST指令不送回 操作结果,不改变目的操作数。而仅仅影响标志位。 TEST AX,8000H ;如AX的最高位为1,则ZF=0,否则 ZF=1TEST指令一般用来检测指定位是1还是0。 例: 1010 1010B 010

5、1 0101B 0000 0001B 0000 0001B 0000 0000B 0000 0001B Test指令的的格式、功能Test指令的的测试功能实例例:设AL中存有报警信号,若D7=1,表示温度报警, 程序转向报警处理程序T-ALARM;若D6=1,转向压力 报警程序P-ALARM。可用以下指令实现: TEST AL,1000 0000B;查AL的D7=1? JNZ T-ALARM;是1(非零),转向温度报警程序。 TEST AL,0100 0000B;D7=0 , D6=1? JNZ P-ALARM;是1(非零),转向压力报警程序注意:逻辑运算指令执行后CF=0, 可以利用这一点,

6、在需要清除进位标志时,使用逻辑运算 指令,但是不要改变操作数的值。 1、写出3种使AX清零的指令MOV AX,0000H SUB AX,AX XOR AX,AX AND AX,0000H CMP AX,AX;(X) TEST AX,0000H ;(X)为学习单片机打下基础 逻辑运算课堂练习 2、写出3种使CF清零,但是保持AX不变的指令。 qOR AX,0000H qADD AX,0000H qCMP AX,AX qAND AX,AX qXOR AX,0000H qSUB AX,0000H qAND AX,0FFFFH 逻辑运算课堂练习 例3:检查80H端口的D0 D2 D7位是否同时为1?

7、本题不能用TEST指令,因为TEST指令适用于检查寄 存器或I/O端口的某一位。现在要检查3位,可以用比 较指令。 L1:IN AL,80H CMP AL,1000 0101B JNZ L1;若80H端口的D0、D2、D7位不同时为 “1”,转L1 逻辑运算课堂练习 有没有问题?如果AL是1111 11111虽然三个位上 同时为1,但没检查出来?1、非循环移位指令算术左移指令 SAL(Shift Arithmetic Left)算术右移指令 SAR(Shift Arithmetic Right)逻辑左移指令 SHL(Shift Left)逻辑右移指令 SHR(Shift Right)。 2、循

8、环移位指令不含进位位的循环左移指令 ROL不含进位位的循环右移指令 ROR含进位位的循环左移指令 RCL含进位位的循环右移指令 RCR移位指令1、移位指令统一格式(以SAL为例)格式:SAL 目的,移位的位数 2、循环移位指令 移位位数放在CL寄存器中,如果只移1位,也可以直接写在指令中。MOV AL,1MOV CL,4SHR AL,CL 算术移位把操作数看做有符号数;逻辑移位把操作数看做无符号数。移位指令(1)非循环移位指令所有的移位指令在执行时, 都有会影响标志位CF、SF、PF、OF和ZF。CF0最高位最低位SHL/SAL最高位最低位SARCF最高位最低位SHRCF0移1位,指令中直接

9、用1指出;移多位, 用CL寄存器指定所 移的位数。图示中CF都画在了左侧,实际上CF在标志 寄存器当中,图示上画在左侧右侧没有关系(2)循环移位指令这4条循环移位指令可以对字节进行操作,也可以对字进行操作,操作数可以是寄存器,也可以是存储单元。和非循 环移位指令一样,如果循环移位指令只移动1位,则在指令中 直接指出,如果要移动若干位,则必须在CL中指定移动位数 。 CF最高位最低位带进位循环左移RCL0CF最高位最低位 0循环左移ROLCF最高位最低位循环右移RORCF最高位最低位带进位循环右移RCR例1把以DATA为首址的两个连续单元中的16位无符号数乘以10。LEA SI,DATAMOV

10、AX,SI;SI称为DATA的地址指针SAL AX,1 ;将AX中的数左移1位,得2X(或SHL)MOV BX,AX ;2X保存(藏)在BX中MOV CL,2 ;移位次数置入2SAL AX,CL ;2X左移2位,得8XADD AX,BX ;2X加8X,AL中为10XHLT课堂练习假设16位数值为X课堂练习 方法(1): MOV BL,AL ADD AL,AL ADD AL,AL ADD AL,BL 方法(2): MOV BL,AL MOV CL,2 SAL AL,CL ADD AL,BL错误做法(1): MOV CX,0004H L1:ADD AL,AL DEC CX JNZ L1 错误做法(2): MOV BL,AL SAL AL,2 ADD AL,BL例2、将AL*5送回到AL错在哪里?

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号