이전 글에서 내가 무엇을 했느냐,,,

전에 쓴 글을보면서 

헥스에디터로 이미지파일 만들고 qemu로 돌리기까지 했었다.

 

책 설명이 제대로 안되있는데 내가 어떻게 이걸했을까 생각하다보니 한빛미디어 자료실에 

올라와있는 자료를 보고 했었던것같다

책 링크 걸어둔다.

 

https://m.hanbit.co.kr/store/books/book_view.html?p_code=B9833754652

 

OS 구조와 원리: OS 개발 30일 프로젝트

저자가 수년 동안 개발하여 완성한 OS를 독자와 함께 30일 프로젝트로 함께 만들어가는 내용이다. OS는 플로피디스크로도 구동할 수 있고 우리가 사용하고 있는 윈도우 XP와 같은 OS에서 에뮬레이

m.hanbit.co.kr

https://dw.hanbit.co.kr/exam/1482/

 

Index of /exam/1482

 

dw.hanbit.co.kr

 

 

아무튼 다음으로 할일은 어셈블리를 쓰려고한다.

헥스에디터대신 텍스트에디터로 만들고

nasm 대신 저자가 만든 nask로 어셈블하면 이전처럼 쓸수있다고한다.

 

오랜만에 인성훈련을 위해 어셈블리 그대로 쓰고

(이전 글 헥스 에디터 사진과 같이 보면 내용 동일함)

 

이미지 파일로 빌드

 

 

 

 

방금 nask로 빌드한 이미지가 정상적으로 실행된걸 확인했다!

 

 

뜻정리하면

DB : data byte 1바이트 쓰기

RESB : reserve byte 숫자만큼 0x00으로 채우기

 

 

 

어셈블리 코드 개선 결과

; 는 주석

DW : data word 워드로 18비트, 2바이트

DD : data double word 더블 워드로 4바이트

 

 

 

 

 

추가 용어 정리

FAT12 포맷 : 플로피 디스크 포멧 형식

부트섹터 

 - 플로피디스크 처음섹터, 플로피는 512바이트씩 읽음

 - 플로피는 1,440kb로 512바이트로 나누면 2880섹터로 구성

 * 부팅가능한지 보기위해 첫 섹터의 맨뒤 2바이트를 봄. 마지막이 55 AA가 아니면 부팅할수 없다고 판단.

 =>이게 무슨소린가 싶어서 헥스에디터로보니 첫 섹터 512바이트 맨 끝부분에 55 AA가 들어가있음

IPL : initial program loader 초기 프로그램 읽기 장치, 보통 OS 로드하기위한 프로그램 위치

부트 : 부트스트랩의 약어, 자신의 힘으로 이룬다는 의미

+ Recent posts