어셈블리 프로그래밍 - 어셈블리 언어(디버거로 레지스터 값의 변화를 확인, 문서로 작성)
리포트 > 공학/기술
어셈블리 프로그래밍 - 어셈블리 언어(디버거로 레지스터..
한글
2014.09.26
8페이지
1. 어셈블리 프로그래밍 - 어셈블리 언어(디버..
2. 어셈블리 프로그래밍 - 어셈블리 언어(디버..
어셈블리 프로그래밍 - 어셈블리 언어(디버거로 레지스터 값의 변화를 확인, 문서로 작성)
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
....
시스템프로그래밍 - 어셈블러의 역활, 단일 패.. 프로그래밍 입문 - C언어의 특징에 관해서
프로그래밍 언어론 - 프로그래밍 언어의 역사 레지스터 활용 정렬프로그램
기초전자전기-모터 제어 실험 보고서 [프로그래밍] 어셈블리어 명령어(8051)
프로그래밍언어,세대별프로그래밍언어,프로그래.. [레포트] 전자공학과 Addressing Mode, Registe..
Linux Shell의 개요, 종류, 특징 소프트웨어 개발도구(프로그래밍 언어)-프로그..
기술변화와노사관계 [디지털공학] 플립플롭을 이용한 신호등 제어기..
마이크로프로세서의 발전 과정과 컴퓨터 산업에.. 신경언어학적 프로그래밍
 
수준측량 보고서
기본측량학실습 - 수준측량
공조설비설계 물량산출-덕트
물리학 실험 - 당구의 역학[충..
공학윤리 - 공학에서의 책임
공학윤리 사례 분석