汇编语言写一个能用 VMware 启动的界面
__vector__ · · 科技·工程
本文章不是什么正经的讲解,纯娱乐,另外引用了别人的代码,如果侵权可以联系删除。
我大约 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
的源代码来自于一本书,我忘了什么名字。不过当时讲的仅仅是一个界面绘制,我把它搬运到了系统启动。