8086汇编 — HelloWrold程序

步骤一 下载nasm编译器

nasm编译器用于把汇编代码转换为机器指令,免费,直接在官网上下载安装即可,安装完成后最好配置一下环境变量,在控制台输入:nasm -version来测试是否安装成功:

步骤二 编写源代码

新建一个a.asm文件,输入以下代码:

mov ax,0xb800
mov ds,ax

mov byte [0x00],'a'
mov byte [0x02],'s'
mov byte [0x04],'m'
jmp $

times 510-($-$$) db 0
db 0x55,0xaa

然后执行编译:nasm -f bin a.asm -o a.bin

步骤三 安装virtualBox虚拟机

上一步编译了一个a.bin文件,执行这个a.bin的方式有很多,在windows上可以连接成exe执行,这里使用书上使用的方式,在虚拟机中执行。

首先下载安装virtualBox虚拟机,然后点新建按键新建一台虚拟机器。新建时要注意以下两点:

  • 虚拟机的类型版本要选择Other和Other/Unknown
  • 需要自己创建一个虚拟硬盘,硬盘的类型一定要是VHD,且一定要是固定大小的。至于硬盘大小,不要太小即可,例如可以选择100M。还有一点要记住这个硬盘文件位置,一会要写数据进去。

除了这两点,其他的内容随意就好,这还有一篇详细的安装使用方法VirtualBox安装手册

步骤四 把机器指令写入到硬盘中

计算机在启动时有一个约定:会把硬盘中最开始的512字节读取到内存执行,所以,我们只需要把刚刚编译好的机器指令a.bin写入到虚拟硬盘的最开始的512字节就行。

《x86汇编语言-从实模式到保护模式》一书的作者提供了一个工具可以写入,可以自行百度下载booktool使用,由于我用的是mac,作者只提供了windows的程序,所以只能自己写入Java代码来写入了

public class Tool {
    private static final String path = "/Users/luohao/VirtualBox VMs/8086/";
    public static void main(String[] args) throws Exception{
        RandomAccessFile randomAccessFile = new RandomAccessFile(path + "8086.vhd", "rw");
        FileInputStream fis = new FileInputStream(path + "a.bin");
        randomAccessFile.seek(0);
        byte[] buff = new byte[1024];
        int len = 0;
        while ((len = fis.read(buff)) >= 0) {
            randomAccessFile.write(buff, 0, len);
        }
        System.out.println("Finish...");
    }
}

注意运行时先修改a.bin文件的位置和你硬盘文件的位置

步骤五 执行

选择刚刚创建的虚拟机,点击启动即可


不出意外的话,屏幕上会显示asm 字符串

你可能感兴趣的:(8086汇编 — HelloWrold程序)