강좌 & 팁
안녕하세요.
오늘도 니모닉 조건을 이용하여 프로그램을 해보겠습니다^^
NE (Not Equal)
NE의 의미는 '같지 않음'이며 상태 플래그는 Z가 0일 경우 입니다.
줄줄줄 말을 늘어 놓는것 보다.
프로그램 한줄이 더 이해가 빠르겠죠!?
자, NE 니모닉 조건을 이용하여 프로그램 하나를 작성해 보겠습니다!
1. 프로그램
다음은 EQ 니모닉 조건을 이용한 eq.c 예제 프로그램 입니다.
r0와 r1을 비교하여 같지 않음 상태이면 bne_test()를 호출하고 같은 상태이면 그냥 리턴하는 프로그램입니다.
#include <stdio.h>
int asm_ne_ex ( void );
void bne_test ( void )
{
printf("BNE TEST OK \n\n");
}
asm(" \n\
.global asm_ne_ex \n\
asm_ne_ex: \n\
mov r0, #3 \n\
mov r1, #2 \n\
cmp r0, r1 \n\
bne bne_test \n\
mov pc, lr \n\
");
int main ( void )
{
printf("\n+------------------------+\n");
printf("|ARM Instruction Not Equa|");
printf("\n+------------------------+\n\n");
asm_ne_ex();
printf("Program END\n\n");
return 0;
}
2. 프로그램 설명
핵심 소스는
mov r0, #3
mov r1, #2
cmp r0, r1
bne bne_test
이겠죠!?
감이 좋으신 분들은 느끼셨을 겁니다!
저번글과 별반 차이가 없음을요!!
그렇죠?
감이 안오시는 분들을 위해 하나하나 살펴 보겠습니다.
mov r0, #3
mov r1, #2
위 코드를 수행하면 다음과 같이 표현할 수 있습니다.
r0 = 3;
r1 = 2;
맞나요?
cmp r0, r1
위 코드를 수행하면,
r0와 r1을 비교 합니다.
만약 r0와 r1이 같으면?
mov pc, lr
위 코드를 수행하여 그냥 리턴하겠죠?
bne bne_test
프로그램을 컴파일해서 실행해 보겠습니다.
3. 프로그램 실행화면
다음은 실행 화면입니다.
앞으로?
다음글에도 니모닉 조건을 이용하여 프로그램해 보겠습니다 ^^