1. Pre..
이번엔 아스키 아트 + 색깔을 넣어서 출력을 해 봅시다.
- 플로피디스크에 프로그램을 담아 부팅시켜보자.
2. Process
- 아스키 코드로 만든 그림
- 비디오 램에 접근해서 색깔 정하는 법
- 배경색 지정하는 법
3. Code
[org 0]
jmp 0x7c0:start ; cs = 0x7c0
start:
mov ax, cs ; segment register 은 직접 복사가 안된다.
mov ds, ax ; cs 와 ds 가 같은 값을 갖게 하기 위한 작업
mov ax, 0xb800 ; video ram ( color vga area )
mov es, ax ; es <- video ram
mov si, A1 ; 그림 넣기
mov di, 0 ; di 초기화
mov bx, 0 ; bx 초기화
loop_1:
mov al, byte[si]
cmp al, 15
je A2
mov byte[es:di], al ; es = 0xB800 di = 0
inc di ; di = 1
mov byte[es:di], 3 ; 바탕색 & 배경색 -> 하늘 색 ; 0xB800:0001 -> 하늘색이 들어감
cmp al, 0 ; 만약 끝나면 forever 로 가셈
je forever
inc di
inc si
jmp loop_1
A2:
inc bx ; bx -> 라인 수
mov cx, 160 ; 한 행 = 80 * 2
imul cx, bx
mov di, cx
inc si
jmp loop_1
forever:
jmp $ ; $ = 현재 주소값
A1 db ' _____ ---------- | ------- ----------- ', 15 ; 15 -> 한 행 구분 숫자
db ' / | | |/ | | ', 15
db ' / | | | | | ', 15
db ' / |--------- | | | ', 15
db ' / | | | | ', 15
db ' ----- ------------ | ----------- ', 0
times 1020 - ( $ - $$ ) db 0 ; 1022 바이트로 맞추자는 소리
dw 0xAA55 ; 부트 코드 식별자
4. Run
ㅋㅋㅋ...
'Security > Kernel & OS' 카테고리의 다른 글
[Operation System] 6. OS 만들기 - Kernel Load - 1 (0) | 2014.07.14 |
---|---|
[Operation System] 5. OS 만들기 - BootStrap - 4 (0) | 2014.07.14 |
[Operation System] 3. OS 만들기 - BootStrap - 2 (0) | 2014.07.14 |
[Operation System] 2. OS 만들기 - BootStrap - 1 (0) | 2014.07.14 |
[Operation System] 1. OS 만들기 - 준비물 (0) | 2014.07.14 |