我想读取一个整数并写出它是负数还是正数。问题在于,输出始终为正数,即使我输入负数。此外,数字最多为4位,我希望它是4个字节。请注意,我是ARM汇编的完全初学者。以下是代码:
.text
.global main
main:
mov r0, #0 /* read system call */
ldr r1, =inp_str
mov r2, #4
mov r7, #3
swi 0
cmp r1,#0
blt w2
bge w1
w1:
mov r0, #1 /* write system call */
ldr r1, =string1
mov r2, #len1
mov r7, #4
swi 0
b e
w2:
mov r0, #1 /* write system call */
ldr r1, =string2
mov r2, #len2
mov r7, #4
swi 0
e:
mov r0, #0 /* exit system call */
mov r7, #1
swi 0
.data
string1: .ascii "positive "
len1 = . - string1
string2: .ascii "negative "
len2 = . - string2
inp_str: .asciz "%d"
cmp
指令)。 - kestasxread
系统调用会将文本读入缓冲区。您需要将其转换为数字,或者在这种情况下,只需检查是否有负号。%d
指示符是一个scanf
的东西,而不是read
。 - Jester