Day 1:配置Bochs以及调试模式

一 环境预备

Bochs的安装很简单,我们只需要去官网下载即可。http://bochs.sourceforge.net/

为了使用Linux命令行,我们可以安装WSL,也可以安装Cygwin(我的选用)

安装NASM。https://sourceforge.net/projects/nasm/

此外,为了完成写软盘的需求,安装了rawwritewin。http://www.chrysocome.net/rawwrite

安装完毕以后记得把软件添加到环境变量

二 写一个自己的Hello OS World

首先我们创建一个.asm文件,代码内容如下:

 org 07c00h ; 告诉编译器程序加载到 7c00处 mov ax, cs mov ds, ax mov es, ax                     call DispStr ; 调用显示字符串例程 jmp $ ; 无限循环
DispStr: mov ax, BootMessage mov bp, ax ; es:bp = 串地址 mov cx, 16 ; cx = 串长度 mov ax, 01301h ; ah = 13, al = 01h mov bx, 000ch ; 页号为 0(bh = 0) 黑底红字(bl = 0Ch,高亮) mov dl, 0 int 10h ; 10h 号中断 ret
BootMessage: db "Hello, OS world!" times 510-($-$$) db 0 ; 填充剩下的空间,使生成的二进制代码恰好为 dw 0xaa55 ; 结束标志

之后我们把这段代码用NASM编译一下,生成.bin文件

nasm boot.asm -o boot.bin

然后就是rawwritewin登场的时候了,我们要把.bin的内容写入软盘,不过这个时候不要急,我们先用bochs虚拟机新建一张软盘。命令如下:

bximage
//根据提示选择fd
//选择生成1.44的软盘
//新建的软盘名位a.img

生成软盘之后还别急,这时候我们还要配置一下Bochs虚拟机,大家可以搜索bochsrc文件(安装虚拟机时勾选了DLX Demo会自动创建),然后输入以下配置。注意 boot:,我们要将其修改为在软盘启动即boot:floppy,其他命令的解释也在注释里很清楚。

###############################################################
# bochsrc.txt file for DLX Linux disk image.
################################################################ how much memory the emulated machine will have
megs: 32# filename of ROM images
romimage: file=../BIOS-bochs-latest
vgaromimage: file=../VGABIOS-lgpl-latest# what disk images will be used
floppya: 1_44="a.img", status=inserted# hard disk
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata0-master: type=disk, path="hd10meg.img", cylinders=306, heads=4, spt=17# choose the boot disk.
# boot: c
boot: floppy
# default config interface is textconfig.
#config_interface: textconfig
#config_interface: wx#display_library: x
# other choices: win32 sdl wx carbon amigaos beos macintosh nogui rfb term svga# where do we send log messages?
log: bochsout.txt# disable the mouse, since DLX is text only
mouse: enabled=0# set up IPS value and clock sync
cpu: ips=15000000
clock: sync=both# enable key mapping, using US layout as default.
#
# NOTE: In Bochs 1.4, keyboard mapping is only 100% implemented on X windows.
# However, the key mapping tables are used in the paste function, so
# in the DLX Linux example I'm enabling keyboard_mapping so that paste
# will work.  Cut&Paste is currently implemented on win32 and X windows only.keyboard: keymap=../keymaps/x11-pc-us.map
#keyboard: keymap=../keymaps/x11-pc-fr.map
#keyboard: keymap=../keymaps/x11-pc-de.map
#keyboard: keymap=../keymaps/x11-pc-es.map

OK,虚拟机配置完了,就开始写软盘吧!

如果你使用linux命令:

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

如果你使用windows平台,请为你的windows安装cygwin或者dd命令支持。

cygwin官网安装:http://www.cygwin.com/install.html

dd for Windows: http://www.chrysocome.net/dd

我强烈建议在windows上学习操作系统的同志安装WSL或者cygwin,这样就可以方便地使用强大的linux命令了!

OK,软盘写完以后,我们就启动虚拟机吧!

直接打开你的Powershell,输入以下命令

bochs

你也可以指定配置文件开启虚拟机:

bochs -f bochsrc.bxrc

开启虚拟机后你应该就能看见我们写好的Hello OS World了!效果如图:

