본문 바로가기
코스웨어/13년 스마트컨트롤러

20130916 어셈블리 - 전영기

by 알 수 없는 사용자 2013. 9. 16.
728x90
반응형

        push ebp

mov ebp, esp


push eax

push ecx

push edx

pushfd    ;기존 플래그비트를 저장하기 위함이다. 도중에 add 연산자가 있어 플래그비트를 바꿔버린다.

push ebx



mov ebx, esp    ;esp를 ebx에 저장

mov esp, [ebp + 8]

add esp, 40

push eax    ;순차로 넣기

push ecx

push edx   


mov esp, ebx    ;esp복구


pop ebx    ;ebp복구

pop edx    ;flag bit edx에 저장


mov eax, esp    ;eax에 esp저장

mov esp, [ebp + 8]

add esp, 28


push ebx    ;순차적으로 넣기

mov ecx, ebp    ;초기 esp주소

add ecx, 12

push ecx

mov ecx, [ebp]    ; 초기 ebp

push ecx

push esi

push edi

mov ecx, [ebp + 4]    ;eip주소

push ecx

push edx    ;flag bit


mov esp, eax   ;esp 복구

pop edx    ; 레지스터 값 복구

pop ecx

pop eax


mov esp, ebp

pop ebp

ret


pusha 라는 명령어를 사용하는것을 봤었는데,

저는 그냥 순차적으로 push를 이용해서 만들었습니다.

esp랑 ebp의 값이 pusha를 사용하면 제대로 들어가지 않기 때문입니다.

728x90