所以,我正在开发一个ARM程序,它从文件中获取一堆数字并告诉它们是偶数还是奇数。
问题在于我知道如何乘以0.5,但我不知道如何在ARM中做这样的高级语句
if (A / 2 == 0)
print even
else
print odd
以下是代码方面的内容:
@open input file
ldr r0,=FileName @ set Name for input file
mov r1,#0 @ mode is input
swi SWI_Open @ open file for input
bcs InFileError @ if error?
ldr r1,=InFileHandle @ load input file handle
str r0,[r1] @ save the file handle
@read integers from input file
NUMBERS:
ldr r0,=InputFileHandle @ load input file handle
ldr r0,[r0]
swi SWI_RdInt @ read the integer into R0
bcs EofReached @ Check Carry-Bit (C): if= 1 then EOF reached
@multiplication by 0.5 to test for odd or even
MUL R2 R0 0.5
@what is the test in ARM
@for ( R0 / 0.5 ) == a multiple of 1?
B NUMBERS
LOOP:
@end of program
Message1: .asciz"Hello World!"
EOL: .asciz "\n"
NewL: .ascii "\n"
Blank: .ascii " "
FileName: .asciz"input.txt"
.end
所以我认为从文件输入并读取整数的前两项工作正常。我不知道如何测试它可以被2整除的条件。我认为它乘以0.5然后下一步就是说即使这个数字没有小数在结尾处放置任何东西,但如果确实如此,那么被分成数字B的数字A是奇数。否则它甚至是?
答案 0 :(得分:0)
一个简短的回答:你不需要乘以0.5或类似的东西。您需要检查值的LSB(最低有效位)的值。偶数数字为0,奇数数字为1。
更新:您的“C”代码也是错误的。您想使用A%2,而不是A / 2