어셈블리 – PUSH/POP 명령 MASM32 코드 예제

이 명령은 스택에 데이터를 push(저장) 하거나 pop(꺼내기)라는 명령으로 스택과 밀접한 관계가 있다. (이후 진행되는 스택에서 자세히 다른다.) 이 명령의 사용은 자료 구조 스택과 동일하다. PUSH/POP 는 한개의 피연산자를 받는데, 이 피연산자는 직접값/메모리/레지스터(세그먼트 포함)가 될 수 있다. PUSH이 실행되면, ESP는 해당 바이트만큼 감소하고, POP 명령이 실행되면 ESP레지스터는 해당 바이트만큼 증가하게 된다.

 

masm6.asm

.586

.model flat, stdcall

option casemap:none

 

.code

 

main    proc

; 함수 프롤로그부분

    push ebp

    mov ebp, esp

; 스택에 값을 삽입한다.

    push 4h

    push 3h

    push 2h

    push 1h

; 스택에서 값을 꺼낸다.

    pop eax

    pop ebx

    pop ecx

    pop edx

; 함수 에플로그 부분

    pop ebp

    retn

 

main endp

end main

 

; 실행결과

; eax=1

; ebx=2

; ecx=3

; edx=4

[내용] push, pop 명령 예제

 

POP과 PUSH는 스택을 진행할 때 다시 나온다. PUSH 명령을 이용해 4, 3, 2, 1을 스택에 넣으면 POP 명령을 진행히 마지막 입력한 스택부터 꺼내어 쓰게된다.

 

[그림] POP과 PUSH는 스택에서 사용된다

 

Facebook Comments

Leave A Reply

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

This site uses Akismet to reduce spam. Learn how your comment data is processed.