我目前有一个“循环”用于打印R4中的数字,然后使用Stdout将该数字移动到R1。但是我想只打印偶数。因此,如果我打印所有内容,例如我的序列将输出为2,3,5,6,7,9,10 ...等,但我只想打印出偶数(2,6,10 ......等)
这就是我想要的,但我不确定ARM程序集是否允许这样做:
任何帮助将不胜感激..
答案 0 :(得分:2)
数字的均匀性可由其第0位确定。奇数有一个,偶数有零。
在ARM程序集中,要执行条件,您需要执行影响标志的算术运算。要检查单个位的值,可以使用1来执行AND,或者使用1执行TST。后者是没有目标的AND - 它执行按位AND但会丢弃结果。 所以,回顾一下:
TST r4, #1 ; TST with 1, like AND with 1, will zero out all bits but the rightmost one
BNE Odd ; zero flag not set - meaning it's odd
MOV R1, R4
; Output... Do you know how?
Odd:
; Continue with the loop...