º»¹®/³»¿ë
1. Q1_01
µð¹ö°Å·Î ·¹Áö½ºÅÍ °ªÀÇ º¯È¸¦ È®ÀÎ, ¹®¼·Î ÀÛ¼º
-¼Ò½º ÄÚµå
INCLUDE Irvine32.inc
.code
main PROC
call MySub
exit
main ENDP
MySub PROC
push () ; ¿¡ µé¾î°¥ °ª ebp
mov ebp,() ; ¿¡ µé¾î°¥ °ª esp
sub esp,8
mov DWORD PTR [ebp-4],20
mov DWORD PTR [ebp-8],10
mov (),ebp ; ¿¡ µé¾î°¥ °ª esp
pop () ; ¿¡ µé¾î°¥ °ª ebp
ret
MySub ENDP
END main
-ÄÚµå ¼³¸í
¿ì¼± main ÇÁ·Î½ÃÀúºÎÅÍ ÇÁ·Î±×·¥ÀÌ ½ÇÇàÇϸé MySub ÇÁ·Î½ÃÀú¸¦ È£ÃâÇÑ´Ù. ´Ù¸¥ ÇÁ·Î½ÃÀú¸¦ È£ÃâÇϸé stack¿¡ return address°ªÀÌ ÀúÀåµÈ´Ù. ÀÌÁ¦ MySub ÇÁ·Î½ÃÀú·Î ³Ñ¾î°¡¼ stack¿¡ ebp¸¦ pushÇÑ´Ù. ebp´Â base pointer·Î ½ºÅÿ¡ ÀúÀåÇÏ¿© ±âÁ¸ÀÇ °ªÀ» º¸Á¸ÇϱâÀ§ÇØ »ç¿ëµÈ´Ù. ±× ´ÙÀ½ espÀÇ °ªÀ» ebp¿¡ º¹»çÇÑ´Ù. ±× ´ÙÀ½ esp¿¡ 8À» »©Áִµ¥, ±×·¯¸é ½ºÅÃÀÇ ±¸Á¶´Â ¾Æ·¡¿Í °°´Ù.
return address
ebp
`¡¦(»ý·«)
2. Q1_02