安装 bochs,dd for windows,nasm,并将安装目录加入到环境变量中。

我用的bochs版本是2.6.8

1.用 bochs 中 bximage.exe 创建新的 img 文件

2.编写汇编代码并编译成二进制文件

test.asm汇编文本文件

org 0x7C00    ;主引导记录的内存地址
jmp entryentry:mov ax, 0mov ss, axmov ds, axmov es, axmov si, msg    ;将msg地址赋给siputLoop:mov al, [si]    ;等同 mov al, byte [si]  将si地址开始的一个字节的值放入al中add si, 1    ;si = si+1cmp al, 0    ;al与0比较je fin        ;如上面比较相等 则跳转到fin 不相等则不跳转,执行后面命令mov ah, 0x0eint 0x10jmp putLoopfin:HLT  ;暂停jmp finmsg:DB 0x0a, 0x0aDB "hello,jadeshu!";DB 0times 510-($-$$) db 0;填充510字节的0,$$表示编译后的起始地址dw 0xaa55 ;表示结束,加上前面的510字节正好512字节满足条件

用cmd 命令输入nasm test.asm -o test.bin 编译成二进制文件

3.将test.bin文件写入如上面第1点讲解创建的映像文件a.img内

在 cmd 中使用指令

dd if=test.bin of=a.img bs=512 count=1 conv=notrunc

将test.bin写入 a.img映射文件内

如果没有dd命令,在windows下可以安装cygwin,又简单又方便使用linux命令!

4.新建一个文件bosh.src,文件名你自己可以随便命名,如下是软盘启动的配置文件[硬盘配置以#注释]:

megs:32romimage:file=$BXSHARE/BIOS-bochs-latestvgaromimage:file=$BXSHARE/VGABIOS-lgpl-latestfloppya:1_44=a.img,status=inserted#软盘映射
boot:floppy
#硬盘
#boot:disk#分配HD为60M,根据分配硬盘大小,cylinders, heads, spt会变化
#ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
#ata0-master: type=disk, mode=flat, path="boot.img", cylinders=121, heads=16, spt=63log:bochsout.txtmouse:enabled=0
keyboard: keymap=$BXSHARE/keymaps/x11-pc-de.map

5.启动

在命令指示符中键入 .\bochs.exe -f bosh.src

点击start按钮即可运行!

6.调试

在命令指示符中键入 .\bochsdbg.exe -f bosh.src

点击start按钮即可运行!

即到第一条指令 jmp 0XF000:E05B  地址为:f000:fff0 即FFFF0 (1M的最后16字节),因为实模式下只能读取1M内存 

bochs模拟器创建映像文件 、写入文件并启动相关推荐

  1. python open写入_Python3 open() 函数详解 读取文件写入文件追加文件二进制文件

    Python3 open() 函数详解 读取文件写入文件追加文件二进制文件 open()函数的主要作用是打开文件并返回相应文件对象,使用文件对象可以对当前文件进行读取.写入.追加等操作,默认情况下&q ...

  2. 多余逗号的CSV文件写入文件的解决方案

      大家好,我是爱编程的喵喵.双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中.从事机器学习以及相关的前后端开发工作.曾在阿里云.科大讯飞.CCF等比赛获得多次Top名次.现 ...

  3. 使用字符流 创建文件 写入文件 复制文件

    import java.io.*; /**    * 使用字符流创建文件复制文件  * 在盘符中文件夹  * 在文件夹中添加文件  * 在文件中写文字  *   复制文件  * */ public c ...

  4. python读文件操作-python文件操作读取文件写入文件

    读取文件 要使用文本文件中的信息,首先需要将信息读取到内存中.为此,你可以一次性读取文件的全部内容,也可以以每次一行的方式逐步读取. 读取整个文件 要读取文件,需要一个包含几行文本的文件.下面首先来创 ...

  5. java 服务器 文件写入文件_java 从服务器下载文件并保存到本地

    昨天在做一个项目时,用到了从服务器上下载文件并保存到本地的知识,以前也没有接触过,昨天搞了一天,这个小功能实现了,下面就简单的说一下实现过程: 1.基础知识 当我们想要下载网站上的某个资源时,我们会获 ...

  6. cc37a_demo_C++_异常_(1)-txwtech-_打开-读取文件-写入文件-使用方法

    //37_21days_Cpp_异常_(1)-txwtech-cc37a_demo.cpp //异常 //传统的处理方法 //现代的处理方法:处理异常 //>---try //>>- ...

  7. C语言 文件操作| 文件关闭 |文件写入 |文件读取

    文件读写函数: · 文件读取: 转载于:https://www.cnblogs.com/souhaite/p/10969814.html

  8. python pandas读取excel-python pandas 读取文件 写入文件excel

    读取数据 import pandas as pd import collections def readLocationCodeForExcel(): read_file = r"test. ...

  9. python读取excel写入mysql pandas_python pandas 读取文件 写入文件excel

    读取数据 import pandas as pd import collections def readLocationCodeForExcel(): read_file = r"test. ...

  10. Linux系统编程(文件)———文件打开/创建、写入、读取

    文件编程 打开/创建文件 写入文件 读取文件 文件光标位置 打开/创建文件 函数原型 //头文件#include <sys/types.h>#include <sys/stat.h& ...

最新文章

  1. ios自动布局(1)
  2. 我与技术------2012程序之路
  3. 切割图形_3D打印、激光切割、图形化编程,六一科普活动喊你来报名啦!
  4. VC(MFC、ATL)中 得到2个SYSTEMTIME时间差
  5. html云雾效果,PS中怎么做像这样的云雾效果?(有图)?
  6. 告诉你,Spring Boot 真是个牛逼货
  7. WinCE 控制面板的创建
  8. hasp 加密 java_加密软件HASP的使用说明
  9. linux 下i2c读写命令,S3C2440 Linux下的I2C驱动以及I2C体系下对EEPROM进行读写操作
  10. C#LeetCode刷题之#628-三个数的最大乘积( Maximum Product of Three Numbers)
  11. JS_prototype
  12. 2013-07-29 IT 要闻速记快想
  13. C++两个类互相引用,如何处理最好
  14. Atitit 2016年attilax事业成就表
  15. 手把手带你从零开始完整开发经典游戏【俄罗斯方块】,全部逻辑只用不到200行代码。
  16. linux jvm gc日志分析,JVM之GC统计以及日志分析
  17. ODM、JDM、OEM、OBM
  18. Ubuntu fastboot 烧写
  19. 常见的图像重采样算法
  20. unity官方社区,来一起学习

热门文章

  1. win10键盘全变成快捷键_电脑键盘灵敏度设置方法
  2. Mysql如何跨库查询数据?
  3. liscov替换原则
  4. android编程如何调整屏幕亮度,Android编程设置屏幕亮度的方法
  5. python实现·数据结构与算法之单向链表
  6. 矢量数据 秦岭淮河_秦岭-淮河一线的大致纬度
  7. 腾讯云申请免费短信验证码
  8. 传奇私服服务器怎么增加npc,传奇新建NPC/npc修改功能/NPC修改模版
  9. 2020德勤面试开始了吗_刚去四大(德勤)面试,我只说了三个字,就拿到了offer!...
  10. 一文看懂马尔科夫过程