1. 문제정의
자신의 기본 정보(학번,이름,전공,직책)를 출력하고, 나이는 EAX 레지스터에 저장하여 출력 할 것. 이때 기본 정보는 콜론(:)이후의 문장만 출력하고 add, mov 니모닉과 offset 연산자를 사용 할 것.
2. 해결방법
① 기본정보 출력방법
menu1 BYTE Student ID : 200702661 ,0dh,0ah,0
여기서 콜론(:)이후의 문장만 출력하기 위해선 콜론이 있는 지점의 세그먼트 주소를 알아야합니다. 이때 사용되는 연산자가 바로 offset 연산자입니다.
건물을 메모리라고 생각하면 segmet는 층, offset은 그 층의 방으로 생각하면 쉽습니다.
[data segment]
offset menu1이 저장된 곳.
즉 색칠한 부분의 시작점이 menu1이 시작하는 부분입니다.
이때 menu1이 저장된 edx의 출력은 Student ID : 200702661 전체가 나오므로 add edx,DWORD를 세 번 해줍니다. add edx,DWORD는 dword크기(32byte)만큼 앞의 주소를 edx에 저장하는 명령어입니다.
mov edx,OFFSET menu1 ; menu1의 시작점을 edx에 저장
add edx,DWORD ; 시작점에서 dword만큼 이동
add edx,DWORD
add edx,DWORD
call writestring ;menu1출력
.... |