在手臂装配中使用分支的问题

时间:2019-03-14 21:21:43

标签: assembly arm

所以我的代码只显示两个输出,就像它没有分支到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

1 个答案:

答案 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')