===================================================== Á¦¸ñ : IBM Compatible PC Emulator »ç¿ë¹ý (Bochs) ÀÛ¼ºÀÚ : edward_frswz ÀÛ¼ºÀÏÀÚ : 2002. 12. 16 ºÐ¼® : edward frswz ºÐ¼®¹öÁ¯ : ver 0.0.1 ¶óÀ̼¾½º : GPL ȨÆäÀÌÁö : http://osx86.codesum.org ===================================================== °¡»ó¸Ó½Å bochs »ç¿ë¹ý ======================================================= - Áغñ¹° i386+ Compatible PC Win32 Operating System Bochs Emulator NASM (Win32 Version) Ʋ¸° ³»¿ëÀ̳ª ÀÌ»óÇÑ ³»¿ëÀº ¹Ù·Î ¸ÞÀÏ·Î ¾Ã¾îÁÖ¼¼¿ä. Á¦°¡ °ËÁõ ÈÄ ¹Ù·Î °íÃļ­ ¾÷µ¥ÀÌÆ® ÇϰڽÀ´Ï´Ù. email : osx86@codesum.org ======================================================= 0. ¼Ò°³ OS °³¹ßÀ̳ª ºÐ¼®À» À§Çؼ­ ²À ÇÊ¿äÇÑ °ÍµéÁß¿¡ ÇϳªÀÎ VM À» ¼Ò°³ÇϰíÀÚ ÇÕ´Ï´Ù. VM ¿¡´Â Bochs(¿¾ Plex86), Virtual PC, vmware °°Àº °ÍµéÀÌ ÀÖÁÒ. Å×½ºÆ®¿ëÀ¸·Î ¾²±â¿£ Á¦°¡ ½áº»°ÍµéÁß Bochs °¡ Á© ºü¸£°í ÆíÇѵíÇÕ´Ï´Ù. ¼³Á¤Àº °¡Àå ¾î·ÆÁö¸¸ ... ¼¼ºÎ¼³Á¤ÀÌ °¡´ÉÇÑ Á¡ÀÌ Âü ÁÁÀº°Í °°½À´Ï´Ù. Bochs ÀÇ ¿ªÇÒÀº PC ¾È¿¡ ÇϳªÀÇ PC ó·³ BIOS ¿Í °¢Á¾ ÀåÄ¡µéÀ» °¡»óÀ¸·Î µ¿ÀÛÇÒ¼ö ÀÖ°Ô ÇØÁÝ´Ï´Ù. ÀÌ ¹®¼­ÀÇ ³¡ºÎºÐ¿¡¼­ BOCHS ·Î °£´ÜÇÑ ¾î¼Àºí¸® ÇÁ·Î±×·¥À» ºÎÆÃÇØ¼­ µ¿ÀÛÇϴ°ÍÀ» ÇØº¸µµ·Ï ÇϰڽÀ´Ï´Ù. 1. ´Ù¿î·Îµå ¹× ¼³Ä¡ ´Ù¿î·Îµå¿Í ¼³Ä¡´Â ³Ê¹« °£´ÜÇØ¼­ ¼³¸íÇÒ°ÍÀÌ º°·Î ¾øÀ»°Í °°³×¿ä. ¿ì¼± Á¦ ȨÆäÀÌÁö³ª bochs ȨÆäÀÌÁö¿¡¼­ ´Ù¿î·Îµå¸¦ Çϼ¼¿ä. OSx86 ȨÆäÀÌÁö (http://osx86.codesum.org/data/vm/bochs-2p4.exe) Bochs ȨÆäÀÌÁö (http://bochs.sf.net) ±×¸®°í ¼³Ä¡´Â ¹ÙÀ̳ʸ®¸¦ ½ÇÇàÇÏ½Ã¸é µË´Ï´Ù. ÀÌ ¹®¼­¿¡¼­ ¼³Ä¡ °æ·Î´Â C:?ochs2p4 ·Î ÇϰڽÀ´Ï´Ù. ¼³Ä¡ÇϽǶ§ üũÇÏ´Â°Ç ¿øÇϽôµ¥·Î ÇØÁÖ½Ã¸é µË´Ï´Ù. 2. bochsÀÇ ¼³Á¤ ¿ì¼± °¡»ó¸Ó½ÅÀ» »ç¿ëÇϱâ Àü¿¡ ÀåÄ¡¿¡ ´ëÇØ¼­ ¼³Á¤À» ÇØÁÖ¾î¾ß ÇÕ´Ï´Ù. ¼³Á¤ÆÄÀÏÀº bochs2p4?ochsrc-sample.txt ÆÄÀÏÀÔ´Ï´Ù. ¿¡µðÅÍ Ã¢¿¡ ÆÄÀÏÀ» ¿­¾îº¸½Ã¸é ... ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # You many now use double quotes around pathnames, in case # your pathname includes spaces. #======================================================================= # CONFIG_INTERFACE # # The configuration interface is a series of menus or dialog boxes that # allows you to change all the settings that control Bochs's behavior. # There are two choices of configuration interface: a text mode version # called "textconfig" and a graphical version called "wx". The text # mode version uses stdin/stdout and is always compiled in. The graphical # version is only available when you use "--with-wx" on the configure # command. If you do not write a config_interface line, Bochs will # choose a default for you. ....................................... (Áß·«) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ´ÙÀ½°ú °°Àº ³»¿ëÀÌ ³ª¿É´Ï´Ù °Å±â¼­ ºÎÅÍ ½ÃÀÛÇÏÁÒ ... ¿ì¼± bochsrc-sample.txt ÆÄÀÏÀ» º¹»çÇØ¼­ bochsrc.txt ¶ó´Â À̸§ÀÇ ÆÄÀÏÀ» Çϳª ¸¸µì´Ï´Ù. ±×¸®°í bochsrc.txt ÆÄÀÏÀ» ¿­°í Á© À§¿¡¼­ ºÎÅÍ ¼³Á¤ÇϰڽÀ´Ï´Ù. # CONFIG_INTERFACE ================================ #config_interface: textconfig #config_interface: wx ================================ ÀÌ ¿É¼ÇÀº ÄÁÇÇ±× ¸ðµå¸¦ Á¤ÇÏ´Â °ÍÀÔ´Ï´Ù. textconfig ´Â ÅØ½ºÆ® ¸ðµå¸¦ ÅëÇØ¼­ ¼³Á¤À» ÇÏ°Ô µÇ°í, wx ´Â ±×·¡ÇÈ ¸ðµå¸¦ ÅëÇØ¼­ ¼³Á¤ÇÒ¼ö ÀÖ½À´Ï´Ù. bochs »ç¿ë°ú´Â ¾Æ¹«·± »ó°üÀÌ ¾øÀ¸¹Ç·Î ±×³É ³öµÎ°í ³»·Á°©´Ï´Ù. # DISPLAY_LIBRARY ================================ #display_library: amigaos #display_library: beos #display_library: carbon #display_library: macintosh #display_library: nogui #display_library: rfb #display_library: sdl #display_library: term #display_library: win32 #display_library: wx #display_library: x ================================ µð½ºÇ÷¹ÀÌ ¿É¼ÇÀÔ´Ï´Ù. ÀÌ ºÎºÐµµ Å©°Ô ¼³Á¤ÇÒ Çʿ䰡 ¾ø°Ú±º¿ä. º¸Å©½º°¡ µðÆúÆ® ¼³Á¤À» ÇØÁÝ´Ï´Ù. # ROMIMAGE ============================================================= #romimage: bios/BIOS-bochs-970717a romimage: file=bios/BIOS-bochs-latest, address=0xf0000 #romimage: file=bios/BIOS-bochs-2-processors, address=0xf0000 #romimage: file=bios/BIOS-bochs-4-processors, address=0xf0000 #romimage: file=bios/rombios.bin, address=0xf0000 ============================================================= »ç¿ëÇÒ ·Ò ¹ÙÀÌ¿À½º¸¦ ¼±ÅÃÇÕ´Ï´Ù. ¿©±â¼­ ±âÁ¸ ¼¼ÆÃÀ¸·Î ±×³É ¾²¼Åµµ µÇ±¸¿ä. ÇÁ·Î¼¼¼­°¡ 2°³ ȤÀº 4°³Â¥¸® Àΰæ¿ì 2-processors ȤÀº 4-processors ¸¦ »ç¿ëÇÏ½Ã¸é µÇ±¸¿ä. (Caution : Àú ¹ÙÀÌ¿À½ºµéÀº bochs2p4¿¡ ±×³É Ç®¾îÁ® ÀÖÀ»°Ì´Ï´Ù. ÀúÀ§¿¡ ³ª¿­µÈ ÆÄÀϵéÀ» bochs2p4 µð·ºÅ丮 ¹Ø¿¡ bios ¶ó´Â Æú´õ¸¦ ¸¸µé¾îÁֽðí, ±×ÂÊÀ¸·Î ¿Å°ÜÁÖ¼¼¿ä.) # MEGS ================================ #megs: 256 #megs: 128 #megs: 64 megs: 32 #megs: 16 #megs: 8 ================================ bochs ·Î µ¹¸± ¿î¿µÃ¼Á¦ÀÇ ¸Þ¸ð¸®¸¦ ¼³Á¤ÇÕ´Ï´Ù. À̰͵µ ¿øÇÏ´Â ¸¸Å­ ¸Þ¸ð¸®°¡ Çã¿ëÇϴ´ë·Î ÁÖ¼¼¿ä. # OPTROMIMAGE[1-4] ======================================================= #optromimage1: file=optionalrom.bin, address=0xd0000 #optromimage2: file=optionalrom.bin, address=0xd1000 #optromimage3: file=optionalrom.bin, address=0xd2000 #optromimage4: file=optionalrom.bin, address=0xd3000 ======================================================= Ãß°¡ ROMIMAGE ÀÔ´Ï´Ù. Àúµµ ¼³Á¤¾ÈÇϰí Àß ¾¹´Ï´Ù. ^^; ÇÊ¿äÇϽźÐÀº ·ÎµåÇØ¼­ ¾²¼¼¿ä. # VGAROMIMAGE ======================================= #vgaromimage: bios/VGABIOS-lgpl-latest vgaromimage: bios/VGABIOS-elpin-2.40 ======================================= ¿øÇÏ´Â VGABIOS ¸¦ ¼±ÅÃÇÕ´Ï´Ù. ±âº» ¼³Á¤À¸·Î ÇØµµ ¹«³­ÇÏÁÒ. C0000 ¿µ¿ª¿¡ ·ÎµåµË´Ï´Ù. (Caution : À§ÀÇ ¹ÙÀÌ¿À½º¿Í ¸¶Âù°¡Áö·Î... bochs2p4?ios ·Î À§ÀÇ ÆÄÀϵéÀ» ´Ù ¿Å°ÜÁÖ¼¼¿ä.) # FLOPPYA ============================================= floppya: 1_44=/dev/fd0, status=inserted #floppya: file=../1.44, status=inserted #floppya: 1_44=/dev/fd0H1440, status=inserted #floppya: 1_2=../1_2, status=inserted #floppya: 1_44=a:, status=inserted #floppya: 1_44=a.img, status=inserted ============================================= Floppy A: ¸¦ ¼³Á¤ÇÏ´Â °÷ÀÔ´Ï´Ù. ¿ì¼± Å©±â´Â 1_44 ·Î »ç¿ëÇÏ½Ã¸é µÇ±¸¿ä. ¸Ç ¹ØÀÇ ¼³Á¤À» ¼±ÅÃÇØÁÖ½Ã¸é µÇ°Ú³×¿ä. ´ÙÀ½ÀÇ ¿¹¸¦ º¸ÁÒ. #floppya: 1_44=a.img, status=inserted ¿ì¼± ÁÖ¼®Ã³¸®µÈ #À» Áö¿ì½Ã°í, 1_44´Â µð½ºÅ©ÀÇ Å©±â¸¦ ¸»ÇÕ´Ï´Ù. a.img ´Â µð½ºÅ©·Î ¾µ À̹ÌÁö ÆÄÀϸíÀÔ´Ï´Ù. ³ªÁß¿¡ ¿ì¸®°¡ ¾µ µð½ºÅ© À̹ÌÁö ÀÔ´Ï´Ù. Àú´Â ed.img ·Î ÇØµ×ÁÒ. status=inserted ´Â º¸Å©½º ¸Ó½ÅÀÌ ½ÃÀÛÇÒ¶§ »ðÀÔÇØµÎ°Ú´Ù´Â ¼Ò¸®ÀÔ´Ï´Ù. ejectµµ Àִµ¥ eject ´Â »©µÎ°Ú´Ù´Â ¼Ò¸®±¸¿ä. °á·ÐÀûÀ¸·Î ´ÙÀ½°ú °°ÀÌ Çß°ÚÁÒ. floppya: 1_44=ed.img, status=inserted # FLOPPYB ===================================== #floppyb: 1_44=b:, status=inserted floppyb: 1_44=b.img, status=inserted ===================================== Floopy B: ¸¦ »ç¿ëÇϱâ À§ÇØ ¼³Á¤ÇÏ´Â °ÍÀÌÁö¿ä. Àú´Â ¾È¾²·Á°í µÎ¹øÂ° ¶óÀÎÀ» ÁÖ¼®Ã³¸® Çß½À´Ï´Ù. #floppyb: 1_44=b.img, status=inserted ÀÌ·¸°Ô¿ä... # ATA0, ATA1, ATA2, ATA3 ======================================================= ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14 ata1: enabled=0, ioaddr1=0x170, ioaddr2=0x370, irq=15 ata2: enabled=0, ioaddr1=0x1e8, ioaddr2=0x3e8, irq=11 ata3: enabled=0, ioaddr1=0x168, ioaddr2=0x368, irq=9 ======================================================= HDD ³ª CDROM À» À§ÇÑ ATA ÄÁÆ®·Ñ·¯¸¦ ¼³Á¤ÇÕ´Ï´Ù. »ç¿ëÇҰ͸¸ enable »óŸ¦ 1·Î ¸¸µé¾î ÁÝ´Ï´Ù. # ATA[0-3]-MASTER, ATA[0-3]-SLAVE ========================================================================== ata0-master: type=disk, path="30M.sample", cylinders=615, heads=6, spt=17 #ata0-slave: type=cdrom, path=D:, status=inserted #ata0-slave: type=cdrom, path=/dev/cdrom, status=inserted ========================================================================== ¿©±â¼­´Â bximage ¶ó´Â ÇÁ·Î±×·¥À» »ç¿ëÇÕ´Ï´Ù. ¹°·Ð bochs ¼³Ä¡½Ã ÀÚµ¿ ¼³Ä¡µÇ´Â ÇÁ·Î±×·¥ÀÌÁÒ. ata0-master: type=disk, path="30M.sample", cylinders=615, heads=6, spt=17 ¿©±â¼­ type Àº µð½ºÅ©ÀÎÁö cdrom ÀÎÁö¸¦ ¼³Á¤ÇÏ°Ô µÇ±¸¿ä. path´Â ±âº»À» bochs2p4·Î µÇ¾îÀÖ½À´Ï´Ù. µû¶ó¼­ ÆÄÀÏ¸í¸¸ ¼³Á¤ÇØÁÖ½Ã¸é µË´Ï´Ù. 30M.sample ÀÌ°É hdd0.img ·Î ÇØÁֽðí, bximage ·Î hdd0.img ÆÄÀÏÀ» ¸¸µé¾îÁÖ¸é µË´Ï´Ù. ±×·³ ¿©±â¼­ bximage ¸¦ »ç¿ëÇØº¼±î¿ä ? c:?ochs2p4?ximage ======================================================================== bximage Disk Image Creation Tool for Bochs $Id: bximage.c,v 1.17 2002/11/26 11:21:31 cbothamy Exp $ ======================================================================== Do you want to create a floppy disk image or a hard disk image? Please type hd or fd. [hd] ¿©±â¼­ ¹°¾îº¸´Â°Ç À̹ÌÁö¸¦ ¸¸µé¶§ floppy À̹ÌÁö¸¦ ¸¸µé²¨³Ä hard disk À̹ÌÁö¸¦ ¸¸µé²¨³Ä±¸ ¹°¾îº¸´Â°Ì´Ï´Ù. ¿ì¸®´Â hdd0.img Áï hard disk À̹ÌÁö¸¦ ¸¸µé²¨´Ï±î hd ¸¦ ÀÔ·ÂÇØÁֽôøÁö ¾Æ´Ï¸é ±âº» ¼³Á¤ÀÌ [hd] ·Î µÇ¾îÀÖÀ¸´Ï±î ±×³É ¿£Å͸¦ ÀÔ·ÂÇØÁÖ½Ã¸é µË´Ï´Ù. ±×·³ ´ÙÀ½ È­¸éÀ» º¼±î¿ä ? Enter the hard disk size in megabytes, between 1 and 32255 [10] ÀÌ ³»¿ëÀº Çϵåµð½ºÅ© Å©±â¸¦ ¾ó¸¶·Î ÀâÀ»²¨³Ä°í ¹°¾îº¸´Â°Ì´Ï´Ù. ¿ì¸®°¡ ÀÛ¼ºÇÏ°ÔµÉ OS °¡ ¾ó¸¶³ª Ä¿Áú±î¿ä. ´ëÃæ 30¸Þ°¡ Á¤µµ·Î Àâ¾Æº¾½Ã´Ù. 30 À» ÀÔ·ÂÇÏ½Ã°í ¿£ÅÍ۸¦ ´­·¯ÁÖ¼¼¿ä. I will create a hard disk image with cyl=60 heads=16 sectors per track=63 total sectors=60480 total size=29.53 megabytes ÀÌ·¸°Ô ³ª¿ÀÁÒ... ÀÌ Á¤º¸¸¦ À§ÀÇ ata0-master ¿Í ´ÙÀ½°ú °°ÀÌ ¸ÂÃçÁÖ¼¼¿ä. ata0-master: type=disk, path="hdd0.img", cylinders=60, heads=16, spt=63 What should I name the image? [c.img] À̹ÌÁö À̸§À» ¹°¾îº¸´Â°ÅÁÒ. hdd0.img ¶ó°í ÀÔ·ÂÇÏ½Ã°í ¿£ÅÍ۸¦ ´­·¯ÁÖ¼¼¿ä. ±×·¯¸é ´ÙÀ½°ú °°Àº È­¸éÀÌ ³ª¿É´Ï´Ù. Writing: [] Done. I wrote 30965760 bytes to (null). The following line should appear in your bochsrc: ata0-master: type=disk, path="hdd0.img", cylinders=60, heads=16, spt=63 ÀÌÁ¦ À̹ÌÁö°¡ ¿Ï¼ºµÇ¾úÀ¸´Ï bochs2p4 Æú´õ·Î °¡º¸½Ã¸é hdd0.img ¶ó´Â 30¸Þ°¡ Â¥¸® À̹ÌÁö°¡ ¿Ï¼ºµÇ¾î ÀÖ½À´Ï´Ù. # DISKC: file=, cyl=, heads=, spt= ==================================================== #diskc: file="30M.sample", cyl=615, heads=6, spt=17 ==================================================== ÀÌ ¿É¼ÇÀº deprecated µÇ¾ú½À´Ï´Ù. ±×³É ³Ñ¾î°¡¼¼¿ä. # DISKD ==================================================== #diskd: file="diskd.img", cyl=615, heads=6, spt=17 ==================================================== ÀÌ ¿É¼Çµµ ¸¶Âù°¡Áö±¸¿ä. # CDROMD =========================================== #cdromd: dev=D:, status=inserted #cdromd: dev=/dev/cdrom, status=inserted =========================================== À̿ɼǵµ ¸¶Âù°¡ÁöÀÓ´Ù. ±×³É ³Ñ¾î°¡¼¼¿ä # NEWHARDDRIVESUPPORT: enabled=[0|1] ==================================== #newharddrivesupport: enabled=1 ==================================== ³Ñ¾î°¡¼¼¿ä ... # BOOT ================================ #boot: floppy boot: disk ================================ ¾î´À°ÍÀ¸·Î ºÎÆÃÇÒ°ÍÀÎÁö ¹°¾îº¸´Â°Ì´Ï´Ù. ±×³É floppy ·Î ¼³Á¤ÇÏÁÒ. boot: floppy # FLOPPY_BOOTSIG_CHECK: disabled=[0|1] ====================================== #floppy_bootsig_check: disabled=1 floppy_bootsig_check: disabled=0 ====================================== boot ¿É¼Ç¿¡¼­ ¼³Á¤ÇÑ ºÎÆ® ½Ã±×³ÊÃĸ¦ üũÇÏ´Â ºÎºÐÀÔ´Ï´Ù. ºÎÆ®¼½ÅÍÀÇ ³¡ºÎºÐ¿¡ 0xaa55 Äڵ带 üũ¾ÈÇÏ°Ú³Ä°í ¹°¾îº¸´Â°ÅÁÒ. ±×³É ³öµÎ½Ã¸é µË´Ï´Ù. ±×·³ üũÇÒ²¬¿ä. # LOG: ================================ #log: /dev/null log: bochsout.txt ================================ º¸Å©½º ½ÇÇà½Ã ·Î±×¸¦ ³²±â´Â °Ì´Ï´Ù °Á ³öµÎ¼¼¿ä. ¾Æ·¡ÂÊÀº º°·Î ¼³Á¤ÇÒ ÇÊ¿ä¾ø½À´Ï´Ù. ÀÌÁ¤µµ¸é ÃæºÐÇÏÁÒ. ÀÌÁ¦ bochsrc.txt ÆÄÀÏÀ» ÀúÀåÇØÁÖ¼¼¿ä. 3. bochsÀÇ ½ÇÇà bochs ¸¦ ±âº»ÀûÀ¸·Î ½ÇÇàÇϰԵǸé config ÆÄÀϵµ ·ÎµåÇØ¾ßµÇ°í, ±×¸®°í ½ÇÇàÇØ¾ß µÇ¹Ç·Î »ó´çÈ÷ ±ÍÂú½À´Ï´Ù. ½ºÅ©¸³Æ®¸¦ Çϳª ¸¸µé¾î¼­ ÇØ°áÇϵµ·Ï ÇÏÁÒ. c:?ochs2p4copy con bs.bat @echo off bochs -qf bochsrc.txt^Z 1°³ ÆÄÀÏÀÌ º¹»çµÇ¾ú½À´Ï´Ù. ³¡ºÎºÐ¿¡ ^Z´Â F6 Æã¼ÇŰ ÀÔ·ÂÇÏ½Ã¸é µË´Ï´Ù. ÀÌÁ¦ ½ºÅ©¸³Æ®°¡ ¿Ï¼ºµÇ¾ú±º¿ä. c:?ochs2p4?s ¸¦ ½ÇÇàÇØÁÖ½Ã¸é ´ÙÀ½°ú °°ÀÌ bochs°¡ ½ÇÇàµÇ´Â ¸ð½ÀÀ» º¼¼ö°¡ ÀÖ½À´Ï´Ù. 4. boot sector ÇÁ·Î±×·¥ ÀÛ¼º ¿ì·Á¸Ô±â ½ÄÀÌ µÇ¾î¼­ Á˼ÛÇÕ´Ï´Ù¸¸ ... Boot Sector ¿¹Á¦ 1¹ø ÄÚµå(·¹Áö½ºÅÍ Á¤º¸Ãâ·Â)¸¦ »ç¿ëÇϵµ·Ï ÇϰڽÀ´Ï´Ù. ¿ì¼± ´ÙÀ½ ÇÁ·Î±×·¥À» ÀÛ¼ºÇØÁÖ¼¼¿ä. #source : boot.asm ================================================================ [org 0h] ; ij¸®Áö ¸®Åϰú ¶óÀÎÇǵå(?) ¸ÅÅ©·Î ; bios ÀÎÅÍ·´Æ® 10h ´Â È­¸é Ãâ·Â°ú °ü°èµÈ °Ì´Ï´Ù. %macro CRLF 0 mov ax, 0E0Dh xor bx, bx int 10h mov al, 0Ah int 10h %endmacro ; Ãâ·Â ¸ÅÅ©·Î %macro PRINT 1 pop dx mov di, %1 call printreg mov ax, 0E20h xor bx, bx int 10h %endmacro ; ·¹Áö½ºÅ͵éÀ» ½ºÅÿ¡ ¿­¶ó°Ô Áý¾î ³ÖÁÒ EntryPoint: push sp push ss call NextLine ; IP+5 on the stack NextLine: push cs push es push ds push bp push di push si push dx push cx push bx push ax ; ·¹Áö½ºÅͰªÀ» ¼¼ÆÃÇØµÎ°í, À½ ÀßÀº ¸ð¸£°ÚÁö¸¸ ; È­¸éÁÂÇ¥¸¦ ¼Â¾÷ÇÏ´Â ÀÛ¾÷À̰ÚÁÒ. ; ÀÚ¼¼ÇÑ bios int 10h ·¹Áö½ºÅÍ °ª¿¡ ´ëÇÑ ¼³¸íÀº ; ¾î¼Àºí·¯ Ã¥À» ÂüÁ¶ÇØÁÖ¼¼¿ä. mov ax, 1301h mov bx, 0007h mov cx, 23 mov dh, 10 mov dl, 1 push cs pop es mov bp, String int 10h CRLF CRLF ; ¸ðµç ·¹Áö½ºÅÍ °ªÀ» macro¸¦ ÀÌ¿ëÇØ¼­ Ãâ·ÂÇϴ±º¿ä. PRINT _AX PRINT _BX PRINT _CX PRINT _DX CRLF PRINT _SI PRINT _DI PRINT _BP CRLF PRINT _DS PRINT _ES CRLF PRINT _CS ; Á¶À§¿¡ NextLine call ÇÒ¶§ IP+5ÀÛ¾÷À» ÇѰź¸À̽ÃÁÒ. ; sub ax,5 ´Â IP °ª Ãâ·ÂÇϱâ Àü¿¡ ; ±×´ë·Î Ãâ·ÂÇÏ¸é ¾û¶×ÇÑ °ªÀÌ ³ª¿À±â¿¡ ¼öÁ¤Çϴ°ŰÚÁÒ. pop ax sub ax, 5 push ax PRINT _IP PRINT _SS PRINT _SP CRLF ; ºñÇÁÀ½ Ãâ·Â mov ax, 0E07h int 10h ; ¾Æ¹«°Íµµ ¾ÈÇÕ´Ï´Ù. ±×³É -_- ÀâÁúÀÌÁÒ. hang: jmp hang ; DS:DI¿¡ ÀÇÇØ Æ÷ÀÎÆ® µÇ°í ÀÖ´Â DX ÀÇ 16bit hexadecimal ¼ýÀÚ¸¦ 3 ¹®ÀÚ½ºÆ®¸µÀ¸·Î Ãâ·ÂÇϱâ À§ÇÑ ¾à°£ ³­ÀâÇÑ ÇÁ·Î½ÃÁ® printreg: mov ah, 0Eh xor bx, bx mov al, byte[di] int 10h mov al, byte[di+1] int 10h mov al, byte[di+2] int 10h xchg dl, dh rol dl, 4 rol dh, 4 xor bx, bx mov ah, 0Eh mov cx, 4 ploop: mov al, dl and al, 0Fh shr dx, 4 add al, '0' cmp al, '9' jbe nochange add al, 'A' - '9'-1 nochange: int 10h loop ploop ret ; Data Section String equ $ + 7C00h db "initial register values" _AX equ $ + 7C00h db "AX=" _BX equ $ + 7C00h db "BX=" _CX equ $ + 7C00h db "CX=" _DX equ $ + 7C00h db "DX=" _SI equ $ + 7C00h db "SI=" _DI equ $ + 7C00h db "DI=" _BP equ $ + 7C00h db "BP=" _SP equ $ + 7C00h db "SP=" _IP equ $ + 7C00h db "IP=" _CS equ $ + 7C00h db "CS=" _DS equ $ + 7C00h db "DS=" _ES equ $ + 7C00h db "ES=" _SS equ $ + 7C00h db "SS=" ; ÀÌ ÄÚµåÀÇ 5¹øÂ° ¶óÀÎÀ¸·Î ¿Ã¶ó°¡º¸¼¼¿ä. ; org 0h º¸À̽ÃÁÒ. ; ¿©±â¼­ org 510 Àº ù¹øÂ° ¼½ÅÍ 512byteÁß¿¡ ; 510¹øÂ° byteºÎÅÍ ¾Æ·¡ µ¥ÀÌÅ͸¦ 0AA55h ¸¦ ; »ðÀÔÇϰڴٴ ÀǹÌÀÔ´Ï´Ù. times 510-($-$$) db 0 dw 0AA55h ================================================================ ±×¸®°í ³ª¼­ ´ÙÀ½°ú °°ÀÌ ¾î¼Àºí ÀÛ¾÷À» °ÅĨ´Ï´Ù. #assemble [example] === nasm -o [bochs¿¡¼­ ¼³Á¤ÇÑ floppyA ÀÇ À̹ÌÁöÀ̸§] boot.asm === ÀúÀÇ °æ¿ì´Â ´ÙÀ½°ú °°ÀÌ ÇϰÚÁÒ. nasm -o ed.img boot.asm ÀÌ·¸°Ô ÇØÁÖ½ÅÈÄ bochs ¸¦ ½ÇÇà ÇϽøé ... ^^; ºÎÆÃ½Ã ed.img ¶ó´Â floppyA ÀÇ À̹ÌÁö ÆÄÀÏÀ» ÀаԵǰí, ÀÚµ¿ÀûÀ¸·Î À§ ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ°ÚÁÒ. ÀÌ·±½ÄÀ¸·Î Â÷ÃûÂ÷Ãû Á¢±ÙÇØ°¡¸é µÉ°Å¿¹¿ä. ÇѰÉÀ½¾¿ ÇѰÉÀ½¾¿ ¸»¿¹¿ä... ps. Ȥ½Ã¶óµµ lkdp ¿¡ Âü¿©ÇÏ½Ã°í ½ÍÀº ºÐÀÌ °è½Ã¸é ... °°ÀÌ ¿Ü±¹¾ÖµéÇÏ°í °°ÀÌ ÀÛ¾÷ÇØº¸°í ½Í³×¿ä. °ü½ÉÀÖÀ¸½Ã¸é Á¦°Ô ¸ÞÀÏÁÖ¼¼¿ä ^^; # dualpage.muz.ro [2008-01-26]