안녕하세요.


오늘도 역시 니모닉 조건 하나를 선택하여 공부해 보겠습니다 ^^

LS( unsigned Lower / Same )


LS의 의미는 '작거나 같음' 이며 Carry 플래그의 클리어(0) / Zero 플래그 세트(1) 일 경우 입니다.


LS 니모닉 조건은 어떻게 동작하는지 프로그램을 하나 만들어 보겠습니다 ^^

1. 프로그램


다음은 ls 니모닉 조건을 이용한 ls.c 예제 프로그램 입니다.


다음 프로그램은 r0과 r1를 비교하여 연산 결과가 작을 경우 bls_test()를 호출하는 프로그램 입니다.



#include <stdio.h>

int  asm_ls_ex ( void );

void bls_test ( void )
{
printf("BLS TEST OK \n\n");
}

asm(" \n\
.global asm_ls_ex   \n\
asm_ls_ex:       \n\
mov r0, #2 \n\
mov r1, #3 \n\
cmp r0,  r1 \n\
bls bls_test \n\
mov pc, lr \n\
");

int main ( void )
{
printf("\n+------------------+\n");
printf("|ARM Instruction HI|");
printf("\n+------------------+\n\n");

asm_ls_ex();

printf("Program END\n\n");

return 0;
}


결과를 예상해 보세요~

2. 프로그램 설명


프로그램을 하나하나 살펴 보겠습니다.


핵심이 되는 소스는,


mov r0, #2

mov r1, #3

cmp r0,  r1

bls bls_test


입니다.


계속 제 글을 읽어 주신 분들은 외우실 겁니다!


지겨워도 어쩔수 없습니다^^


mov r0, #2

mov r1, #3


는 다음과 같이 표현할 수 있습니다.

r0 = 2;
r1 = 3;

그 후 

cmp r0, r1

r0와 r1을 비교연산 합니다.

수행한 결과가 작거나 같을 경우

bls_test()


를 호출합니다.


그렇지 않을 경우, 즉 수행 결과가 클 경우


프로그램은 그냥 종료 됩니다.


프로그램을 실행시켜 결과를 확인해 보겠습니다 ^^

3. 프로그램 실행화면


다음은 실행 화면입니다.

asm_ls_ex.PNG


여러분들은 제가 만든 프로그램을 검증 후, 연산 후 값이 같을 경우를 테스트 해보세요 ^^

앞으로?

 

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