어셈블리어 명령어 모음ARM

http://hasu0707.nflint.com/xe/index.php?mid=computing_singleboardcomputer&document_srl=4487

 

ARM 어셈블리어 정리 - computing/single-board computer - 뿡뿡너구리의 블로그

출처1 : http://downrg.com/417출처2 : http://achiven.tistory.com/entry/%EC%A3%BC%EC%9A%94-ARM-%EC%96%B4%EC%85%88%EB%B8%94%EB%A6%AC-%EB%AA%85%EB%A0%B9출처3 : http://egloos.zum.com/recipes/v/4986854>> ARM Reference : ARM_Reference-rE.Ejected.pdf ■ ARM Register와 Con

hasu0707.nflint.com

 

 

명  령  어   |  설명

Data Transfer



MOV Move 데이터 이동 (전송)



PUSH Push 오퍼랜드의 내용을 스택에 쌓는다



POP Pop 스택으로부터 값을 뽑아낸다.



XCHG Exchange Register/memory with Register 첫 번째 오퍼랜드와 두 번째 오퍼랜드 교환

 



IN

Input from AL/AX to Fixed port

오퍼랜드로 지시된 포트로부터 AX에 데이터 입력



OUT

Output from AL/AX to Fixed port

오퍼랜드가 지시한 포트로 AX의 데이터 출력

 


XLAT

Translate byte to AL

 


BX:AL이 지시한 데이블의 내용을 AL로 로드

 


LEA

Load Effective Address to Register

메모리의 오프셋값을 레지스터로 로드

 


LDS

Load Pointer to DS

REG←(MEM), DS←(MEM+2)

 


LES

Load Pointer ti ES

REG←(MEM), ES←(MEM+2)

 

 


LAHF

Load AH with Flags

플래그의 내용을 AH의 특정 비트로 로드

 

 


SAHF

Store AH into Flags

AH의 특정 비트가 플래그 레지스터로 전송

 



PUSHF

Push Flags

플래그 레지스터의 내용을 스택에 쌓음



POPF

Pop Flags

스택으로부터 플래그 레지스터로 뽑음

 



Arithmetic



ADD

Add

캐리를 포함하지 않은 덧셈



SBB

Subtract with Borrow

캐리를 포함한 뺄셈



DEC

Decrement

오퍼랜드 내용을 1 감소



NEG

Change Sign

오퍼랜드의 2의 보수, 즉 부호 반전



CMP

Compare

두 개의 오퍼랜드를 비교한다

 



ADC

Add with Carry

캐리를 포함한 덧셈

 



INC

Increment

오퍼랜드 내용을 1 증가

 



AAA

ASCII adjust for Add

덧셈 결과 AL값을 UNPACK 10진수로 보정

 



DAA

Decimal adjust for Add

덧셈 결과의 AL값을 PACK 10진수로 보정

 



SUB

Subtract

캐리를 포함하지 않은 뺄셈

 


AAS

ASCII adjust for Subtract

뺄셈 결과 AL값을 UNPACK 10진수로 보정

 



DAS

Decimal adjust for Subtract

뺄셈 결과의 AL값을 PACK 10진수로 보정

 



MUL

Multiply (Unsigned)

AX와 오퍼랜드를 곱셈하여 결과를 AX 또는 DX:AX에 저장

 



IMUL

Integer Multiply (Signed)

부호화된 곱셈



AAM

ASCII adjust for Multiply

곱셈 결과 AX값을 UNPACK 10진수로 보정

 



DIV

Divide (Unsigned)

AX 또는 DX:AX 내용을 오퍼랜드로 나눔. 몫은 AL, AX 나머지는 AH, DX로 저장

 



IDIV

Integer Divide (Signed)

부호화된 나눗셈

 



AAD

ASCII adjust for Divide

나눗셈 결과 AX값을 UNPACK 10진수로 보정

 



CBW

Convert byte to word

AL의 바이트 데이터를 부호 비트를 포함하여 AX 워드로 확장

 



CWD

Convert word to double word

AX의 워드 데이터를 부호를 포함하여 DX:AX의 더블 워드로 변환

 



Logic



NOT

Invert

오퍼랜드의 1의 보수, 즉 비트 반전

 



SHL/SAL

Shift logical / arithmetic Left

왼쪽으로 오퍼랜드만큼 자리 이동 (최하위 비트는 0)

 



SHR

Shift logical Right

오른쪽으로 오퍼랜드만큼 자리 이동 (최상위 비트 0)

 



SAR

Shift arithmetic Right

오른쪽 자리이동, 최상위 비트는 유지

 



ROL

