소프트웨어 운영체제 만들기 -3-
2013.12.22 10:08
이번엔 2편에서 만든 부트로더의 설명과 nasm이 컴파일한 명령어를 한번 분석해보도록하죠.
times 510-($-$$) db 0x00
dw 0xaa55
가 코드였는데요. 여기서 times는 같은 동작을 반복하는 명령문입니다.
$는 현재 주소고요, 그와 달리 $이게 두개있는 $$는 세그먼트의 시작주소입니다. $-$$ 는 처음과 현재의 차이죠.
즉 이 이야기는 510-($-$$)는 현재부터 510바이트까지 가 되겠죠. 근데 현재에 아무것도 한게 없으니 0바이트부터 510바이트까지 쭉쭉 입니다. db는 1byte입니다. 1byte씩 0에서 510바이트를 0x00으로 계속 채워나가라는 거죠. 그리고 부팅을 할수있게 해준 대망의 코드.
dw 0xaa55는요. 일단 dw가 word란 뜻입니다. 그러면 이제 남은 두 511, 512바이트를 저 0xaa55로 채우라는 거죠. 근데 분명히 부트코드는 55AA 순이라고 했는데 왜 aa55순으로 채우라는 걸까요? 인텔과 AMD의 CPU는 리틀엔디안이라는 저장방식을 채택했습니다. 근데 그 리틀엔디안은 저장을 거꾸로 합니다. 그래서 aa55는 저장될때 55AA로 잘 저장이 되는겁니다. 여기까지가 부트로더 설명이었습니다.
이제 nasm의 컴파일 명령어 차례인데요.
nasm boot.asm -f bin -o boot.bin
이 명령어입니다. nasm은 컴파일하는 프로그램 이름이죠? 다들 아실테고. 해석해보면 nasm으로 boot.asm을 bin파일 형식으로 포맷하고 boot.bin으로 결과물이 나오라는 뜻입니다. -f는 format의 약자입니다. 그리고 -o는 output의 약자죠. 그래서 bin파일로 포맷해서 boot.bin으로 나오는 겁니다.
다음편 예고 : 문자를 출력하는 부트로더!
댓글 [6]
번호 | 제목 | 글쓴이 | 조회 | 추천 | 등록일 |
---|---|---|---|---|---|
[공지] | 강좌 작성간 참고해주세요 | gooddew | - | - | - |
2281 | 윈 도 우| GPT 파티션 삭제 하기 [1] | DOS | 9704 | 1 | 01-30 |
2280 | 기 타| Explorer Shell, MMC - WIN7 PE에 수동으로 넣어 주기? [4] | 나홀로 | 6032 | 1 | 01-30 |
2279 | 소프트웨어| 악성코드 범람 시대, 이제 사용자 계정 컨트롤은 필수! [7] | 메트로작전 | 9695 | 1 | 01-26 |
2278 | 기 타| PlayReady 업데이트 시 Windows Media Center 설정 실패시 ... | wildboy | 3753 | 1 | 01-25 |
2277 | 윈 도 우| USB 부팅 스샷 Win8MpeL20130519 [1] | DaBin | 8761 | 1 | 01-24 |
2276 | 기 타| 간단히 속도측정 [2] | tanny tale | 6134 | 2 | 01-21 |
2275 | 윈 도 우| UEFI모드로 서버2012과 Win7 VHD 멀티부팅하기(2) [7] | suk | 7606 | 1 | 01-20 |
2274 | 윈 도 우| UEFI모드로 Win8과 Win7 멀티부팅하기(1) [19] | suk | 13540 | 2 | 01-20 |
2273 | 소프트웨어| 한컴오피스2014에서 한글 수식 깨질 때 [6] | 이코누 | 7115 | 3 | 01-16 |
2272 | 소프트웨어| chrome://flags 활용 {잘못된곳 ??] | DaBin | 5967 | 2 | 01-15 |
2271 | 윈 도 우| Grub4DOS에서 리터치한 WIM 파일의 XP를 설치하는 방법 [1] | NetEagle | 5805 | 1 | 01-15 |
2270 | 소프트웨어| BOOTICE 활용 - Lvyanan 으로 긴급 파티션 설정 [25] | 입니다 | 8833 | 14 | 01-10 |
2269 | 소프트웨어| 이 방법 test 함 부탁드려봅니다 (본문수정) [10] | ϟƘƦƖןןΣx | 4512 | 1 | 01-06 |
2268 | 소프트웨어| 프리모캐시 90일 무한연장팁?! [5] | 돈쥬 | 10173 | 3 | 01-03 |
2267 | 윈 도 우| XP.VHD를 만들어서 부팅하기 [21] | suk | 13687 | 10 | 01-02 |
2266 | 기 타| 무료 팩스 수신 서비스 [5] | asklee | 10299 | 9 | 01-01 |
2265 | 소프트웨어| PowerDVD 13에서 HDD의 디스크 폴더를 재생하는 법 [1] | 나는나다 | 4572 | 3 | 12-30 |
2264 | 윈 도 우| 윈도우 7 32비트 64비트 메모리 [9] | DOS | 17713 | 2 | 12-29 |
2263 | 기 타| 32비트와 64비트, 그리고 메모리 [3] | DOS | 6045 | 2 | 12-29 |
2262 | 윈 도 우| Windows 8 에서 PAE 및 3GB 옵션 설정 [7] | DOS | 5203 | 2 | 12-29 |
유용한 강좌 고맙습니다!!! ^^