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
'코스웨어 > 13년 스마트컨트롤러' 카테고리의 다른 글
어셈블리 레지스터값 출력하기-한성원 (0) | 2013.09.16 |
---|---|
어셈블리 과제 0916 -임기준 (0) | 2013.09.16 |
[stack] 코드의 스텍영역 살펴보기 - 0911 정리 (0) | 2013.09.16 |
20130916 어셈블리 - 이수현 (0) | 2013.09.16 |
ASM 프로시저를 이용한 레지스터값 출력!! (0) | 2013.09.16 |
20130917 이세웅 숙제 (0) | 2013.09.16 |
main의 ESP 찾기 (0) | 2013.09.13 |
2013_09_09 정리 입니다 -한성원- (0) | 2013.09.13 |