MOV : 값을 대입
LEA : 주소를 가져옴
XOR : 초기화 , XOR연산
AND : AND 연산
OR : OR 연산
JMP : 원하는 주소나 라벨로 점프
JNE : 같지 않을 경우 점프
JE : 같은 경우 점프
JNZ : 0이 아닌경우 점프
JZ : 0인 경우 점프
PUSH : 값을 잠시 저장
POP : 원래 값 회복
CMP : 비교 명령
http://jkimine.tistory.com/5
CALL은 조건 분기형태가 존재하지 않지만, JMP는 조건 분기형태가 존재한다.
CALL은 스택에 백업을 해 두는 반면 JMP는 백업하지 않고 바로 변경한다.
범용 레지스터
EAX : 곱셈과 나눗셈 명령에서 사용, 함수 리턴값 저장
EBX : ESI나 EDI와 결합하여 인덱스에 사용
ECX : 반복명령어 사용시 반복 카운터로 사용
EDX : EAX와 같이 쓰이며 부호 확장 명령에 쓰임
ESI : 데이터 복사나 조작시 소스데이터의 주소값 저장
EDI : 복사 작업시 목적지의 주소 저장
ESP : 스택프레임의 끝지점 주소 저장
EBP : 스택프레임의 시작 주소 저장
명령 포인터
EIP : 다음에 실행해야 할 명령어가 존재하는 주소가 저장
세그먼트 레지스터
CS : 실행 가능한 명령어가 존재하는 세그먼트의 오프셋이 저장
DS : 프로그램에서 사용되는 데이터가 존재하는 세그먼트의 오프셋이 저장
SS : 스택이 존재하는 세그먼트의 오프셋이 저장
FS , GS : 기억 장소 요구사항을 다루기 위해서 추가된 여분의 세그
ES : 스트링 연산에서 사용된다.
플래그 레지스터
CF : 부호가 없는 연산결과가 용량보다 클 때
ZF : 연산결과가 0일때
OF : 부호있는 연산 결과가 용량보다 클때
SF : 연산 결과가 음수가 되었을 때
DF : 문자열 철에서 연속되는 문자열의 처리방향에 따라 세트
32비트 | 16비트 | 상위 8비트 | 하위 8비트 |
EAX | AX | AH | AL |
EBX | BX | BH | BL |
ECX | CX | CH | CL |
EDX | DX | DH | DL |
소스코드 -> 컴파일러 -> 어셈블리어 -> 어셈블러 -> 기계어