This commit is contained in:
Yourtion
2014-09-05 15:01:38 +08:00
parent e041908391
commit 358f1a4d33
2 changed files with 35 additions and 35 deletions

View File

@@ -1,10 +1,10 @@
# デフォルト動
# 默认动
default :
../z_tools/make.exe img
# ファイル生成規則
# 镜像文件生成
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
# コマンド
# 其他指令
asm :
../z_tools/make.exe -r ipl.bin

View File

@@ -1,35 +1,35 @@
; hello-os
; TAB=4
ORG 0x7c00 ; このプログラムがどこに読み込まれるのか
ORG 0x7c00 ; 指明程序装载地址
; 以下は標準的なFAT12フォーマットフロッピーディスクのための記述
; 标准FAT12格式软盘专用的代码 Stand FAT12 format floppy code
JMP entry
DB 0x90
DB "HELLOIPL" ; ブートセクタの名前を自由に書いてよい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 ; このドライブ大きさをもう一度書く
DB 0,0,0x29 ; よくわからないけどこの値にしておくといいらしい
DD 0xffffffff ; たぶんボリュームシリアル番号
DB "HELLO-OS " ; ディスクの名前11バイト
DB "FAT12 " ; フォーマットの名前8バイト
RESB 18 ; とりあえず18バイトあけておく
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字节
; プログラム本
; 程序主
entry:
MOV AX,0 ; レジスタ初期化
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 ; 一文字表示ファンクション
MOV BX,15 ; カラーコード
INT 0x10 ; ビデオBIOS呼び出し
MOV AH,0x0e ; 显示一个文字
MOV BX,15 ; 指定字符颜色
INT 0x10 ; 调用显卡BIOS
JMP putloop
fin:
HLT ; 何かあるまでCPU停止させる
JMP fin ; 無限ループ
HLT ; CPU停止,等待指令
JMP fin ; 无限循环
msg:
DB 0x0a, 0x0a ; 改行を2つ
DB 0x0a, 0x0a ; 换行两次
DB "hello, world"
DB 0x0a ;
DB 0x0a ;
DB 0
RESB 0x7dfe-$ ; 0x7dfeまでを0x00で埋める命令
RESB 0x7dfe-$ ; 填写0x00直到0x001fe
DB 0x55, 0xaa