标签:技术 demo 自动 输入 视频 汇编 语言 type bin
作者:丁宋涛附表是它们的说明
表1-1 BIOS int 10号说明表
动手实践
在实现一个简单的操作系统时,我们是不可能拿一台真正的机器做实验的,一是很少有人有这个条件,还有就是那样做比较麻烦。所以我们使用虚拟机来模拟一台真实的电脑,这样我们就能直接用虚拟机加载软盘镜像来启动了。
在Windows下有很多虚拟机软件,例如Virtual PC、Vmware和Bochs等等。其中微软公司推出的VirtualPC2007已经提供了免费下载,同时Bochs系统调试功能非常强大,我们将这两个平台作为主要的实现平台。
Virtual PC做演示,而Bochs主要用作调试。今天的实验我们主要使用Bochs虚拟机,下面给出一些虚拟机设置的指导。
Bochs是一种开源且高度可移植的IA-32(x86)PC模拟器,用C++写成,能够在大部分常见的平台上运行。它包括了对Intel x86 CPU,通用I/O设备,和定制BIOS的模拟。通常情况下,Bochs能够被编译成模拟386,486或者Pentium CPU。Bochs能够模拟运行大部分的操作系统,包括Linux,DOS 和 Windows。
Bochs的下载可以通过" https://sourceforge.net/projects/bochs/ "访问,如图1-2所示:
图 1-2 Bochs下载链接
接下来,会导航到bochs的发行界面界面,如图1-3所示:
图 1-3 Bochs发行导航
最后,进入下载界面,如果是Windows平台,选择exe格式即可,如图1-4所示:
图 1-4 Windows版本的Bochs
下载完毕之后,一路next安装即可。(安装时建议将自带的“DLX Linux Demo”选中,这样可以有利于我们参考Bochs的安装文件)
其次,我们需要下载的工具是汇编编译器nasm。类似的,我们可以到NASM的官方网站下载,参考网址为
http://www.nasm.us/
下载完毕之后,一路next安装即可。
最后,由于我们是在虚拟机上进行试验,我们还需要一个虚拟软盘读写工具,这里我们使用“dd for windows”,下载地址为
http://www.chrysocome.net/download/ dd-0.5.zip
直接解压即可。
引导扇区编写显示字符串的引导程序
ORG 7c00h ;告诉编译器,在7c00处加载程序
mov ax, cs
mov ds, ax
mov es, ax
; 清屏
mov ah, 06h ; 屏幕初始化或上卷
mov aL, 00h ; AH = 6, AL = 0h
mov cx, 0 ; 左上角开始: (0, 0)
mov dl, 4fh ; 到第x列
mov dh, 1fh ; 到第x行
int 10h ; 显示中断
; 显示字符串
mov ax,&Msg
mov bp,ax ; es:bp=串地址
mov ah, 13h ; AH:13显示字符串
mov al, 1h ; AH = 13, AL = 01h
mov bx, 000Bh ; 页号为0(BH = 0) 黑底青字(BL = 0Bh)
mov cx, MsgLngth ; CX = 串长度
mov dl, 00h ; 起始列
mov dh, 00h ; 起始行
int 10h ; 显示中断
Msg: db "Welcome To OS World ^-^";
首先,我们将上述代码使用记事本编写,并保存为boot.asm。接下来我们使用nasm对上述代码进行编译:
在开始菜单中,选中运行,在运行中键入cmd,打开命令行菜单。
图1-5进入命令行模式
在命令行状态下,切换到nasm的安装目录,在我的机器中nasm的安装路径为D:\Program_Files\nasm,我们使用如下的dos命令:
cd D:\Program_Files\nasm,如图1-6所示:
(提示安装路径中最好不要有空格或中文)
图1-6 切换工作目录演示
此时,我们的工作目录仍然是逻辑盘符C,我们键入D:,即可到达nasm目录。
图 1-7 进入nasm目录
这是因为我们需要启动nasm才能将我们boot.asm代码编译成为可执行代码,我们将我们刚刚编写好的boot.asm,拷贝到nasm目录下,键入如下命令:
nasm boot.asm –o boot.bin
在虚拟机中,我们是使用虚拟文件vhd来模拟硬盘的,我们可以直接在windows 10中使用diskpart命令完成,首先我们进入cmd命令行,如图1-8所示:
图1-8 使用diskpart生成虚拟硬盘
在接下来,我们在diskpart中输入命令:create vdisk file=你需要存放的文件名(我这里是f盘下的dingst.vhd)maximum=10 type=fixed,如同1-9 所示
图 1-9获得vhd文件
接下来,我们将得到dingst.vhd文件拷贝到“dd for windows”的安装目录。同样的,我们将编译成功得到的boot.bin拷贝至“dd for windows”的安装目录,在命令行状态下切换到该目录,键入如下命令:
dd if=boot.bin of=dingst.vhd bs=512 count=1
就将我们的可执行文件拷贝至a.img虚拟软盘中,我们启动Virtual PC。在首次进入Virtual box时,我们需要生成一个虚拟机:
首先,系统会启动“新建虚拟机向导(New Virtual Machine Wizard)”,询问是否使用向导一步步创建新的虚拟机。我们选择“Create a virtual machine”,点击“Next”,如图1-9所示:
图 1-10 设置Virtual box虚拟机
接下来系统会提问将虚拟机文件存放在哪个位置,我们选择虚拟机的存放路径。然后,类型选择other,如图1-10所示,其他均保持默认即可:
图1-11 设置虚拟机类型
同时,内存选择16MB为宜,最大不要超过64M(当年windows95,超过64MB的内存,OS反而会崩溃)。
图1-12 设置虚拟机内存
再接下来,核心是选择已经烧录了引导程序的vhd作为你的硬盘,如图1-13所示:
当虚拟设置完毕,我们点击start按钮,启动虚拟机,如图1-11所示:
图1-13选择虚拟机的硬盘
接下来直接启动我们的虚拟机,即可得到我们的实验结果,如图1-14所示:
图1-14 虚拟硬盘引导启动成功
相关视频请点击https://edu.51cto.com/course/23737.html
请添加链接描述
标签:技术 demo 自动 输入 视频 汇编 语言 type bin
原文地址:https://blog.51cto.com/xiacaojun/2508753