어셈블리의 기초 문법을 정리하겠습니다.
1. MOV
A의 값을 B에 대입합니다.
[ Ex) mov rax, 0 는 rax에 0을 대입하는것과 같음 ]
2. LEA
A의 값을 B의 값으로 연산을 포함하여 복사
[ Ex) LEA EAX, [EAX + 1000]은 EAX에 1000을 넣은 값을 다시 EAX에 삽입]
3. JMP
특정한 위치로 건너 뛰어 코드를 실행 (한번 위치로 가면 다시 돌아오지 X)
[ Ex) JMP A 는 A의 위치로 점프를 해 코드를 실행한다는것과 같음 ]
4. CALL
함수를 호출한 다음 다시 원래 위치로 돌아올 때 사용
[ JMP와 다른 점은 RET(리턴 주소) 를 이용해 다시 원래 위치로 돌아온다는 특징이 있음]
5. NOP
아무 작업도 하지 않는 명령어
[ 1Byte의 빈 공간을 차지]
6. RET
현재 함수가 끝난 뒤에 돌아갈 주소를 지정
7. PUSH
스택에 해당 값을 넣는다.
8. POP
스택에 있는 값을 빼낸다.
9. LEAVE
현재까지 메모리 스택을 비우고 EBP( = RBP)를 자신을 호출한 메모리 주소로 채운다.
[ 실행중인 함수를 종료하기 위해 정리하는 작업에 사용 ]
코딩을 하면서 더 자세히 익혀야겠습니다..
'Assemble' 카테고리의 다른 글
[Assemble] 반복문 구현하기 (0) | 2020.06.01 |
---|---|
[Assemble] 입력한 값을 출력하는 프로그램 만들기 (0) | 2020.05.30 |
[Assemble] 메모리 구조 (0) | 2020.05.27 |
[Assemble] Hello World! (0) | 2020.05.27 |