안녕하세요.


오늘도 니모닉 조건을 이용하여 프로그램을 해보겠습니다^^

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


위 코드를 수행하기 위해선 어떻게 되야 할까요?

r0와 r1이 같지 않음이여야 겠죠?


프로그램을 컴파일해서 실행해 보겠습니다.

3. 프로그램 실행화면


다음은 실행 화면입니다.


asm_ne_ex.PNG


여러분들도 실행해 보세요^^

앞으로?

 

다음글에도 니모닉 조건을 이용하여 프로그램해 보겠습니다 ^^