比较字符(ARM程序集)

时间:2017-01-23 13:57:50

标签: assembly char compare character

我正在尝试将Char-Array中的Character与我的汇编代码中的char进行比较。

这是我用来启动汇编代码的C代码:

char a[] = "abc";
char b = 'a'; 
int size = 3;

int d = _asm_main(a);
printf("Char a: %s\n",a);
printf("Erg:%d\n",d);

这是汇编代码:

_asm_main:

push {r6,r7,r8,lr}

mov r8,r0

ldr r7,[r8,#2]
mov r6,r7
b compare

compare:

cmp r6,#'c'
beq true
b false

true:

mov r0,#1
b end

false:

mov r0,#2
b end

end: 

pop {r6,r7,r8,pc}

BX lr

它适用于'c'但是如果我用'a'或'b'尝试它我总是进入假标本。我不明白为什么它适用于三个中的一个而不适用于其他两个。

1 个答案:

答案 0 :(得分:0)

使用ldrb处理ASCII字节和gdb调试器的粗略插图。

COUNT

GDB:

.data
        array:          .string "abc"
.text
        .global _start
_start:
        nop
        ldr r0,=array
        ldrb r1, [r0,#0]
        ldrb r2, [r0,#1]
        ldrb r3, [r0,#2]
...