【问题标题】:How can I get an Input from a User with using CPUlator in ARM Assembly language如何在 ARM 汇编语言中使用 CPUlator 从用户那里获取输入
【发布时间】:2020-05-28 20:08:12
【问题描述】:

我目前正在开发一个新项目。我需要从用户那里得到输入。如何在 CPUlator 中使用 ARM 汇编语言从用户那里获取输入?

我目前所做的工作如下

.global _start
 _start:

LDR R11, =0xFF200100  // buttons adress
LDR R6, [R11] //adress to buttons for get value



 end: B end
 .end

CPUlator 链接:https://cpulator.01xz.net/?sys=arm-de1soc

任何帮助都会非常有帮助,谢谢。

【问题讨论】:

  • 什么样的输入?文本?数字?按钮按下?口语?
  • 我从用户那里得到的值必须是数字。
  • 寄存器中的值本身?一个ASCII字符串?
  • ...请说出口语...

标签: assembly arm armv7


【解决方案1】:

嗯,你在正确的轨道上。 CPUlator 的按钮对应于内存中固定地址 0xFF200050 处的字中​​的位。所以下面会把这个词读入r0寄存器:

ldr r0, =0xFF200050  //Load the address into a register
ldr r0, [r0] //Load the contents of that address
//Now let's do something with that number...

例如,如果您检查按钮 0 和 2,则在 r0 中将得到 5。会这样吗?

可以读取按钮状态的内存地址在右侧CPUlator的面板标题中很有帮助。开关面板对应于 0xFF200040 处的字。我不确定 0xFF200100 是什么。在物理设备上,按钮和开关可能是不同的,但在 CPUlator 中,我看不出有任何区别。使用您更喜欢的输入源。

设备中还有一个键盘面板,但对它的处理会更复杂。

【讨论】:

  • 非常感谢您的帮助。我尝试从键盘面板获取输入。但正如你所提到的,使用 SW 更有意义。但是当我们以二进制形式从用户那里获取输入时,这对用户来说并不友好。如何使用 SW 获取十进制输入?因此,如果用户按 1 然后按 2,则输入必须是数字 12。
  • 这有点问题。程序如何知道用户已完成提供数字并且程序可以读取它?想象他们想输入 11。所以他们检查 1。程序读取它。然后呢?
  • 用户必须在一定的时间间隔内输入输入。我可以为此使用计时器。
  • 对我来说,这也不是很友好:) 但这是你的项目。此外,您仍然需要一种指示输入结束的方法,即某种 ENTER 键。无论如何,我有没有回答这个问题?
  • 是的,再次感谢您:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-03
  • 1970-01-01
  • 1970-01-01
  • 2019-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多