分享好友 系统运维首页 频道列表

Linux下Bochs,NASM安装和使用 linux bom

Linux系统  2023-03-08 15:020

以Ubuntu为例,先更新一下:

sudo apt-get update
sudo apt-get upgrade

然后安装Bochs环境:

sudo apt-get install build-essential xorg-dev libgtk2.0-dev

安装NASM

NASM官网下载,这以nasm-2.14.02.tar.gz为例:用

tar zxvf nasm-2.14.02.tar.gz

解压后编译安装

cd nasm-2.14.02.tar.gz
./configure
make
sudo make install

输入

whereis nasm

显示

/usr/bin/nasm

安装成功!

安装Bochs

Bochs官网下载,这以bochs-2.6.11.tar.gz为例:解压文件用

tar zxvf bochs-2.6.11.tar.gz

解压后编译安装

cd bochs-2.6.11.tar.gz
./configure --enable-debugger --enable-disasm
make
sudo make install

输入

bochs

显示
Linux下Bochs,NASM安装和使用
安装成功!

创建镜像

可以在桌面上新建个文件夹nasm,然后进入这个文件夹,在命令行输入:
Linux下Bochs,NASM安装和使用
就会在文件夹中创建一个a.img。

编译代码写入镜像

这以《x86汇编语言:从实模式到保护模式》中代码为例:保存名为code.asm在nasm里

         ;代码清单7-1
         ;文件名:c07_mbr.asm
         ;文件说明:硬盘主引导扇区代码
         ;创建日期:2011-4-13 18:02

         jmp near start

 message db '1+2+3+...+100='

 start:
         mov ax,0x7c0           ;设置数据段的段基地址 
         mov ds,ax

         mov ax,0xb800          ;设置附加段基址到显示缓冲区
         mov es,ax

         ;以下显示字符串 
         mov si,message          
         mov di,0
         mov cx,start-message
     @g:
         mov al,[si]
         mov [es:di],al
         inc di
         mov byte [es:di],0x07
         inc di
         inc si
         loop @g

         ;以下计算1到100的和 
         xor ax,ax
         mov cx,1
     @f:
         add ax,cx
         inc cx
         cmp cx,100
         jle @f

         ;以下计算累加和的每个数位 
         xor cx,cx              ;设置堆栈段的段基地址
         mov ss,cx
         mov sp,cx

         mov bx,10
         xor cx,cx
     @d:
         inc cx
         xor dx,dx
         div bx
         or dl,0x30
         push dx
         cmp ax,0
         jne @d

         ;以下显示各个数位 
     @a:
         pop dx
         mov [es:di],dl
         inc di
         mov byte [es:di],0x07
         inc di
         loop @a

         jmp near $ 


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

编译代码:

nasm -f bin code.asm -o code.bin -l code.lst

把程序写入镜像

dd if=code.bin of=a.img

执行NASM代码

在nasm里创建bochsrc.txt,内容为

megs:128
#模拟器的内存  

romimage:file=/usr/local/share/bochs/BIOS-bochs-latest
#这个是BIOS-bochs-latest的路径,可能不一样

vgaromimage:file=/usr/local/share/bochs/VGABIOS-lgpl-latest  
#这个是VGABIOS-lgpl-latest的路径,也可能不一样

floppya:1_44=a.img,status=inserted 
#这个是启动软盘,在当前目录下,如果不在当前目录,需要指明路径  

boot:floppy  
#表示从软盘启动

log:bochsout.txt  
#日志输出文件

执行:

bochs -f bochsrc

显示
Linux下Bochs,NASM安装和使用
再执行

bochs

Linux下Bochs,NASM安装和使用
选择6开始模拟,出现黑窗口,输入C显示
Linux下Bochs,NASM安装和使用
成功!

查看更多关于【Linux系统】的文章

展开全文
相关推荐
反对 0
举报 0
评论 0
图文资讯
热门推荐
优选好物
更多热点专题
更多推荐文章
linux下如何单独编译设备树? linux设备树是什么
答: make vendor/device_name.dtb  如: make freescale/fsl-1043a-rdb.dtb

