编写裸机上的汇编代码(初体验)

目录:从头编写一个64位操作系统内核

编写boot汇编代码,


	org 0x7c00
BaseOfStack	equ	0x7c00
Label_Start:
	mov ax,cs
	mov ds,ax
	mov es,ax
	mov ss,ax
	mov sp,BaseOfStack

;====clear screen======
	mov ax,0600h
	mov bx,0700h
	mov cx,0
	mov dx,0184fh
	int 10h
;====set focus=========
	mov ax,0200h
	mov bx,0000h
	mov dx,0000h
	int 10h
;==== display on screen : Start Booting...
	mov ax,1301h
	mov bx,000fh
	mov dx,0000h
	mov cx,10
	push ax
	mov ax,ds
	mov es,ax
	pop ax
	mov bp,StartBootMessage
	int 10h
	ret
StartBootMessage: db "Start Boot$"
	times 510-($-$$) db 0    //软盘一个扇区512字节,代码后面除去最后的两个字节都填充0
	dw 0xaa55



	

最后的dw 0xaa55将软盘第一个扇区的最后两位标记好,使软盘可以作为启动盘.

汇编:

nasm boot.asm -o boot.bin

创建一个软盘镜像:  执行命令

bximage 

选择1. Create new floppy or hard disk image

输入fd   (软盘)

使用默认大小1.44M(直接回车)

然后输入输出文件名:boot.img

将引导程序写入软盘:

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

因为在上一篇博客中已经配好了配置文件,所以我们只需要将软盘镜像放到虚拟机根目录下就可以了

mv boot.img bochs/

进入虚拟机根目录,然后执行虚拟机

cd bochs
bochs

然后选择6,开始模拟

弹出一个窗口

在之前的终端输入c开始

由于我们就写了一点点代码,执行完了之后就开始胡乱运行了.

然后我们使用Ctrl+c来终止虚拟机,然后界面就反应过来显示出下面的界面:

这样就成功地让裸机显示出了一段文字.

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值