首页 > 解决方案 > 如何将寄存器与十六进制进行比较

问题描述

我正在用汇编程序编写一个程序,该程序假设获取按键的值,将其存储在寄存器中并查看该值是什么。

按下键 2 后,我设法将 0x00000002 保存到我想保存的寄存器中,该寄存器称为“r1”。

现在这就是我迷路的地方。我现在正在尝试将其与一些十六进制进行比较,以便我可以知道该值是什么并在其他函数中使用它。这就是我的代码的样子:

cmp r1, #0x30
beq savekey
cmp r1, #0x31
beq savekey
cmp r1, #0x32
beq savekey
cmp r1, #0x33
beq savekey
cmp r1, #0x34
beq savekey
cmp r1, #0x35
beq savekey
cmp r1, #0x36
beq savekey
cmp r1, #0x37
beq savekey
cmp r1, #0x38
beq savekey
cmp r1, #0x39
beq savekey

我认为的预期结果是,只要它识别出它是一个数字,它就会进入函数“savekey”。然而,这永远不会发生,它只是跳过所有这些。

我怎样才能在寄存器和十六进制之间进行比较,以便它可以正常工作?有没有更简单的方法可以写这个,所以我不必为每个数字写一个案例?

标签: assemblyarm

解决方案


我通过用#8替换例如#0x38来解决它。但是我仍然想知道如何简化代码。


推荐阅读