使用Bochs写Hello world

article/2025/10/21 9:36:17

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了!效果如图:

在这里插入图片描述


http://chatgpt.dhexx.cn/article/8hSVCDdn.shtml

相关文章

Bochs编程环境安装

Bochs编程环境安装 写在前面 为了更好的记录自己学习过程以及踩过的坑,记录一下《操作系统真相还原》的编程环境安装。 安装过程参考了CSDN的这篇博客:安装Vmware Station 安装Ubuntu 装载配置Bochs 1. 本地安装环境 本机系统:win10 64位专…

Bochs安装

近期,准备跟着《一个64位操作系统的设计与实现》干点正事儿。第一步就是安装bochs。书里写得太简略,网上太杂,我自己记录一下自己安装的流程,希望对看到的人有帮助。 sudo apt-get install build-essential sudo apt-get install…

bochs基础使用

bochs 1、安装 sudo apt-get install bochssudo apt-get install bochs-x2、编写文件 vim boot.asmorg 07c00h ; 告诉编译器程序加载到 7c00处 mov ax, cs mov ds, ax mov es, ax call DispStr ; 调用显示字符串例程 jmp $ ; 无限循环 Dis…

Bochs简易教程

Bochs是个啥? 简单来说bochs是一个模拟器,能够完整的模拟一台计算机。详细来讲bochs是X86硬件平台的开源模拟器,完全可以通过软件来给我们提供各种所需的硬件资源。 和bochs类似的虚拟机软件还有我们常用的VMware、Virtuabox,但…

虚拟机上安装bochs的过程(保姆级别)

整个过程:(全程开启root权限:1.打开终端;2.输入:su;3输入密码) 1.在虚拟机上有bochs安装包; curl -O https://nchc.dl.sourceforge.net/project/bochs/bochs/2.6.9/bochs-2.6.9.ta…

Windows下Bochs的简单使用

Bochs的安装 安装Bochs后,安装目录如下: 可以用到的东西分为两大类: 应用程序 先说一下bochs.exe、以及bochdbg.exe前者直接运行虚拟机,后者可以从头开始调试。 然后就是bximage.exe,这是一个专门用于生成软盘或者…

gettimeofday/clock_gettime

我们写程序的时候经常会使用计时函数,比如RPC中计算超时时间,日志中打印当前时间,性能profile中计算某个函数的执行时间等。在使用时间函数的时候,我们一般默认认为时间函数本身的性能是很高的,对主逻辑的影响可以忽略…

gettimeofday 函数

使用C语言编写程序需要获得当前精确时间&#xff08;1970年1月1日到现在的时间&#xff09;&#xff0c;或者为执行计时&#xff0c;可以使用gettimeofday()函数。 库为 #include <sys/time.h> 函数原型 int gettimeofday(struct timeval*tv, struct timezone *tz); …

clock_gettime 函数笔记

函数"clock_gettime"是基于Linux C语言的时间函数,他可以用于计算精度和纳秒。 #include<time.h> int clock_gettime(clockid_t clk_id,struct timespec *tp); clk_id : 检索和设置的clk_id指定的时钟时间。 CLOCK_REALTIME:系统实时时间,随系统实时时间改变…

date.gettime()与时间的获取

date.gettime()返回的是什么&#xff1f; java.util.Date ----------- date.getTime()返回的是什么&#xff1f; 问题&#xff1a; ------------- Date date new Date(); System.out.println(date.getTime()); 输出结果是1210745780625 编译时间当时时间大概是2008年5…

Linux下clock_gettime函数详解

要包含这头文件<time.h> 且在编译链接时需加上 -lrt ;因为在librt中实现了clock_gettime函数。 --- struct timespec ts; clock_gettime(CLOCK_MONOTONIC,ts); printf("%d %d",ts.tv_sec, ts.tv_nsec);打印出来的时间跟 cat /proc/uptime第一个参数一样 /proc/…

Gettimeofday的用法

先看gettimeofday的语法定义&#xff1a; 使用前先包含头文件#include<sys/time.h> 第一个参数&#xff1a;是个timeval *类型的结构体&#xff0c;该结构体如下 timeval.tv_sec 就是秒呗 timeval.tv_usec 就是微秒 一般我们使用gettimeofday是用来…

Java中Date类中getTime()方法

public long getTime() 返回自1970年1月1日以来&#xff0c;由 Date对象表示的00:00:00 GMT的毫秒 数 。 结果 自1970年1月1日以来&#xff0c;以此日期为准的00:00:00 GMT的毫秒数。 这是JDK文档中对于getTime()方法的官方解读 在我实际使用中发现这个方法可以解决日期月日输…

PPT插入视频

最近需要在PPT中插入一段视频&#xff0c;但是发现在插入的时候并不是一帆风顺&#xff0c;所以在这里做一下记录。 1、可能出现如下的提示 2、解决的办法 在OFFICE2010中插入视屏和音频文件时, 注意应确认是微软的格式, 即wmv及wma格式, 否则即使插入后, 在插入时也可能出现…

怎么将PPT中的视频文件保存下来

先右键包含视频的PPT文件&#xff0c;选择‘打开方式’&#xff0c;打开方式的子菜单栏中有一个选择其他应用。 因为我之前操作过&#xff0c;所以会显示那个WinRAR的应用程序&#xff0c;第一个使用的话一般不会出现&#xff0c;点击‘更多应用’&#xff0c;找到‘在这台电脑…

如何在PPT中自动同时播放两个视频

嵌入视频 视频工具中选择自动播放 动画中第二个视频选择和上一动画同时

从视频中提取图片(截取ppt)

从视频中提取图片 大聪明2.0上线 本文将介绍如何快速从网课视频中提取ppt Step1 从视频中提取图片 使用win自带的“电影与电视” 点击这个小铅笔&#xff0c;选择“保存视频中的照片” 在弹出的新窗口内就可以将视频按一帧一帧的照片展示出来&#xff0c;对想要保存的照片点击…

PPt插入视频同时播放

1.导入需要的三个视频 2.对每个视频在 动画 里面设置为 播放 3.选择第一个视频的 4.其他的视频设置为

wps——ppt中的视频提取

在写小丸工具箱时我已经删除了自己录的视频&#xff0c;只有ppt中有存稿&#xff0c;在查阅后成功的提取视频文件。这里要骂骂骂wps没有媒体视频另存为的选项要不然也不需要在ppt外部进行处理。&#xff08;如果是我没有找到&#xff0c;那烦请提醒我这个选项在那里&#xff0c…

如何使用计算机讲解ppt,如何录制PPT讲解视频?

录制PPT视频方式推荐 如何在电脑上录制PPT视频&#xff1f;本文介绍了三种方案&#xff0c;让你轻松将幻灯片录制为视频。 Microsoft PowerPoint 微软Office自带录制幻灯片功能&#xff0c;需要注意的是Office 2007版本没有此功能&#xff0c;可以先升级到高版本的Office&#…