1
문자 배열에서 문자를 내 어셈블리 코드의 char과 비교하려고합니다. 문자 비교 (ARM 어셈블리)
이
내가 어셈블리 코드를 시작하는 데 사용하는 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'로 항상 거짓 lable에 들어갑니다. 나는 그것이 왜 다른 하나가 아니라 3 명 중 한 명에게는 효과가 있는지 얻지 못합니다.
. 'ldrb'를 사용해야합니다. 추신 : 디버거를 사용하는 법을 배워보십시오. 또한'bx lr'은 여러분이'pop'을'pc'에 썼기 때문에 결코 도달하지 않습니다. – Jester