当前位置:首页 > 单片机 > 单片机
[导读]ANL A,Rn ;A与Rn中的值按位'与',结果送入A中ANL A,direct;A与direct中的值按位'与',结果送入A中ANL A,@Ri;A与间址寻址单元@Ri中的值按位'与',结果送入A中ANL A,#data;A与立即数data按位'与

ANL     A,Rn        ;A与Rn中的值按位'与',结果送入A中

ANL     A,direct;A与direct中的值按位'与',结果送入A中

ANL     A,@Ri;A与间址寻址单元@Ri中的值按位'与',结果送入A中

ANL     A,#data;A与立即数data按位'与',结果送入A中

ANL     direct,A;direct中值与A中的值按位'与',结果送入direct中

ANL     direct,#data;direct中的值与立即数data按位'与',结果送入direct中。

这几条指令的关键是知道什么是逻辑与。这里的逻辑与是指按位与

例:71H和56H相与则将两数写成二进制形式:

(71H) 01110001

(56H) 00100110

结果 00100000 即20H,从上面的式子可以看出,两个参与运算的值只要其中有一个位上是0,则这位的结果就是0,两个同是1,结果才是1。

理解了逻辑与的运算规则,结果自然就出来了。看每条指令后面的注释

下面再举一些例子来看。

MOV     A,#45H;(A)=45H

MOV     R1,#25H;(R1)=25H

MOV     25H,#79H;(25H)=79H

ANL     A,@R1;45H与79H按位与,结果送入A中为 41H (A)=41H

ANL     25H,#15H;25H中的值(79H)与15H相与结果为(25H)=11H)

ANL     25H,A;25H中的值(11H)与A中的值(41H)相与,结果为(25H)=11H

在知道了逻辑与指令的功能后,逻辑或和逻辑异或的功能就很简单了。逻辑或是按位“或”,即有“1”为1,全“0”为0。例:

10011000

或 01100001

结果 11111001

而异或则是按位“异或”,相同为“0”,相异为“1”。例:

10011000

异或 01100001

结果 11111001

而所有的或指令,就是将与指仿中的ANL 换成ORL,而异或指令则是将ANL   换成XRL。即

或指令:

ORL     A,Rn        ;A和Rn中的值按位'或',结果送入A中

ORL     A,direct;A和与间址寻址单元@Ri中的值按位'或',结果送入A中

ORL     A,#data;A和立direct中的值按位'或',结果送入A中

ORL     A,@Ri;A和即数data按位'或',结果送入A中

ORL     direct,A;direct中值和A中的值按位'或',结果送入direct中

ORL     direct,#data;direct中的值和立即数data按位'或',结果送入direct中。

异或指令:

XRL     A,Rn        ;A和Rn中的值按位'异或',结果送入A中

XRL     A,direct;A和direct中的值按位'异或',结果送入A中

XRL     A,@Ri;A和间址寻址单元@Ri中的值按位'异或',结果送入A中

XRL     A,#data;A和立即数data按位'异或',结果送入A中

XRL     direct,A ;direct中值和A中的值按位'异或',结果送入direct中

XRL     direct,#data;direct中的值和立即数data按位'异或',结果送入direct中。

练习:

MOV     A,#24H

MOV     R0,#37H

ORL         A,R0

XRL         A,#29H

MOV     35H,#10H

ORL         35H,#29H

MOV     R0,#35H

ANL     A,@R0

四、控制转移类指令

1.无条件转移类指令

1.短转移类指令

AJMPaddr11

2.长转移类指令

LJMPaddr16

3.相对转移指令

SJMPrel

上面的三条指令,如果要仔细分析的话,区别较大,但初学时,可不理会这么多,统统理解成:JMP        标号,也就是跳转到一个标号处。事实上,LJMP     标号,在前面的例程中我们已接触过,并且也知道如何来使用了。而AJMP和SJMP也是一样。那么他们的区别何在呢?在于跳转的范围不一样。好比跳远,LJMP一下就能跳64K这么远(当然近了更没关系了)。而AJMP  最多只能跳2K距离,而SJMP则最多只能跳256这么远。原则上,所有用SJMP或AJMP的地方都可以用LJMP来替代。因此在初学时,需要跳转时可以全用LJMP,除了一个场合。什么场合呢?先了解一下AJMP,AJMP是一条双字节指令,也就说这条指令本身占用存储器(ROM)的两个单元。而LJMP则是三字节指令,即这条指令占用存储器(ROM)的三个单元。下面是第四条跳转指令。

4.     间接转移指令

JMP      @A+DPTR

这条指令的用途也是跳转,转到什么地方去呢?这可不能由标号简单地决定了。让我们从一个实际的例子入手吧。

MOV   DPTR,#TAB      ;将TAB所代表的地址送入DPTR

MOV   A,R0           ;从R0中取数(详见下面说明)

MOV   B,#2

MUL   A,B            ;A中的值乘2(详见下面的说明)

JMP   A,@A+DPTR  ;跳转

TAB:    AJMP    S1          ;跳转表格

AJMP    S2

AJMP    S3


图2


图3

应用背景介绍:在单片机开发中,经常要用到键盘,见上面的9个按键的键盘。我们的要求是:当按下功能键A………..G时去完成不同的功能。这用程序设计的语言来表达的话,就是:按下不同的键去执行不同的程序段,以完成不同的功能。怎么样来实现呢?

看图2,前面的程序读入的是按键的值,如按下'A'键后获得的键值是0,按下'B'键后获得的值是'1'等等,然后根据不同的值进行跳转,如键值为0就转到S1执行,为1就转到S2执行。。。。如何来实现这一功能呢?

先从程序的下面看起,是若干个AJMP语句,这若干个AJMP语句最后在存储器中是这样存放的(见图3),也就是每个AJMP语句都占用了两个存储器的空间,并且是连续存放的。而AJMP   S1存放的地址是TAB,到底TAB等于多少,我们不需要知道,把它留给汇编程序来算好了。

下面我们来看这段程序的执行过程:第一句MOV DPTR,#TAB执行完了之后,DPTR中的值就是TAB,第二句是MOV A,R0,我们假设R0是由按键处理程序获得的键值,比如按下A键,R0中的值是0,按下B键,R0中的值是1,以此类推,现在我们假设按下的是B键,则执行完第二条指令后,A中的值就是1。并且按我们的分析,按下B后应当执行S2这段程序,让我们来看一看是否是这样呢?第三条、第四条指令是将A中的值乘2,即执行完第4条指令后A中的值是2。下面就执行JMP@A+DPTR了,现在DPTR中的值是TAB,而A+DPTR后就是TAB+2,因此,执行此句程序后,将会跳到TAB+2这个地址继续执行。看一看在TAB+2这个地址里面放的是什么?就是AJMP   S2这条指令。因此,马上又执行AJMP     S2指令,程序将跳到S2处往下执行,这与我们的要求相符合。

请大家自行分析按下键“A”、“C”、“D”……之后的情况。

这样我们用JMP    @A+DPTR就实现了按下一键跳到相应的程序段去执行的这样一个要求。再问大家一个问题,为什么取得键值后要乘2?如果例程下面的所有指令换成LJMP,即:

LJMP    S1,LJMP     S2……这段程序还能正确地执行吗?如果不能,应该怎么改?

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