美文网首页
8086汇编 — HelloWrold程序

8086汇编 — HelloWrold程序

作者: 清雨季 | 来源:发表于2019-09-28 11:00 被阅读0次

步骤一 下载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程序

    步骤一 下载nasm编译器 nasm编译器用于把汇编代码转换为机器指令,免费,直接在官网上下载安装即可,安装完成后...

  • 微机原理与接口与接口技术第四章汇编程序设计

    4.1 汇编语言的格式 4.1.1 8086汇编语言程序的一个例子 8086汇编的一个语句行是由4个部分组成的,即...

  • 汇编分析&编译器优化

    汇编的种类 8086汇编(8086处理器是16bit的CPU) Win32汇编 Win64汇编 ARM汇编(嵌入式...

  • 逆向 - arm64汇编 - 第一天

    1. 汇编语言种类 8086汇编(8086处理器是16bit的CPU)Win32汇编Win64汇编ARM汇编(嵌入...

  • 1.汇编初识

    汇编语言常见种类: 8086汇编 (8086处理器是16bit的CPU) Win32汇编 Win64汇编 AT&T...

  • iOS逆向之初识别汇编

    汇编语言是使用助记符代替机器语言。 汇编语言的种类,目前讨论比较多的汇编语言有 • 8086汇编(8086处理器是...

  • 8086汇编-汇编程序、函数

    Hello World! 今天我们来编写第一个汇编程序,还是经典打印Hello world,这里我们在window...

  • ARM64汇编学习笔记一(初始汇编)

    汇编语言的种类 目前讨论比较多的汇编语言有:8086 汇编(8086处理器是16bit 的 CPU)Win32 汇...

  • 汇编语言知多少(二): 指令使用

    在上篇文章中我们具体介绍了汇编语言的一些背景, 以及 8086汇编 工作原理, 在这篇文章中具体讲解8086汇编指...

  • 8086汇编

    编程语言的发展 机器语言由0和1组成 汇编语言(Assembly Language)用符号代替了0和1,比机器语言...

网友评论

      本文标题:8086汇编 — HelloWrold程序

      本文链接:https://www.haomeiwen.com/subject/oxbzuctx.html