본문 바로가기
공부,일/어셈블리

ch3 -1 어셈블리 명령어 해석

by fromnothing1 2021. 8. 12.

명령어 해석

.386 는 80x86 cpu 의 명령어 뿐만 아니라 다른 상위버전 명령어도 받을수 있도록 해준다. 

.MODEL FLAT : flat 메모리 방식을 사용한다고 알려준다.

ExitProcess 함수를 정의 한다. (ExitProcess  는 시스템에 저장되어 있는함수이다.)

 

PROTO 명령어는  c 언어에서 함수 선언 부분이라고 알려주는 부분이다. 

PROTO 명령어로 함수의 틀을 먼저 정해 놓으면 ExitProcess 함수를 나중에 구현하더라도 코드에서 에러가 발생하지 않는다. 

 

EQU 명령어는 상수값을 정하는 것과 같다 .cr 은 0x0d 를 의미하고 

lf 0x0a 를 의미한다. 

 

_start: 엔트리 포인트를 정한다. 

INVOKE ExitProcess , 0 : ExitProcess 함수를 부른다 0을 인자로 준다. 

ExitProcess 는 c 언어의 exit() 함수랑 동일하다. 

 

PUBLIC _start ; c 언어의 {} 와 같다.위의 _start 와 합처서  엔트리 포인터를 만들어 준다. 

 

나머지 코드는 아래 블로그에서 

설명 자세히 나와있음

https://donghwada.tistory.com/entry/stack-%EA%B5%AC%EC%A1%B0-%EC%96%B4%EC%85%88%EB%B8%94%EB%A6%AC-MASM-%EC%BD%94%EB%93%9C-%EB%B6%84%EC%84%9D

 

stack 구조, 어셈블리 (MASM, 코드 분석)

test(4,3); ⇒ push 3    push 4    call test(→push eip, → call test) printf test main stack ebp(old ebp) 함수 호출 시 반드시 필요한 영역(overhead) ret 4 3 main ← esp: main B A stack ebp RET(..

donghwada.tistory.com

 

댓글