BASIC4MCU | C언어 | 운영체제 없는 프로그래밍 강좌 [펌] | 운영체제 없이 화면에 점찍기
페이지 정보
작성자 키트 작성일2017-09-12 14:33 조회3,086회 댓글0건본문
;;아래의 코드가 0x7c00에 로드됩니다 그래서 라벨에 전부 0x7c00을 더하게 위해서 org를 적어줬습니다.
org 0x7c00
;;320x200그래픽 모드로 바꾸는 인터럽트
mov ax, 0x13
int 0x10
;;cx는 루프 돌때 쓸것이고 ax는 세그먼트 레지스터에 바로 값을 쓸 수 없어서 임시로 0xa000을 저장하는 용도로 썼씁니다.
mov cx, 0
mov ax, 0xa000
mov es, ax
;;di를 0으로 바꾸는 세련되고 빠른 방법입니다 ㅎㅎ
xor di, di
my_loop:;;es:di에 노란 픽셀을 찍습니다. di는 아래에서 inc로 1씩 증가하고있습니다. 즉 왼쪽위에서 오른쪽으로 그리고 아래쪽으로 책에 쓰인 글자 읽는 순서로 픽셀을 찍습니다.
mov byte [es:di], 0x0e
inc cx
inc di
cmp cx, 1000
jnz my_loop
;;멈춰있기 만들어주는 현재 위치로 점프 == 무한루프 입니다.
jmp $
times 510 - ($-$$) db 0;;511번째 와 512번째 바이트를 각각 0x55 0xaa로 하면 바이오스가 부트로더로 인식해서 이 코드를 0x7c00으로 로드 해 줍니다.
db 0x55
db 0xaa
;;아래 명령어로 이 파일의 크기를 1.44MB로 맞추면 vmware나 bochs같은 가상머신에서 플로피 이미지 파일로 받아들입니다.
times 1474560 - ($-$$) db 0
댓글 0
조회수 3,086등록된 댓글이 없습니다.