관리 메뉴

KorSA

어셈블리어 명령어 정리 본문

Study/임베디드OS (RTOS)

어셈블리어 명령어 정리

Praiv. 2024. 3. 31. 12:04
320x100

1. LDR (Load Register): 메모리에서 데이터를 레지스터로 로드하는 명령어입니다. 예를 들어, LDR R0, [R1]은 R1 레지스터에 저장된 주소에서 데이터를 읽어서 R0 레지스터에 저장합니다.

 

2. B (Branch): 프로그램의 실행 흐름을 변경하는 명령어입니다. 주로 조건부 또는 무조건적인 점프를 수행하기 위해 사용됩니다. 예를 들어, B label은 주어진 레이블 위치로 실행 흐름을 점프시킵니다.

>> [ B . ] 명령어는 현재 위치로 실행 흐름을 변경하는 코드로 무한루프를 발생시키고자 할 때 사용한다.

 

3. MRS (Move Register to System register): 시스템 레지스터(예: CPSR)의 값을 일반 레지스터로 이동시키는 명령어입니다. 이를 통해 프로그램은 시스템 레지스터의 상태를 읽을 수 있습니다. 예를 들어, MRS R0, CPSR은 현재 프로그램 상태 레지스터(CPSR)의 값을 R0 레지스터로 복사합니다.

 

4. BIC (Bit Clear): 레지스터의 특정 비트를 클리어(0으로 설정)하는 논리 연산 명령어입니다. 예를 들어, BIC R0, R1, #0xFF는 R1의 값에서 하위 8비트를 클리어하고 그 결과를 R0에 저장합니다.

 

5. ORR (Logical OR): 두 레지스터의 값을 논리 OR 연산한 후 그 결과를 다른 레지스터에 저장하는 명령어입니다. 예를 들어, ORR R0, R1, R2는 R1과 R2의 값을 OR 연산한 후 결과를 R0에 저장합니다.

 

6. MSR (Move to System register): 일반 레지스터의 값을 시스템 레지스터로 이동시키는 명령어입니다. 이 명령어는 시스템 레지스터(예: CPSR)의 값을 설정할 때 사용됩니다. 예를 들어, MSR CPSR_c, R0은 R0 레지스터의 값을 조건 필드에 해당하는 CPSR의 부분으로 복사합니다.

 

7. BL (Branch with Link): 서브루틴 호출을 위해 사용되는 명령어입니다. 실행 흐름을 주어진 주소로 점프시키고, 반환 주소를 LR(Link Register)에 저장합니다. 이를 통해 서브루틴 실행 후 원래 코드로 돌아올 수 있습니다. 예를 들어, BL function은 function이라는 레이블의 함수나 서브루틴을 호출하고 실행이 완료된 후 원래 위치로 돌아올 수 있도록 합니다.

728x90
728x90
Comments