20130916어셈블리 레지스터 값-문예진
.386
.MODEL FLAT
PUBLIC _linux
.CODE
_linux PROC NEAR32
push ebp
mov ebp,esp
pushad ;모든 레지스터의 값을 넣어둔다.
pushf ;flag 레지스터를 스택에 값을 넣고
mov eax, esp ;esp의 맨위의 위치 값을 eax에 넣음
mov esp, ebp
add esp, 12 ;esp 의 시작주소가 있는 곳으로
mov ebx, esp ;esp 시작주소 넣음
mov esp, [ebp+8] ;esp가 구조체까지 내려감
add esp, 40 ; eax부터 넣을 준비
;---------------------------------------------
mov ecx, [ebp-4] ;ebp에서 4바이트 내려간 값
push ecx ;eax값을 넣음
mov ecx,[ebp-8] ;ecx
push ecx
mov ecx,[ebp-12] ;edx
push ecx
mov ecx,[ebp-16] ;ebx
push ecx
push ebx ; 아까 저장해 놓았던 esp의 주소 값
mov ecx, [ebp] ;ebp의 원래 주소 값
push ecx
mov ecx,[ebp-28] ;esi
push ecx
mov ecx,[ebp-32] ;edi
push ecx
mov ecx,[ebp+4] ;eip
push ecx
mov ecx, [ebp-40] ;efl
push ecx
mov esp, eax ;다시 원래의 주소로 되돌리기
popf
popad
mov esp,ebp
pop ebp
ret
_linux ENDP
END
길다......
<결 과>