.386
.MODEL FLAT
PUBLIC _Emb
.CODE
_Emb PROC NEAR32
push ebp
mov ebp, esp
mov esp, [ebp] ;esp를 main ebp로 옮겨준다.
pushad ;스택에 레지스터 push
mov eax, [ebp + 4] ;return address 값 ebx로
push eax ;ip push
pushfd ;efl push
mov esp, ebp
pop ebp
ret
_Emb ENDP
END
수정(09.08)
mov esp, [ebp]
이 코드는 쓰면 안되는 코드입니다.
이유는 이 코드의 경우
변수가 1개라서 스택에서 변수의 위치가 가늠이 되는데
만약 변수가 많아 지게 된다면 위의 코드는 사용할 수 없게 됩니다.
(유동적인 코드가 아니네요) ;;
mov esp, [ebp+8]
add esp, 40
위의 코드는 인자를 이용해서 정확하게 변수의 꼭대기로 이동한다음
인자의 크기만큼 내려가기 때문에 좀 더 유동적이 됩니다.
금요일 수업중에 생각하다가 알게 되었습니다.
또한 push는 memory to memory가 가능 하기 때문에
push [ebp + 4]
이거 한줄만 써주면 되겠네요.
결론적으로는
mov esp, [ebp+8]
add esp, 40
pushad
push [ebp + 4]
pushfd
이 5줄이면 되겠습니다.
'코스웨어 > 12년 내장형하드웨어' 카테고리의 다른 글
어셈블리어와 C 컴파일 자동화 배치파일. (7) | 2012.09.07 |
---|---|
수업자료 (0) | 2012.09.07 |
masm,nasm설치 nasm 컴파일 (3) | 2012.09.06 |
터보C 2.0 함수 목록 (가나다 순) (0) | 2012.09.06 |
20120906-Project.zip (0) | 2012.09.06 |
터보씨 시절 사용되던 함수들 모음. (4) | 2012.09.06 |
[Assembly] 9월 5일 업무일지 By.정철 (2) | 2012.09.06 |
[Assembly] 9월 3일 업무일지 By.정철 (3) | 2012.09.03 |