nask と nasm
haribote OSは、アセンブラを極力減らしてC言語で記述されています。ということはアセンブラ部分さえクリアできれば、よりなじみ深い nasm + gcc で開発できるはずです。というわけで、まずはブートセクタ部分を nasm にかけてみました。短いプログラムなのに結構違いがあるようです。先は長そうです・・。
ORGの違い
nask (ipl09.nas)
ORG 0x7c00 ; このプログラムがどこに読み込まれるのか
nasm (firstboot.asm)
org 0
プログラムの開始アドレスが異なっています。ということは以降のアドレスも全部 0x7c00 分引かなければいけないんですかね?教えてえらいひと。
RESBとTIMES
nask (ipl09.nas)
RESB 18 ; とりあえず18バイトあけておく : : RESB 0x7dfe-$ ; 0x7dfeまでを0x00で埋める命令
nasm (firstboot.asm)
TIMES 18 db 0 ; とりあえず18バイトあけておく : : TIMES 0x01fe-($-$$) db 0 ; 0x7dfeまでを0x00で埋める命令
RESBという命令がないみたいで、代わりにTIMESを使っていました。ここでも記法に違いがあるようです。