안녕하세요~ 


오늘도 역시 ARM 명령어를 하나 배워볼까요?


혹시 논리 명령어 기억하시나요? 


AND, ORR, EOR 이라는 명령어 말이죠! 


위 명령어 말고 한가지 명령어가 더 있었네요!


오늘은 그 명령이 무엇인지 알아 보겠습니다. 빵긋.gif

BIC 명령어


BIC 명령어는 논리 명령어 중 하나이며,


비트 클리어( AND NOT ) 기능을 하는 명령어 입니다 ^^


AND  기능은 뭐였죠~?


다시 한번 보실 분은 아래 링크를 클릭~


ARM 명령어를 배워보자!(19) - and


BIC 명령어의 기능을 알아보기 위한 프로그램을 해보겠습니다. 번뜩.gif

1. 프로그램


다음 프로그램은 2개의 인자 값을 BIC 연산 후, 그 값을 출력하는 프로그램입니다. 


다음은 BIC 명령어를 이용한 bic.c 예제 프로그램입니다.



#include <stdio.h>

int  asm_bic_ex ( int x, int y);

asm(" \n\
.global asm_bic_ex \n\
asm_bic_ex: \n\
bic r0, r0, r1 \n\
mov pc, lr      \n\
");

int main ( void )
{
int  bic;

printf("\n+-------------------+\n");
printf("|ARMInstruction BIC|\n");
printf("+-------------------+\n\n");

bic = asm_bic_ex( 0x1111, 0x1010);         
printf("cpsr = %08X\n\n", bic );
return 0; }


실행 결과를 예상해 보세요~ 

2. 프로그램 설명


프로그램이 정말 간단하죠?


핵심 소스는 당연히!


bic r0, r0, r1 


이 되겠습니다!


위 코드의 의미는 정말정말~ 간돤합니다!


어떻게 계산되는지 예상해 보겠습니다.


r0와 r1에는 각각 다음과 같은 값이 있겟죠?


r0 = 0x1111

r1 = 0x1010


BIC명령이 AND NOT 인 성질을 이용하면!


먼저 AND 연산을 하고,


0x1111 & 0x1010 = 0x1010


그 후 NOT 연산을 하면!


~(0x1010) = 0x0101 


답은 위와 같겠죠!? 


두근구든~ 실행 시켜 보겠습니다!

3. 프로그램 실행화면


다음은 프로그램 실행화면 입니다.


asm_bic_ex.PNG


여러분도 실행해 보세요!

앞으로?

 

다음글에서도 역시 ARM 명령어중 하나를 선택하여 알아보겠습니다.


빠른만남을 원하시면 http://ms-osek.org/ 여기로 찾아오세요~bye.gif