使用Bochs写Hello world相关推荐

  1. 如何写一个bootloader

    声明:本文为学习Codeproject文章的个人总结性文章,   原文:http://www.codeproject.com/Articles/664165/Writing-a-boot-loader ...

  2. 用bochs调试自己写的系统引导代码

    1 安装和配置bochs 首先从bochs.sourceforge.net里面把BOCHS给download下来,鉴于Windows的普及,仅仅谈BOCHS在win下的使用方法,其实在其它的OS中方法 ...

  3. 从零开始写玩具操作系统(一)bochs配置

    本章节完全参考 郑钢老师的<操作系统:真象还原> 我们的实验环境是在Windows 64位环境下 首先我们下载最新的bochs 下载地址: https://sourceforge.net/ ...

  4. 【自己动手写操作系统】bochs nasm 的安装

    前言 这是一个计划了很久的东西,一直以来都想自己写一下操作系统, 一直因为各种原因耽误了,最近又想起来这个事情,就开始动手干了.参数了<一个64位操作系统的实现>这本书,看下来应该是很棒的 ...

  5. 服务器系统无法使用gdt,《自己动手写操作系统》第三章第一个程序的问题。bochs加载后出现no bootable device.我在网上查了下,说是因为第一扇区最后2字节...

    没有以  aa55   结尾..请问应该怎么做呢. 另外,别人debug找出了这个问题的原因所在,看第一扇区的510.511字节的内容.. 我不懂怎么看.. $bochs   运行后 我按c..就直接 ...

  6. 自己动手写操作系统--搭建保护模式下的运行环境:bochs下安装freedos

    在进行保护模式的运行环境配置前,先看了了下书上的代码,编译运行结果如下:nasm 3_pmtest1.asm -o pmtest1.bin,可以看到界面出现了红色的 p 字 保护模式环境配置 1:在网 ...

  7. 手写操作系统1——在centos上安装bochs

    1.准备环境 下载bochs,网址:https://sourceforge.net/projects/bochs/files/bochs/2.6.2/ 将文件复制到虚拟机或者服务器上,并解压. 具体步 ...

  8. bochs c语言源码,自己写操作系统 2 - 安装bochs虚拟机

    以ubuntu操作系统为例 一.命令行安装 sudo apt-get install vgabios bochs bochs-x bximage 此方法方便,不过都说这个方法安装的bochs没有调试功 ...

  9. Linux中配置bochs

    配置环境: Ubuntu 12.10+ Bochs 2.6+ NASM 安装NASM: sudo aptitude install nasm bochs2.6下载地址:http://sourcefor ...

  10. bochs调试方法与指令详解

    bochs调试FAQ: 一 基本调试命令 1.       Q:如何从引导扇区开始设置断点? A: BIOS被载入内存中运行,其引导扇区的地址一般都是在0x7c00,因为在实模式下,逻辑地址和物理地址 ...

最新文章

  1. python 怎样使list 里面的数据相加
  2. (译)如何使用cocos2d来制作一个打地鼠的游戏:第一部分
  3. 数据结构-深度优先遍历和广度优先遍历(漫画)
  4. mysql 登录_Spring boot redis +mysql实现登录功能
  5. gis 联合 融合_GIS技术进化 | 我们为何需要跨平台GIS技术体系?
  6. label里面的文字换行_批量识别图中文字自动命名,让你1秒找到骚图!太强大了!...
  7. CentOS7搭建本地yum源之http服务
  8. java学习笔记 --- 面向对象3
  9. 数字影像系统 接收服务器,影像存储与传输系统(PACS)
  10. j2Cache线上异常问题排查记录
  11. python国际象棋的价值_python – 国际象棋negamax功能
  12. 2019年个人所得税计算机模板,2019年最新个税计算Excel模版,人手一份!
  13. This view is not constrained It is olny designtime positions,so it will jump.......的解决方法
  14. 某市体育彩票采用整数1,2,3,…,36表示36种体育运动,一张彩票可选择7种运动。编写程序,选择一张彩票的号码,使这张彩票的7个号码之和是105且相邻两个号码之差按顺序依次是1,2,3,4,5,6。
  15. 强化学习-入门教程(完整版)
  16. LINUX基础 第四次课 10月15日
  17. 系统集成项目管理工程师高频考点(第三章)
  18. MarkDown基本语法以及常用公式符号整理
  19. 同事告诉我们一个查询IMAIL日志技巧
  20. Flink处理迟到数据的几种方式

热门文章

  1. 怎样下载mysql5.5_如何下载5.5版的mysql
  2. 为AutoCAD提供可用字体-CAD字体库大全提供下载
  3. mipi和isp处理_汽车摄像头的图像信号处理ISP NVP2650
  4. 手机软件测试linux,手机终端软件测试浅析
  5. 软件测试的测试方法及测试流程
  6. VB6各类源码开源 - 开源研究系列文章
  7. 无人驾驶汽车系统入门(十四)——ROS入门与实践(1)
  8. 思科/华为计算机网络工程师,软考网络工程师华为、思科指令大全
  9. BlackBerry Enterprise Service 10 for Android下载
  10. 动态数组索引越界问题