------2017.4.2 9:23于唐山------
START SEGMENT
最近做了不少方面的事情,虽然乏善可陈,但是的确开拓了眼界,锻炼了能力。
学OS这件事,筹划了2个月左右,选定了于渊的《Orange's》书来作为自己的入门书籍。这一系列的文章,将作为我的学习笔记和心得,供大家批评参考。
毫无疑问,操作系统是依赖底层的。于先生的书2010年出版,距离如今已有7年,主流操作系统已从IA32进化到了IA64,很多软件或者变了模样,或者不再适用,料必我在实践途中将遇到很多诡异的问题,在此记下备忘。如果能再给后人一点帮助,那就是我的荣幸了。
END START
------说正事的分割线------
这一章的内容非常简单,于先生step by step的都说了。我在此列举几个遇到的小问题。
问题大致有这几个:
1.使用大家不太熟悉的Nasm汇编器。
二者还是有一点区别的,大家可以来NASM 2.12.02稳定版下载下载win64位的对应软件,并在主站查看相关文档。
2.rawrite软盘扇区读写。
2017年,软盘已经退出历史舞台。
而且rawrite软件已经不能在win10.0.14393这样的64系统上运行了。
经过考量,作者决定选用WinHex18代替rawrite,成效良好。WinHex18下载
1.插入一个U盘(实验前,最好先提前格式化一次)
2.工具-打开磁盘-选中U盘并且打开,就可以看到u盘的引导扇区
3.将boot.bin文件在winhex中打开,然后选中并复制到引导扇区这里,就大功告成了。
3.dosbox-自动挂载方法
在dosbox安装文件夹下,打开DOSBox 0.74 Options.bat批处理,打开后会出现.conf文本文件,最后一行有一个autoexec,在它下面添加2行挂载代码:
----------------------------------2017.4.9更新---------------------------------------------
最近用NASM用的多了,发现他和masm还是有很大不同的,在这里写一下:
让很多人不习惯的估计就是取消offset关键字,nasm将所有的标号都看作是地址,比如:
0050:0032H label1 dw 0012H
0050:0034H label2 equ 0012H
NASM中 MASM中
mov ax, [label1] mov ax, [0032H] mov ax, [0032H]
mov ax, label1 mov ax, 0032H mov ax, 0032H
mov ax, [label2] mov ax, [0034H] mov ax, [0012H]
mov ax, label2 mov ax, 0034H mov ax, [0012H]
NASM将所有的标号,都当做偏移量来看待;而MASM则对equ和dw两种情况做了区分,将equ定义的符号直接作为内容看待,dw定义的符号作为偏移量看待。