《自己动手做操作系统》环境搭建

1.安装虚拟PC (Virtual PC),

   我的下载地址是:http://www.crsky.com/soft/759.html

   我下载的版本为:Virtual PC 2007 SP1 v6.0.192.0

 

2.安装MS-DOS

   我的下载地址是:http://www.onlinedown.net/soft/2465.htm

   我下载的版本为:MS-DOS 7.10

   但是在安装的过程中,我发现该版本为虚拟软驱版,有两个虚拟软盘,在安装的过程中,Virtual PC无法切换出来,加载第二张虚拟软盘,虽然装上第一张盘也可以用,但是一些附加的功能如,HD-COPY等没装上,总觉心里不踏实,所以又下载了一个虚拟光驱版的。

   我的下载地址是:http://help.cn-dos.net/soft/dos71cd.zip

   我下载的版本为:MS-DOS 7.10

 

   在Virtual PC 2007没有了象以前版本中的DOS Virtual Machine Additions.vfd所以在装了虚拟DOS系统后,不能使用共享文件夹,此处我们可以借用Virtual PC 2004中DOS Virtual Machine Additions.vfd。只好再下载一个Virtual PC 2004,在其他机器安装后找出后找出DOS Virtual Machine Additions.vfd

   进入虚拟机,菜单-->Floppy-->Capture Floppy Disk Image选择文件DOS Virtual Machine Additions.vfd。

   重起DOS虚拟机,然后切换到A:

   运行A:/DOSADD.BAT
   DOS附加模块会把以下三个文件安装到你的虚拟机上
   Fshare.exe
   CDrom.sys
   Idle.com

   重起DOS虚拟机,运行C:/VMADD中的FSHARE.EXE

   在虚拟pc的设置中进行共享文件夹的设置

   [注意]如果你在安装时使用了内存扩展UMB(EMM386),在运行一些程序时会报错,所以要屏蔽掉。         

              具体方法: 注释掉DOS中的C:/config.sys中emm386,即

                                REM DEVICE=c:/DOS71/EMM386.exe NOEMS 这一行。然后重启虚拟机

 

3.汇编语言编译器

   我的下载地址是:http://sourceforge.net/project/showfiles.php?group_id=6208

   我下载的版本为:DOS 32-bit binaries 2.03.01

                                Windows 32-bit binaries 2.03.01

 

   DOS 32-bit binaries 2.03.01也进行解压到某文件夹中,启动DOS虚拟机,通过上述共享文件夹方法,设置共享相应目录,同时已经将文件共享为盘符,呵呵,直接在虚拟DOS下将Z盘(我的共享文件夹虚拟成了Z盘符)下的DOS版本的Nasm复制到虚拟机的硬盘中.

   在c:/autoexec.bat文件为PATH环境变量添加对应的路径:

   用Edit打开c:/autoexec.bat, 在最后加入一行 SET PATH = C/ASM,(我汇编的拷贝目录为C/ASM)

   

4.生成一个最小的操作系统

   在虚拟DOS下新建一文件夹C:/asm,进入该目录,执行EDIT boot.asm

   在随后出现的编辑窗口中输入如下代码:

 

%define _BOOT_DEBUG                                ;可以在DOS下先进行调试

                                                                           ;实现真的系统时,将此行注释掉

                                                                           ;也就是做成一个.COM文件


%ifdef _BOOT_DEBUG
     org 0100H;
%else
     org 7C00H                                                    ; 告诉编译器程序加载到7c00处
%endif

     mov AX,CS
     mov DS,AX
     mov ES,AX

     call DispStr                                                    ;调用显示字符串例程

     jmp $                                                             ; 无限循环

   DispStr:                                                           

     mov AX,BootMessage
     mov BP,AX                                                  ; ES:BP = 串地址
     mov CX,str_len                                            ; CX = 串长度

     mov AX,01301H                                         ; AH = 13,  AL = 01h
     mov BX,000CH                                           ; 页号为0(BH = 0) 黑底红字(BL = 0Ch,高亮)
     mov DX,0C20H

     int 10H                                                         ; 10h 号中断
     ret

   BootMessage:db "Hello, OS world!"

      str_len equ $ - BootMessage
      times 510 - ($ - $$) db 0                            ; 填充剩下的空间,使生成的二进制代码恰好为512字节
      dw 0xAA55                                               ; 结束标志

    

    保存成boot.asm文件

    用命令行nasm boot.asm -o boot.com编译生成可以在DOS下执行的boot.com程序;

    直接运行boot.com生成效果如下:

   

    程序执行后处于死机状态

   

 

    我们实现的是真正的操作系统,要在裸机下运行,所以,将代码的第一句注释掉。;%define _BOOT_DEBUG  ,

    用命令行nasm boot.asm -o boot.bin进行编译生成boot.bin文件;用FloppyWriter工具写入到软盘镜像文件中(可以直接复制安装MS-DOS时候使用的软盘镜像文件,或者用WinImage软件新建一个1.44MB的软盘镜像);挂接相应的软盘镜像文件,启动虚拟机,就可以看到效果了。

    

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值