汇编语言写一个能用 VMware 启动的界面

· · 科技·工程

本文章不是什么正经的讲解,纯娱乐,另外引用了别人的代码,如果侵权可以联系删除。

我大约 4 年前在 CSDN 写的这个,看到不少人写这个类型的专栏,我也放在洛谷试试。

软件准备

首先,安装 VMware,版本没有什么要求。

再安装 nasm 并配好环境变量,用来将汇编源码编译为可执行文件。

之所以不用 masm 是因为 masm 不能在 64 位系统用。

实际操作

先创建一个文件,命名为 boot.s,内容如下:

BOOTSEG equ 0x07c0              ; BIOS 加载 bootsect 代码的原始段地址;

start:
        jmp BOOTSEG:go          ; 段间跳转。 INITSEG 指出跳转段地址, 标号 go 是偏移地址。
go:
        mov ax,cs               ; 段寄存器 cs 值-->ax,用于初始化数据段寄存器 ds 和 es。
        mov ds,ax
        mov es,ax
;画图
        mov ah,00
        mov al,06h
        int 10h ;设置640*480、16色彩色分辨率
        mov dx,50
back_1:
        mov cx,100
back_2:
        mov ah,0ch
        mov al,71h ;白底蓝色图 
        mov bh,0
        int 10h
        inc cx
        cmp cx,100
        jnz back_2
        inc dx
        cmp dx,150
        jnz back_1
loop1:  jmp loop1               ; 死循环。

        times 510-($-$$) db 0   ; 表示以后语句从地址 510(0x1FE)开始存放。
        dw 0xAA55               ; 有效引导扇区标志, 供 BIOS 加载引导扇区使用。

再在其同一文件夹下新建一个名为 makeos.bat 的文件。
内容如下:

nasm -f bin boot.s -o boot
dd if=boot of=boot.img
pause

注:dd 命令用于制作 img 映像。

然后,运行 makeos.bat,下面是结果,理论上会生成一个 boot.img

然后使用 VMware 创建虚拟机。

操作系统选择“其他”。

接下俩的操作,均按照默认就可以。

完成创建之后,添加硬件,此时应选择软盘驱动器,软盘则选择源码文件夹下的 boot.img。

选择界面:

最后,启动虚拟机。

注:需要将 VMware 最大化,否则显示不正常。

下面是正常的效果:

引用

程序 boot.s 的源代码来自于一本书,我忘了什么名字。不过当时讲的仅仅是一个界面绘制,我把它搬运到了系统启动。