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的软盘镜像);挂接相应的软盘镜像文件,启动虚拟机,就可以看到效果了。