使用GNU as汇编器写引导扇区测试程序

本文介绍了Linux早期系统中使用的汇编器,并详细讲述了如何使用GNU as汇编器改写赵炯博士的引导扇区程序。实验在Linux Deepin20环境下进行,涉及bochs模拟器和GNU as 2.31.1版本。实验内容包括源程序、Makefile和bochsrc.txt配置文件,最终展示执行效果。
摘要由CSDN通过智能技术生成

       在Linux0.1x系统中使用了两种汇编器。一种是as86汇编器及配套的ld86链接器;另一种是GNU的汇编器gas(as),使用GNU ld链接器来链接产生目标文件。as86和ld86是由MINIX-386的主要开发者之一Bruce Evans编写的 Intel 8086、80386汇编编译程序和链接程序。Linus当时使用两种汇编编译器的主要原因在于对于Intel x86处理器系列来讲,Linus那时的GNU汇编编译器仅能支持i386及以后出的CPU代码指令,若不采用特殊方法就不能支持生成运行在实模式下的16位代码程序。直到1994年以后发布的GNU as汇编器才开始支持编译16位代码的 .code16 伪指令。但直到内核版本2.4.x起,bootsect.s和setup.s程序才完全使用统一的GNU as来编写。

      下面用GNU as改写下赵炯博士编著的基于linux0.11内核的《Linux 内核完全剖析》[机械工业出版社2006.8]一书中第三章的一个引导扇区例子。

      实验环境:Linux Deepin20,bochs2.6.9,GNU as 版本号为2.31.1

      实验程序目录下的文件有:

源程序内容为: 

/*  boot.s --bootsect.s的框架程序。用代码0x07替换串msg1中1字符,然后在屏幕第19行第1列显示    */
BOOTSEG = 0x07c0                /* BIOS加载boot代码的原始段地址 */
.code16                         /*      */
.section .text            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值