0评论2023-02-10369

移植linux3.7到nuc900系列开发板遇到的问题
通过移植学习linux新版本内核,大概了解一下内核变化。记录一下移植过程中遇到的问题或值得注意的地方。1,添加一款arm9芯片的支持首先修改\arch\arm\tools\mach-types文件添加一行w90p950evbMACH_W90P950EVBW90P950EVB同目录下的脚本文件在编译内核时会根据

0评论2023-02-10697

linux下安装redis3.2
这部分来自网络: http://blog.csdn.net/cuibruce/article/details/535015321.下载下载地址:http://www.redis.io/download选取当前最新版本3.2.1下载,上传到linux上,进行解压缩:[root@mongodb1 redis]# lsredis-3.2.1 redis-3.2.1.tar.gz进入redis-3.2.1目录

0评论2023-02-10962

终于解决了Linux下运行OCCI程序一直报Error while trying to retrieve text for error ORA-01804错误
终于解决了Linux下运行OCCI程序一直报Error while trying to retrieve text for error ORA-01804错误http://blog.csdn.net/zklth/article/details/7184032Linux下 和 Windows 下 Oracle Instant Client 的安装.http://fableking.iteye.com/blog/2115724 http

0评论2023-02-10637

linux lvm删除导致无法启动
要想编辑/etc/fstab文件,我们需要在系统中重新挂载根目录,使其具有可读写状态,使用如下命令:mount -o remount,rw /该条命令的作用是,以可读写的形式重新挂载根分区。然后再编辑/etc/fstab文件,就可以正常编辑。如下:

0评论2023-02-10931

linux中的strip命令简介------给文件脱衣服【转】
转自:http://blog.csdn.net/stpeace/article/details/47090255版权声明:本文为博主原创文章,转载时请务必注明本文地址, 禁止用于任何商业用途, 否则会用法律维权。作为一名Linux开发人员, 如果没有听说过strip命令, 那是很不应该的。 strip这个单词,

0评论2023-02-10728

linux下常用文件系统 linux支持的文件系统
不同的操作系统需要使用不同类型的文件系统,为了与其他操作系统兼容,以相互交换数据,通常操作系统都能支持多种类型的文件系统。Linux内核支持十多种不同类型的文件系统,下面对Linux常用的文件系统作一个简单介绍。ext2与ext3文件系统ext是第一个专门为Lin

0评论2023-02-10794

linux下将Python环境默认更改为Python3.6
步骤:#删除原来指向python2的软链接sudo mv /usr/bin/python /usr/bin/python.bak #/usr/local/python3.6/bin/python3.6 这个路径为实际的python3.6的bin文件夹下的Python3.6的路径,这个按照自己的实际情况进行更改 sudo ln -s /usr/bin/python3.6 /usr/bin

0评论2023-02-10852

Linux更改SSH默认端口 linux设置ssh端口
1.修改ssh配置文件  vim /etc/ssh/sshd_config  将 #Port 22 改为 Port 10023(更改的端口号最好在1024~65535间,不和其他服务端口冲突就ok)2.关闭防火墙  systemctl stop firewalld.service3.重启ssh服务  systemctl restart sshd.service4.新建ssh

0评论2023-02-10765

mongodb 对内存的占用监控 ——mongostat,linux系统可用的内存是free + buffers + cached
刚开始使用mongodb的时候,不太注意mongodb的内存使用,但通过查资料发现mongodb对内存的占用是巨大的,在本地测试服务器中,8G的内存居然被占用了45%。汗呀。 本文就来剖析一下mongodb对内存的具体使用方法,以及生产环境针对mongodb占大量内存的问题的解决

0评论2023-02-10641

linux grep命令参数及用法详解---linux管道命令grep
功能说明:查找文件里符合条件的字符串。语  法:grep [-abcEFGhHilLnqrsvVwxy][-A显示列数][-B显示列数][-C显示列数][-d进行动作][-e范本样式][-f范本文件][--help][范本样式][文件或目录...]补充说明:grep 指令用于查找内容包含指定的范本样式的文件,

0评论2023-02-10315

更多推荐