안녕하세요. 


명절 잘 보내셨죠!?


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

GT( signed Greater Than )


GT의 의미는 '큼(부호 있는 수)' 이며 Negative와 oVerflow 플래그 세트(1), Zero 플래그 클리어(0) / 


Negative와 oVerflow, Zero 플래그 클리어(0) 일 경우 입니다.


조건부 실행의 기능이 많아(?)질 수록 플래그의 설정이 많이 필요하죠?


GT 니모닉 조건을 이용하여 프로그램하나를 작성해 보겠습니다 ^^

1. 프로그램


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


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


#include <stdio.h>

int  asm_gt_ex ( void );

void bgt_test ( void )
{
printf("BGT TEST OK \n\n");
}

asm(" \n\
.global asm_gt_ex   \n\
asm_gt_ex:       \n\
mov r0, #3 \n\
mov r1, #2 \n\
cmp r0,  r1 \n\
bgt bgt_test \n\
mov pc, lr \n\
");

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

asm_gt_ex();

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

return 0;
}


결과를 예상해 보세요~


2. 프로그램 설명


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


핵심이 되는 소스는,


mov r0, #3

mov r1, #2

cmp r0,  r1

bgt bgt_test


입니다.


어떻게 설명할지 정말 뻔하죠!?? ^^


그래도 꿋꿋히 설명합니다!


mov r0, #3

mov r1, #2


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

r0 = 3;
r1 = 2;

그 후 


cmp r0, r1

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

수행한 결과가 크게되면,

bgt_test() 를 호출 후 종료합니다.


그렇지 않을 경우,


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


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


3. 프로그램 실행화면


다음은 실행 화면입니다.


asm_gt_ex.PNG


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

앞으로?

 

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