|
http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=1582 [º¹»ç]
; hello-os
; TAB=4
ORG 0x7c00 ; ÀÌ ÇÁ·Î±×·¥ÀÌ ¾îµð¿¡ readµÇ´Â°¡
; ÀÌÇϴ ǥÁØÀûÀÎ FAT12 Æ÷¸Ë Ç÷ÎÇÇ µð½ºÅ©¸¦ À§ÇÑ ±â¼ú
JMP entry
DB 0x90
DB "HELLOIPL" ; boot sectorÀ̸§À» ÀÚÀ¯·Ó°Ô ½áµµ ÁÁ´Ù(8¹ÙÀÌÆ®)
DW 512 ; 1¼½ÅÍ Å©±â(512·Î ÇØ¾ß ÇÔ)
DB 1 ; Ŭ·¯½ºÅÍ Å©±â(1¼½ÅÍ·Î ÇØ¾ß ÇÔ)
DW 1 ; FAT°¡ ¾îµð¿¡¼ ½ÃÀ۵ɱî(º¸Åë 1¼½ÅͰºÎÅÍ)
DB 2 ; FAT °³¼ö(2·Î ÇØ¾ß ÇÔ)
DW 224 ; ·çÆ® µð·ºÅ丮 ¿µ¿ªÀÇ Å©±â(º¸Åë 224¿£Æ®¸®·Î ÇØ¾ß ÇÑ´Ù)
DW 2880 ; µå¶óÀ̺ê Å©±â(2880¼½ÅÍ·Î ÇØ¾ß ÇÔ)
DB 0xf0 ; ¹Ìµð¾î ŸÀÔ(0xf0·Î ÇØ¾ß ÇÔ)
DW 9 ; FAT¿µ¿ª ±æÀÌ(9¼½ÅÍ·Î ÇØ¾ß ÇÔ)
DW 18 ; 1Æ®·°¿¡ ¸î °³ÀÇ ¼½ÅͰ¡ ÀÖÀ»±î(18·Î ÇØ¾ß ÇÔ)
DW 2 ; Çìµå ¼ö(2·Î ÇØ¾ß ÇÔ)
DD 0 ; ÆÄƼ¼ÇÀ» »ç¿ëÇÏÁö ¾Ê±â ¶§¹®¿¡ ¿©±â´Â ¹Ýµå½Ã 0
DD 2880 ; µå¶óÀ̺ê Å©±â¸¦ Çѹø ´õ write
DB 0,0,0x29 ; Àß ¸ð¸£Áö¸¸ ÀÌ °ªÀ¸·Î ÇØ µÎ¸é ÁÁÀº °Í °°´Ù
DD 0xffffffff ; ¾Æ¸¶, º¼·ý ½Ã¸®¾ó ¹øÈ£
DB "HELLO-OS " ; µð½ºÅ© À̸§(11¹ÙÀÌÆ®)
DB "FAT12 " ; Æ÷¸Ë À̸§(8¹ÙÀÌÆ®)
RESB 18 ; ¿ì¼± 18¹ÙÀÌÆ®¸¦ ºñ¾î µÐ´Ù
; ÇÁ·Î±×·¥ º»Ã¼
entry:
MOV AX, 0 ; ·¹Áö½ºÅÍ ÃʱâÈ
MOV SS,AX
MOV SP,0x7c00
MOV DS,AX
MOV ES,AX
MOV SI,msg
putloop:
MOV AL,[SI]
ADD SI, 1 ; SI¿¡ 1À» ´õÇÑ´Ù
CMP AL,0
JE fin
MOV AH, 0x0e ; ÇÑ ±ÛÀÚ Ç¥½Ã Function
MOV BX, 15 ; Ä®¶ó ÄÚµå
INT 0x10 ; ºñµð¿À BIOS È£Ãâ
JMP putloop
fin:
HLT ; ¹«¾ùÀΰ¡ ÀÖÀ» ¶§±îÁö CPU¸¦ Á¤Áö½ÃŲ´Ù
JMP fin ; Endless Loop
msg:
DB 0x0a, 0x0a ; °³ÇàÀ» 2°³
DB "hello, world"
DB 0x0a ; °³Çà
DB 0
¼Ò½º°¡ ÀÌ·¸½À´Ï´Ù.
¿©±â¼ ±Ã±ÝÇѰÍÀº
DB 0x90
DB "HELLOIPL" ; boot sectorÀ̸§À» ÀÚÀ¯·Ó°Ô ½áµµ ÁÁ´Ù(8¹ÙÀÌÆ®)
DW 512 ; 1¼½ÅÍ Å©±â(512·Î ÇØ¾ß ÇÔ)
DB 1 ; Ŭ·¯½ºÅÍ Å©±â(1¼½ÅÍ·Î ÇØ¾ß ÇÔ)
DW 1 ; FAT°¡ ¾îµð¿¡¼ ½ÃÀ۵ɱî(º¸Åë 1¼½ÅͰºÎÅÍ)
DB 2 ; FAT °³¼ö(2·Î ÇØ¾ß ÇÔ)
DW 224 ; ·çÆ® µð·ºÅ丮 ¿µ¿ªÀÇ Å©±â(º¸Åë 224¿£Æ®¸®·Î ÇØ¾ß ÇÑ´Ù)
DW 2880 ; µå¶óÀ̺ê Å©±â(2880¼½ÅÍ·Î ÇØ¾ß ÇÔ)
DB 0xf0 ; ¹Ìµð¾î ŸÀÔ(0xf0·Î ÇØ¾ß ÇÔ)
DW 9 ; FAT¿µ¿ª ±æÀÌ(9¼½ÅÍ·Î ÇØ¾ß ÇÔ)
À̺κÐÀÌ ¿Ö Ŭ·¯½ºÅÍ Å©±â(1¼½ÅÍ·Î ÇØ¾ß ÇÔ) ÀÌ·±½ÄÀ¸·Î ÀνÄÀÌ µÅ´ÂÁö ±Ã±ÝÇÕ´Ï´Ù.
DB¸í·É¾î´Â ºÐ¸íÈ÷ ÆÄÀÏÀÇ ³»¿ëÀ» 1¹ÙÀÌÆ®¸¸ Á÷Á¢¾²´Â°Çµ¥ ¾î¤Š¼ ÀÌ·± ¸í·É¹®À¸·Î ÀνĵŴ°ǰ¡¿ä?
|
Hit : 3439 Date : 2012/06/14 09:39
|