안녕하세요.


오랫만 입니다 ^^


그간 잘 지내셨죠!?


저는 휴식 시간을 조금 가졌답니다 ^^


잘 쉬었으니, 오늘도 니모닉 조건을 이용하여 공부해 보겠습니다.

LE( Signed less than / equal )


LE의 의미는 '작거나 같음 (부호 있는 수)' 이며 Zero 플래그 세트(1) 또는 


Negative 세트(1) 와 oVerflow 클리어(0) 또는 


Negative 세트(0) 와 oVerflow 클리어(1) 가 될 경우 입니다. 


위에 플래그 세트/클리어 라는 말은,


기억이 나실지 모르겠지만 ARM 명령어를 배워보자!(32) - 조건부 실행(1) 에 있는 조건 니모닉 표 중 상태 플래그에 적혀 있는 기호를 말로 표현한 것입니다.


설명과 같은 일을 하는 니모닉 조건인지 프로그램 하나를 만들어 검증해 보겠습니다 ^^

1. 프로그램


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


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



#include <stdio.h>

int  asm_le_ex ( void );

void ble_test ( void )
{
printf("BLE TEST OK \n\n");
}

asm(" \n\
.global asm_le_ex   \n\
asm_le_ex:       \n\
mov r0, #2 \n\
mov r1, #3 \n\
cmp r0,  r1 \n\
ble ble_test \n\
mov pc, lr \n\
");

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

asm_le_ex();

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

return 0;


결과를 예상해 보세요~

2. 프로그램 설명


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


핵심이 되는 소스는,

mov r0, #2
mov r1, #3
cmp r0, r1
ble ble_test

입니다.

먼저 

mov r0, #2
mov r1, #3

를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

r0 = 2;
r1 = 3;

그 후 

cmp r0, r1

를 실행하면 r0와 r1를 비교 연산을 통하여 작고 큼을 비교합니다.

3. 프로그램 실행화면


다음은 실행 화면입니다.


asm_ex_le.PNG

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

앞으로?

 

드디어 다음 글로 니모닉 조건이 끝이 날것 같습니다.


다음 글에서 뵙겠습니다 ^^