[MASM] Stack Parameter 에 대한 질문입니다...
글쓴이: 등짝을보자 / 작성시간: 화, 2007/02/20 - 3:42오후
TITLE StackParameter.asm INCLUDE Irvine32.inc .data array BYTE 'ABCDEFGHI',0 .code ;INVOKE DumpMem,OFFSET array,LENGTHOF array,TYPE array main PROC push OFFSET array push LENGTHOF array push TYPE array call DumpMem call DumpRegs exit main ENDP END main
일단 컴파일은 됩니다..
하지만 실행하면...
Dump of offset 01C754B8 -------------------------------
이런 말 뜨고 안된다며 경고창 뜹니다..
책에 적혀있기로는 된다고 적혀있는데 왜 안되는건가요??
mov esi,OFFSET array 이 부분을 Stack Parameter 에서 처리을 못해서 그런거같은데요..
어떻게하면 되나요??
밑에 소스는 Register Parameter 을 이용한겁니다
이건 잘되요...하지만
Stack Parameter 는 안되네요...
TITLE register_parameter.asm INCLUDE Irvine32.inc .data array BYTE 'ABCDEFGHI',0 .code main PROC pushad mov esi,OFFSET array mov ecx,LENGTHOF array mov ebx,TYPE array call DumpMem popad exit main ENDP END main
Dump of offset 00404000 ------------------------------- 41 42 43 44 45 46 47 48 49 00
Forums:
예전에 잠깐 공부했던 걸 떠올리면...
DumpMem이 Irvine32.inc 파일에 들어있나요? 각각 다른 DumpMem이 StackParameter.asm과 register_parameter.asm에 사용되어야 할 것 같은데.
전자는 파라미터를 스택에서 얻고, 후자는 레지스터에서 얻으니 사용되는 코드가 달라야 하지 않을까요?
StackParameter.asm에 쓰이는 DumpMem에서는 pop ebx, pop ecx, pop esi로 파라미터를 얻어야 할 것 같습니다. (순서가 중요합니다. 스택이니까 제일 나중에 들어간 게 제일 먼저 나옵니다.)
답변 감사합니다..
아..맞아요....
pop 을 생각을 못했네요..
감비노도 궁금해하더라구..등짝!..등짝을보자!..
감비노도 궁금해하더라구..등짝!..등짝을보자!..
댓글 달기