어셈블리 기초 명령어 셋

아래는 Intel 아키텍쳐의 어셈블리 명령어 리스트이다.

mov A, B B에서 A로 값을 이동
cmp A, B 두 값을 비교하여 결과를 Flags 레지스터에 업데이트
rep instruction insturction을 CX 레지스터의 값 만큼 반복 수행
call X Stack에 Return Address를 삽입하고 jump 수행
jmp X 무조건 해당 주소로 jump
je, ja X 조건 분기 명령. Flags 레지스터의 플레그 값에 따라서 jmp 수행(보통 cmp와 같은 명령어와 함께 사용)
push X 스택에 값을 저장
pusha, pushad 스택에 모든 레지스터 값을 저장. EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI 저장
pop X 스택에서 값을 꺼냄
popa, popad 스택에서 모든 레지스터의 값을 꺼냄. 위의 pushad 명령과 같은 순서의 레지스터 사용
add A, B A에 B의 값을 더함
sub A, B A에서 B의 값을 뺌
mul A EAX의 값과 A의 값을 곱하여 A에 저장
inc A A의 값을 1 증가시킴
int X X번째의 Software Interrupt를 발생시킴
ret, retn Stack에 포함된 Return Address를 꺼내서 해당 주소로 복구(보통 Call 명령과 같이 사용)
iret, iretd 인터럽트 처리 시에 모든 처리를 완료하고 다시 태스크로 복구
or A, B A에 B값을 OR
xor A, B A에 B값을 XOR
not A A의 값을 반전(0→1, 1→0)
lgdt GDT를 설정(Intel Architecture 특수 명령)
lidt IDT를 설정(Intel Architecture 특수 명령)
lldt LDT를 설정(Intel Architecture 특수 명령)
ltr Task Register에 TSS를 설정(Intel Architecture 특수 명령)
clts Task Switching 플래그를 0으로 설정(Intel Architecture 특수 명령)
cli 인터럽트 불가 설정
sti 인터럽트 가능 설정
fninit FPU 초기화 명령(x87 Floating Point Unit 관련 명령)

전부 나열한 것은 아니고 아주 기본적인 명령어들이다.

Intel(R) Architecture Software Developer's Manual, Volume 2: Instruction Set Reference Manual을 보면 위에 나열한 명령어 외 다른 것들을 볼 수 있다.

참조 : http://kkamagui.springnote.com/pages/339546