逻辑运算与循环类指令_第1页
逻辑运算与循环类指令_第2页
逻辑运算与循环类指令_第3页
逻辑运算与循环类指令_第4页
逻辑运算与循环类指令_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

逻辑运算与循环类指令此类指令共24条,包括或、与、异或、求反、清0、循环移位。其共同特点是当A作目的操作数(第一操作数)时,影响P位;带进位的移位指令影响CY位,其余都不影响PSW。逻辑运算类指令有与、或、异或、清零、取反、移位等24条操作指令:1)逻辑运算指令(20条)a.逻辑与指令(6条)ANLb.逻辑或指令(6条)ORLc.逻辑异或指令(6条)XRLd.累加器A清0和取反指令(2条)CLRCPL

2)循环移位指令(4条)RRRRCRLRLC

1.逻辑“与”运算指令(6条)这组指令的功能是:将两个操作数的内容按位进行逻辑与操作,并将结果送回目的操作数的单元中。∧--“与”,“有0出0,全1为1”它们都是按位与,其中4条指令的第一操作数为A,两条指令的第一操作数为direct。

“与”指令常用于对某位清0(其余位不受影响)。

例如,将A中的最高位屏蔽(清零)。

ANLA,#7FH;(A)=0×××××××B例:若(A)=3FH,(R1)=68H,执行指令“ANLA,R1”以后,(A)=28H。算式如下:(A)00111111

∧(R1)0110100000101000从例中可以看出,若保持某数的低四位不变,可用二进制数1111同该数的低四位相与。例:若(A)=39H,执行指令“ANLA,#0FH”以后,(A)=09H。算式如下:(A)00111001

∧0000111100001001从例中可知,若保持某数的低四位不变,高四位全被屏蔽,可用1111与低四位相与,用0000与高四位相与。2.逻辑“或”运算指令(6条)这组指令的功能是:将两个操作数的内容按位进行逻辑或操作,并将结果送回目的操作数的单元中。

∨--“或”,“有1出1,全0为0”此类指令都是按位相“或”。其中有4条指令的第一操作数都为A,另外两条指令的第一操作数为direct,不影响PSW。若直接寻址I/O端口时,则进行读—修改—写的逻辑操作,具体是:从该端口锁存器读入原始口数据的值(而不是读引脚状态),经修改后写到该输出口去。“或”指令常用于对某位置1(其余位不受影响)。

例如:使P1口的低2位置1,其余位不变,用以下指令实现:

ORL P1,#00000011B ;(P1)=××××××11B例:若(A)=39H,执行指令“ORLA,#0FH”以后,(A)=3FH。算式如下:(A)00111001

∨0000111100111111从上例可知,若保持某数的低四位全被置1,高四位不变,可用1111与低四位相或,用0000与高四位相或。3.逻辑“异或”运算指令(6条)这组指令的功能是:将两个操作数的内容按位进行逻辑异或操作,并将结果送回到目的操作数的单元中。

“异或”,“不同出1,相同为0”同上类似,它们都是按位异或,其中4条指令的第一操作数为A,另外两条指令的第一操作数为direct。对I/O端口操作数,进行读—修改—写的逻辑操作。“异或”指令常用于对某位取反(其余位不受影响)。例如:使P1口的低2位为0,高2位取反,其余位不变。ANLP1,#11111100B ;先对低2位清0XRLP1,#11000000B ;再对高2位取反

可见要取反的那些位用“1”相“异或”,维持不变的那些位用“0”相“异或”。例:若(A)=5AH,指令“XRLA,#5AH”执行后,(A)=0,算式如下:01011010

0101101000000000可以看出,两个相同的数相异或,结果为0。利用这个特性,异或指令可用于判断两个字节中的数据是否相等。例:要求如果(30H)=(50H),将PSW中的F0位置1。程序段如下:CLRF0MOVA,30HXRLA,50HJNZOUTSETBF0例:若(A)=5AH,指令“XRLA,#3CH”执行后,(A)=66H,再执行一次指令“XRLA,#3CH”,(A)=5AH。一个数a(明文)与另一个数b(密钥)相异或得到结果c(密文),这是加密过程,将c与b再进行一次异或所得结果等于a,实现了信息的还原(即解密)。利用这个特点再加上其他的算法,可以实现信息的简单加密与解密。4.累加器A清0和取反指令

CLRA;A0CPLA;A逐位取反例:假设(A)=98H=10011000B,在执行指令“CPLA”后,(A)=67H=01100111B。

A7A6…...A1A0A7A6……A1A05.循环移位指令(4条)(1)循环左移指令:RLA(2)循环右移指令:RRA例如:若(A)=06H=00000110B,则在执行指令“RLA”后,(A)=0CH=00001100B,相当于A的原值乘以2,前提是A的原值为无符号数且小于80H。若(A)=86H=10000110B,则在执行指令“RLA”后,(A)=0DH=00001101B,结果不是2倍的关系。例如:若(A)=86H=10000110B,则在执行指令“RRA”后,(A)=43H=01000011B,相当于对A的内容除以2,前提是A的原值为无符号数且为整数。(3)带进位的循环移位指令RLCA;带进位标志的循环左移位RRCA;带进位标志的循环右移位A7A6……A1A0CY循环移位指令都为单周期指令A7A6…...

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论