목록전체 글 (420)
외로운 Nova의 작업실
안녕하세요, 이번 시간에는 Runtime Stack(실행시간 스택)을 사용하는 방법에대해서 알아보겠습니다. - Runtime Stack Runtime Stack은 스택 포인터 레지스터라고 하는 ESP 레지스터를 이용하여 CPU가 직접 관리하는 메모리 배열입니다. ESP 레지스터에는 스택에 있는 어떤 위치에 대한 32비트 오프셋을 저장합니다. ESP를 직접 조작하는 일은 거의 없으며, CALL, RET, PUSH, POP 과같은 명령어를 사용하여 간접적으로 수정됩니다. - Runtime Stack의 구조 자료구조를 배우셨다면 잘 알듯이 LIFO 구조를 가지고 있습니다. 마지막에 넣은걸 먼저 빼내야 처음에 넣었던 것을 뺄 수가 있죠. 다만, 시스템적으로보자면 Runtime Stack은 큰 숫자의 주소를 먼저..
안녕하세요. 이번 시간에는 이전 시간에 배운 라이브러리 프로시저를 사용하여 예제 프로그램을 만들어보도록 하겠습니다. 1.간단하게 글자색을 변경하고, DumpMem 으로 배열의 값을 나열하고 사용자로부터 값을 3번 입력받아 각각 그것을 int, hex, bin 형태로 출력 하는 프로그램을 짜보도록 하겠습니다. 프로시저들이 궁금하다면 이전 시간의 글을 참고하시면 이해가 편하실 겁니다. include c:\assembly\irvine32.inc includelib c:\assembly\irvine32.lib includelib c:\assembly\kernel32.lib includelib c:\assembly\user32.lib .data COUNT = 3 GreenTextOnBlack = Green + (..
안녕하세요, 이번 시간에는 irvine16과 irvine32 라이브러리에 있는 프로시저가 어떻게 사용되는지 알아보도록 하겠습니다. CloseFile CloseFile 프로시저는 이전에 생성하거나 열었던 파일을 닫습니다. 파일은 eax에 들어있는 32비트 정수 핸들로 식별됩니다. 파일이 성공적으로 닫히면 eax로 반환되는 값은 0이아닌 값입니다. 아래는 예시입니다. mov eax, filehandle call CloseFile Clrscr Clrscr 프로시저는 콘솔 윈도우를 깨끗하게 지웁니다. 이 프로시저는 일반적으로 프로그램의 시작과 끝에서 호출됩니다. 프로그램의 중간에서 호출된다면 사용자가 화면을 지우기전에 스크린에 이미있던 정보를 볼 수 있게 WaitMsg 프로시저를 호출하는 것을 추천합니다. 아래..