所以我的代码只显示两个输出,就像它没有分支到then
语句一样。我刚刚开始学习arm,但无法弄清楚发生了什么以及为什么它不会分支。任何帮助都将是非常有用的,因为我总共花了大约5个小时没有任何进展。
程序应以数字作为输入并显示大于或小于100的数字
ldr r3, =intInput
ldr r3, [r3]
cmp r3, #100
bhs then
then:
ldr r0, =strOutputNumLarger
bl printf
else:
ldr r0, =strOutputNumSmaller
bl printf
答案 0 :(得分:1)
条件分支bhs then
转到then:
(如果已采用),如果未采用,则转到else:
。
bhs else:
没有明显的分支。当然,第一个分支应该是else:
并交换消息。
在第一个分支和链接之后,还有另一对相似的指令,位于then:
。因此,应该存在一个无条件分支,以通过跳过它来防止else:
代码块落入ldr r3, =intInput
ldr r3, [r3]
cmp r3, #100
bhs else ; changed destination
then:
ldr r0, =strOutputNumSmaller ; swapped messages
bl printf
b cont ; skip next code block
else:
ldr r0, =strOutputNumLarger
bl printf
cont:
代码块。
所以代码应该是
Ether(dst = 'ff:ff:ff:ff:ff:ff') / Raw('Hi')