기본적인 명령어

push eax 값을 스택에 저장
pop 스택 가장 맨 위에 있는 값을 eax에 저장
mov 메모리나 레지스터 값을 이동, 저장
inc dec inc : eax의 값 1 증가, dec : 1 감소
add 레지스터나 메모리의 값을 덧셈
sub 레지스터나 메모리의 값을 뺄셈
call 함수 호출
ret 호출 했던 지점에서 다음 지점으로 이동
cmp 뒤에 오는 값 2개 비교
jmp 특정 한 부분으로 분기
nop 아무 동작도 수행하지 않음

레지스터

32비트는 레지스터 이름이 E로 시작, 64비트는 R로 시작합니다.

범용 레지스터

eax 산술 연산, 함수 반환 값 처리 시 사용
ebx 주소 지정, 산수 변수 저장
ecx 반복할 때 반복 count 역할 수행
edx eax를 보조, 나누기 연산을 할 때 몫은 eax 나머지는 edx에 저장

인덱스 레지스터

esi 복사나 비교를 할 때 할 값의 주소 저장
edi 복사나 비교를 할 때 목적지 주소 저장

포인터 레지스터

EIP 다음 실행할 명령어의 주소를 저장, 현재 명령이 끝나면 이 레지스터에 저장되있는 주소에 명령 실행
ESP Stack pointer 에 가장 최근에 저장되어 있는 공간의 주소 저장
EBP Stack pointer 에 가장 처음 저장된 공간의 주소 저장