Rotate Left

왼쪽으로 오퍼랜드만큼 회전 이동

 



ROR

Rotate Right

오른쪽으로 오퍼랜드만큼 회전 이동

 



RCL

Rotate through Carry Left

캐리를 포함하여 왼쪽으로 오퍼랜드만큼 회전 이동

 



RCR

Rotate through Carry Right

캐리를 포함하여 오른쪽으로 오퍼랜드만큼 회전 이동

 



AND

And

논리 AND



TEST

And function to Flags, no result

첫 번째 오퍼랜드와 두 번째 오퍼랜드를 AND하여 그 결과로 플래그 세트

 



OR

Or

논리 OR



XOR

Exclusive Or

배타 논리 합 (OR)

 



String Manipulation

 


REP

Repeat

REP 뒤에 오는 스트링 명령을 CX가 0이 될 때까지 반복

 



MOVS

Move String

DS:SI가 지시한 메모리 데이터를 ES:DI가지시한 메모리로 전송

 



CMPS

Compare String

DS:SI와 ES:DI의 내용을 비교하고 결과에 따라 플래그 설정

 



SCAS

Scan String

AL 또는 AX와 ES:DI가 지시한 메모리 내용 비교하고 결과에 따라 플래그 설정

 



LODS

Load String

SI 내용을 AL 또는 AX로 로드

 



STOS

Store String

AL 또는 AX를 ES:DI가 지시하는 메모리에 저장

 



Control Transfer

CALL

Call

프로시저 호출

 



JMP

Unconditional Jump

무조건 분기



RET

Return from CALL

CALL로 스택에 PUSH된 주소로 복귀



JE/JZ

Jump on Equal / Zero

결과가 0이면 분기



JL/JNGE

Jump on Less / not Greater or Equal

결과가 작으면 분기 (부호화된 수)

 



JB/JNAE

Jump on Below / not Above or Equal

결과가 작으면 분기 (부호화 안 된 수)

 



JBE/JNA

Jump on Below or Equal / not Above

결과가 작거나 같으면 분기 (부호화 안 된 수)

 



JP/JPE

Jump on Parity / Parity Even

패리티 플레그가 1이면 분기

 



JO

Jump on Overflow

오버플로가 발생하면 분기

 



JS

Jump on Sign

부호 플레그가 1이면 분기

 



JNE/JNZ

Jump on not Equal / not Zero

결과가 0이 아니면 분기

 



JNL/JGE

Jump on not Less / Greater or Equal

결과가 크거나 같으면 분기 (부호화된 수)

 



JNLE/JG

Jump on not Less or Equal / Greater

결과가 크면 분기 (부호화된 수)

 



JNB/JAE

Jump on not Below / Above or Equal

결과가 크거나 같으면 분기 (부호화 안 된 수)

 



JNBE/JA

Jump on not Below or Equal / Above

결과가 크면 분기 (부호화 안 된 수)

 



JNP/JPO

 

Jump on not Parity / Parity odd

패리티 플레그가 0이면 분기

 



JNO

Jump on not Overflow

오버플로우가 아닌 경우 분기

 



JNS

Jump on not Sign

부호 플레그가 0이면 분기

 



LOOP

Loop CX times

CX를 1감소하면서 0이 될 때까지 지정된 라벨로 분기

 



LOOPZ/LOOPE

Loop while Zero / Equal

제로 플레그가 1이고 CX≠0이면 지정된 라벨로 분기

 



LOOPNZ/LOOPNE

Loop while not Zero / not Equal

제로 플레그가 0이고 CX≠0이면 지정된 라벨로 분기

 



JCXZ

Jump on CX Zero

CX가 0이면 분기

 



INT

Interrupt

인터럽트 실행

 



INTO

Interrupt on Overflow

오버플로우가 발생하면 인터럽트 실행

 


IRET

Interrupt Return

인터럽트 복귀 (리턴)

 

Processor Control



CLC

Clear Carry

캐리 플레그 클리어



CMC

Complement Carry

캐리 플레그를 반전



CLD

Clear Direction

디렉션 플레그를 클리어



CLI

Clear Interrupt

인터럽트 플레그를 클리어



HLT

Halt

정지



LOCK

Bus Lock prefix

 

STC

Set Carry

캐리 플레그 셋



NOP

No operation

 

STD

Set Direction

디렉션 플레그 셋



STI

Set Interrupt

인터럽트 인에이블 플레그 셋

 



WAIT

Wait

프로세서를 일지 정지 상태로 한다

 



ESC

Escape to External device

이스케이프 명령

댓글

Designed by JB FACTORY