ARM汇编语言设置条件码续

2)条件转移

在程序中可通过条件码的使用让微处理器决定是否进行转移。例如,为了实现循环操作,往往需要转移回到循环的开始,但是这种转移应该仅发生在执行到所需的循环次数之前,这以后转移应被跳过。这时,在转移指令后加上合适的条件,就可恨容易地实现该功能。

条件转移还可用来控制循环的退出。这时,转移与条件码紧密相连,只有当条件码的值满足条件时,相应的转移才被执行。一种典型的循环控制指令序如下所示:

       MOV             R0,#0                 ;计数器初始化

LOOP     …

       ADD              R0,R0,#1          ;循环计数器加1

       CMP              R0,#10               ;与循环的限制比较

       BNE              LOOP                   ;如果不相等则返回

              …                                       ;否则循环中止

例中给出了条件转移是BNE,即“不等则转移”条件转移的形式共有十几种,表中同一栏内的一对条件的涵义相同,二进制代码也相同,但两者都是有用的,因为在特定的环境中每一种条件都可能使得汇编语言源代码的编译更加容易。在表中提到有符号数和无符号数的比较时,并不是说指令可区分有符号数和无符号数,知识说明本条指令可对有符号数进行大小比较,比较的结果是正确的;当操作数是有符号数时,结果不一定正确。


通知公告
编辑观点
理事会
参考资料
版权声明

凡《网络安全与数据治理》(原《信息技术与网络安全》)录用的文章,如作者没有关于汇编权、翻译权、印刷权及电子版的复制权、信息网络传播权与发行权等版权的特殊声明,即视作该文章署名作者同意将该文章的汇编权、翻译权、印刷权及电子版的复制权、信息网络传播权与发行权授予本刊,本刊有权授权本刊合作数据库、合作媒体等合作伙伴使用。同时,本刊支付的稿酬已包含上述使用的费用,特此声明。

《网络安全与数据治理》(原《信息技术与网络安全》)编辑部