From 358f1a4d33f595baecd5bd2b1d74f398b1deaf90 Mon Sep 17 00:00:00 2001 From: Yourtion Date: Fri, 5 Sep 2014 15:01:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B1=89=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02_day/Makefile | 6 ++--- 02_day/ipl.nas | 64 ++++++++++++++++++++++++------------------------- 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/02_day/Makefile b/02_day/Makefile index c595bc8..e6d71d8 100644 --- a/02_day/Makefile +++ b/02_day/Makefile @@ -1,10 +1,10 @@ -# ƒfƒtƒHƒ‹ƒg“®ì +# 默认动作 default : ../z_tools/make.exe img -# ƒtƒ@ƒCƒ‹¶¬‹K‘¥ +# é•œåƒæ–‡ä»¶ç”Ÿæˆ ipl.bin : ipl.nas Makefile ../z_tools/nask.exe ipl.nas ipl.bin ipl.lst @@ -13,7 +13,7 @@ helloos.img : ipl.bin Makefile ../z_tools/edimg.exe imgin:../z_tools/fdimg0at.tek \ wbinimg src:ipl.bin len:512 from:0 to:0 imgout:helloos.img -# ƒRƒ}ƒ“ƒh +# 其他指令 asm : ../z_tools/make.exe -r ipl.bin diff --git a/02_day/ipl.nas b/02_day/ipl.nas index d7b1981..a777748 100644 --- a/02_day/ipl.nas +++ b/02_day/ipl.nas @@ -1,35 +1,35 @@ ; hello-os ; TAB=4 - ORG 0x7c00 ; ‚±‚̃vƒƒOƒ‰ƒ€‚ª‚Ç‚±‚ɓǂݞ‚Ü‚ê‚é‚Ì‚© + ORG 0x7c00 ; 指明程åºè£…è½½åœ°å€ -; ˆÈ‰º‚Í•W€“I‚ÈFAT12ƒtƒH[ƒ}ƒbƒgƒtƒƒbƒs[ƒfƒBƒXƒN‚Ì‚½‚߂̋Lq +; 标准FAT12æ ¼å¼è½¯ç›˜ä¸“ç”¨çš„ä»£ç  Stand FAT12 format floppy code JMP entry - DB 0x90 - DB "HELLOIPL" ; ƒu[ƒgƒZƒNƒ^‚Ì–¼‘O‚ðŽ©—R‚É‘‚¢‚Ă悢i8ƒoƒCƒgj - DW 512 ; 1ƒZƒNƒ^‚̑傫‚³i512‚É‚µ‚È‚¯‚ê‚΂¢‚¯‚È‚¢j - DB 1 ; ƒNƒ‰ƒXƒ^‚̑傫‚³i1ƒZƒNƒ^‚É‚µ‚È‚¯‚ê‚΂¢‚¯‚È‚¢j - DW 1 ; FAT‚ª‚Ç‚±‚©‚çŽn‚܂邩i•’Ê‚Í1ƒZƒNƒ^–Ú‚©‚ç‚É‚·‚éj - DB 2 ; FAT‚̌”i2‚É‚µ‚È‚¯‚ê‚΂¢‚¯‚È‚¢j - DW 224 ; ƒ‹[ƒgƒfƒBƒŒƒNƒgƒŠ—̈æ‚̑傫‚³i•’Ê‚Í224ƒGƒ“ƒgƒŠ‚É‚·‚éj - DW 2880 ; ‚±‚̃hƒ‰ƒCƒu‚̑傫‚³i2880ƒZƒNƒ^‚É‚µ‚È‚¯‚ê‚΂¢‚¯‚È‚¢j - DB 0xf0 ; ƒƒfƒBƒA‚̃^ƒCƒvi0xf0‚É‚µ‚È‚¯‚ê‚΂¢‚¯‚È‚¢j - DW 9 ; FAT—̈æ‚Ì’·‚³i9ƒZƒNƒ^‚É‚µ‚È‚¯‚ê‚΂¢‚¯‚È‚¢j - DW 18 ; 1ƒgƒ‰ƒbƒN‚É‚¢‚­‚‚̃ZƒNƒ^‚ª‚ ‚é‚©i18‚É‚µ‚È‚¯‚ê‚΂¢‚¯‚È‚¢j - DW 2 ; ƒwƒbƒh‚Ì”i2‚É‚µ‚È‚¯‚ê‚΂¢‚¯‚È‚¢j - DD 0 ; ƒp[ƒeƒBƒVƒ‡ƒ“‚ðŽg‚Á‚ĂȂ¢‚̂ł±‚±‚Í•K‚¸0 - DD 2880 ; ‚±‚̃hƒ‰ƒCƒu‘å‚«‚³‚ð‚à‚¤ˆê“x‘‚­ - DB 0,0,0x29 ; ‚æ‚­‚í‚©‚ç‚È‚¢‚¯‚Ç‚±‚Ì’l‚É‚µ‚Ä‚¨‚­‚Æ‚¢‚¢‚炵‚¢ - DD 0xffffffff ; ‚½‚Ô‚ñƒ{ƒŠƒ…[ƒ€ƒVƒŠƒAƒ‹”Ô† - DB "HELLO-OS " ; ƒfƒBƒXƒN‚Ì–¼‘Oi11ƒoƒCƒgj - DB "FAT12 " ; ƒtƒH[ƒ}ƒbƒg‚Ì–¼‘Oi8ƒoƒCƒgj - RESB 18 ; ‚Ƃ肠‚¦‚¸18ƒoƒCƒg‚ ‚¯‚Ä‚¨‚­ + DB 0xeb, 0x4e, 0x90 + DB "HELLOIPL" ; å¯åŠ¨æ‰‡åŒºå称(8字节) + DW 512 ; æ¯ä¸ªæ‰‡åŒºï¼ˆsector)大å°ï¼ˆå¿…é¡»512字节) + DB 1 ; 簇(cluster)大å°ï¼ˆå¿…须为1个扇区) + DW 1 ; FATèµ·å§‹ä½ç½®ï¼ˆä¸€èˆ¬ä¸ºç¬¬ä¸€ä¸ªæ‰‡åŒºï¼‰ + DB 2 ; FAT个数(必须为2) + DW 224 ; 根目录大å°ï¼ˆä¸€èˆ¬ä¸º224项) + DW 2880 ; 该ç£ç›˜å¤§å°ï¼ˆå¿…须为2880扇区1440*1024/512) + DB 0xf0 ; ç£ç›˜ç±»åž‹ï¼ˆå¿…须为0xf0) + DW 9 ; FAT的长度(必??9扇区) + DW 18 ; 一个ç£é“(track)有几个扇区(必须为18) + DW 2 ; ç£å¤´æ•°ï¼ˆå¿…??2) + DD 0 ; ä¸ä½¿ç”¨åˆ†åŒºï¼Œå¿…须是0 + DD 2880 ; é‡å†™ä¸€æ¬¡ç£ç›˜å¤§å° + DB 0,0,0x29 ; æ„义䏿˜Žï¼ˆå›ºå®šï¼‰ + DD 0xffffffff ; (å¯èƒ½æ˜¯ï¼‰å·æ ‡å·ç  + DB "HELLO-OS " ; ç£ç›˜çš„å称(必须为11å­—?,ä¸è¶³å¡«ç©ºæ ¼ï¼‰ + DB "FAT12 " ; ç£ç›˜æ ¼å¼å称(必??8å­—?,ä¸è¶³å¡«ç©ºæ ¼ï¼‰ + RESB 18 ; 先空出18字节 -; ƒvƒƒOƒ‰ƒ€–{‘Ì +; 程åºä¸»ä½“ entry: - MOV AX,0 ; ƒŒƒWƒXƒ^‰Šú‰» + MOV AX,0 ; åˆå§‹åŒ–寄存器 MOV SS,AX MOV SP,0x7c00 MOV DS,AX @@ -38,23 +38,23 @@ entry: MOV SI,msg putloop: MOV AL,[SI] - ADD SI,1 ; SI‚É1‚ð‘«‚· + ADD SI,1 ; ç»™SI加1 CMP AL,0 JE fin - MOV AH,0x0e ; ˆê•¶Žš•\ަƒtƒ@ƒ“ƒNƒVƒ‡ƒ“ - MOV BX,15 ; ƒJƒ‰[ƒR[ƒh - INT 0x10 ; ƒrƒfƒIBIOSŒÄ‚Ño‚µ + MOV AH,0x0e ; 显示一个文字 + MOV BX,15 ; 指定字符颜色 + INT 0x10 ; 调用显å¡BIOS JMP putloop fin: - HLT ; ‰½‚©‚ ‚é‚Ü‚ÅCPU‚ð’âŽ~‚³‚¹‚é - JMP fin ; –³ŒÀƒ‹[ƒv + HLT ; 让CPUåœæ­¢ï¼Œç­‰å¾…指令 + JMP fin ; æ— é™å¾ªçޝ msg: - DB 0x0a, 0x0a ; ‰üs‚ð2‚ + DB 0x0a, 0x0a ; æ¢è¡Œä¸¤æ¬¡ DB "hello, world" - DB 0x0a ; ‰üs + DB 0x0a ; æ¢è¡Œ DB 0 - RESB 0x7dfe-$ ; 0x7dfe‚܂łð0x00‚Å–„‚߂閽—ß + RESB 0x7dfe-$ ; 填写0x00直到0x001fe DB 0x55, 0xaa