2009년 2월 23일 월요일

[내맘대로 만드는 OS]1.H 글자를 보기 위한 삽질

-ㅅ-;; OS를 만들어보겠다고 삽질하다 결국 기초부터 시작합니다;;
어셈블리로 만들어보죠.
*어셈블리는 이 밑에 사진에 있는 컴퓨터 이전에도 있던 2진법으로 프로그램을 짜는게 힘들어서 대체해서 만든 프로그래밍 랭귀지입니다*
먼저 부트 섹터나 만들어보죠.
(이 부트 섹터 코드는 여기서 퍼왔습니다 -ㅅ-)

;
; +PlusOS Boot Sector (C) Copyright 10wonsoft, 2009
; http://10wonsoft.textcube.com/ basicprogrammaing75@gmail.com
;
; assemble with:
; nasm -f bin -o PLUSBOOT PLUSBOOT.asm
;
; History From -
; 2009 2 23 H Msg
[org 0]
[bits 16]
        jmp 0x07C0:start        ;far jmp 를 한다.
start:
        mov ax, cs              ;cs 에는 0x07C0 이 들어 있다.
        mov ds, ax              ;ds 를 cs 와 같게 해준다.
        mov ax, 0xB800          ;비디오 메모리의 세그먼트를
        mov es, ax              ;es 레지스터에 넣는다.
        mov edi, 0              ;제일 윗 줄의 처음에 쓸 것이다.
        mov byte [es:di], 'H'  ;비디오 메모리에 쓴다.
        inc di                 ;한 개의 BYTE를 썼으므로 1을 더한다.
        mov byte [es:di], 0x06 ;배경색을 쓴다.
        inc di                 ;한 개의 BYTE를 썼으므로 1을 더한다.
        jmp $                   ;이 번지에서 무한루프를 돈다.
times 510-($-$$) db 0           ;여기서 부터, 509 번지까지 0 으로 채운다.
                 dw 0xAA55      ;510 번지에 0xAA 를, 511 번지에 0x55 를 넣어 둔다.
하 =ㅅ=;; 부팅장면입니다;;
하;; H 한개 보느라고 몇시간을 소비했는지 -ㅅ-;;
(따라하실 분은 요거 vmware 아니면 버추얼박스에 마운트시켜주세요 -ㅅ-;;)
이 디스켓 만드는 방법은 나중에 소개하겠습니다-ㅅ-

댓글 1개: