올린글을 확인할 수 있도록 포스팅을
공개
로 설정해 주세요.
포인트는 운영자가 올린글을 검토후 지급됩니다. 검토요청이 누적된 상황에서는 포인트 지급에 상당한 지연이 발생할 수 있습니다.
어셈블리 프로그래밍 - 어셈블리 언어(디버거로 레지스터 값의 변화를 확인, 문서로 작성)
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
[- ebp
20
10
[- esp
return address
ebp
[- ebp
[- esp
현재 esp는 스택의 빈공간을 가리키는데, 다음명령에서 [ebp-4]에 20의 값을, [ebp-8]에 10의 값을 복사하므로 스택은 위의 우측과 같이 된다. 이제 다음으로 esp가 가리키는 곳을 ebp가 가리키는 곳과 같이 설정한다. 그리고 나서 ebp레지스터를 pop하는데,
retu
....
[hwp/pdf]어셈블리 프로그래밍 - 어셈블리 언어(디버거로 레지스터 값의 변화를 확인, 문서로 작성)
포스팅 주소 입력
올린글을 확인할 수 있는 포스팅 주소를 입력해 주세요.
네이버,다음,티스토리,스팀잇,페이스북,레딧,기타 등 각각 4개(20,000p) 까지 등록 가능하며 총 80,000p(8,000원)까지 적립이 가능합니다.