안녕하세요.


오늘도 ARM 명령어 하나를 선택하여 공부해 보겠습니다.00_룰루.gif

MVN 명령어


예전에 MOV 명령어 기억하시죠?


MOV는 ARM 명령어중 가장 간단한 데이터 이동 명령어라 설명한 적있습니다.


기억 나시죠?


기억이 안나신다면 -->>> 클릭~ ( ARM 명령어를 배워보자!(3) - mov )


MVN 명령어도 데이터 이동 명령어라 할수 있습니다.


MVN 명령어는 32비트값의 NOT값을 레지스터로 복사 하는 기능을 하는 명령어 입니다.


역시 말보다는 한줄의 코드가 와 닿겠죠?빵긋.gif


프로그램 하여 어떤 기능을 하는 명령어이지 확실하게 알아보겠습니다.

1. 프로그램

 

다음은 프로그램은 mvn 명령어를 이용해 리턴되는 값을 출력하는 프로그램입니다.


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



#include <stdio.h>

int asm_mvn_ex( void );

asm(" \n\
.global asm_mvn_ex \n\
asm_mvn_ex: \n\
mvn r0, #0xFFFFFFFF \n\
mov  pc, lr \n\
");

int main ( void )
{
   int mvn;

  printf("\n+------------------+\n");
  printf("|ARMInstruction MVN|\n");
   printf("+-------------------+\n\n");
mvn = asm_mvn_ex(); printf("mvn = 0x%08X\n\n", mvn ); printf("Program END\n\n"); 
return 0; }



결과를 예상해 보세요~

2. 프로그램 설명


프로그램은 간단합니다!


mvn 명령어는 비트를 반전(NOT)하여 레지스터에 이동하는 기능을 했던 것입니다.


예를들어


mvn r0, 0x00000000


요렇게 하면


r0 = 0xFFFFFFFF


이렇게 되겠죠!?


그럼 mvn.c 프로그램은 어떤 값을 출력 하게될까요?


프로그램해서 검증해 보세요!!

3. 프로그램 실행화면


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


asm_mvn_ex.PNG


여러분도 같은 결과가 나오나요?

앞으로?

 

다음 글에도 역시 ARM 명령어중 하나를 선택하여 프로그램해 보겠습니다.


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