linux0.12 - boot.s

前言

bochs环境搭好了, 换个0扇区的代码,看看在bochs和U盘上是否都能正常运行。

编译boot.s

!
! @file D:\ls\study\linux_prj\old_linux\src\3.1.2\boot.s
! @brief
!
! 编译环境: debian9.6
! 系统自带的as, ld无法编译16位的boot代码
!
! 安装as86, ld86
! apt-get install bin86
!
! as86 -v
! as86 version: 0.16.17
!
! ld86 -v
! ld86 version: 0.16.17
!
! as86的帮助 => man as86 => 翻页用page_up page_down, 
! 在SecureCRT中还是用上下箭头来翻页吧,虽然看的有点晕(用page_up, page_down, 翻到man之外了)
!
! as86参数的含义
! 	-0 => cpu为8086
! 	-l => 显示列表文件
! 
! ld86参数的含义
!	-0 => cpu为8086
!	-s => 去掉符号
!
! 编译出来的./boot比512多出了32bytes的minix头, 用dd命令去掉
! dd命令参数的含义
!	bs=1 块大小为0
!	skip=32 跳过32个块
!	if=./boot 指定输入文件
!	of=./boot_512b 指定输出文件
! dd命令执行完的验证
!	用bc4比较./boot和./boot_512, 可以看到./boot_512内容和./boot后面的512字节内容相同
!
! 编译源码
! rm ./*.o ./boot
! as86 -0 -l -o ./boot.o ./boot.s
! ld86 -0 -s -o ./boot ./boot.o
! dd bs=1 skip=32 if=./boot of=./boot_512b

.globl begtext, begdata, begbss, endtext, enddata, endbss

.text
begtext:

.data
begdata:

.bss
begbss:

.text
BOOTSEG = 0x07c0

entry start
start:
	jmpi go, BOOTSEG
go:
	mov ax, cs
	mov ds, ax
	mov es, ax
	mov [msg1+17], ah
	mov cx, #20
	mov dx, #0x1004
	mov bx, #0x000c
	mov bp, #msg1
	mov ax, #0x1301
	int 0x10
loop0:
	jmp loop0

msg1:
	.ascii "Loading system ..."
	.byte 0x0d, 0x0a

.org 510
	.word 0xAA55

.text
endtext:

.data
enddata:

.bss
endbss:


替换bochs镜像

用winhex19.6将boot_512内容换到udisk_33mb.img的0~512字节.

在bochs中运行

echo off
rem @file D:\ls\study\linux_prj\old_linux\src\3.1.2\run.bat
cd "D:\ls\study\linux_prj\old_linux\src\3.1.2"
"C:\Program Files (x86)\Bochs-2.3.6\bochs" -q -f .\my_bochsrc.bxrc

在这里插入图片描述

替换U盘镜像

用winhex将udisk_33mb.img的0~512内容替换到U盘0扇区。找个本本插上,开机用U盘启动,看看效果。
替换完U盘的0扇区,拔插一下,在win10中能显示U盘,但是双击已经进不去了。
将U盘插入winxp的本本,双击U盘,显示"磁盘未初始化,是否现在格式化"。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值