![](https://img-blog.csdnimg.cn/20190902115923972.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
汇编语言探索
文章平均质量分 91
以知更鸟小屋的名义,开发的各种开源软件和程序,记录编写的过程和心路,主要以汇编语言为主
luobing4365
十多年编程经历,前5年主要开发语言是x86汇编和C/C++,开发各类OptionRom。后5年涉及一些驱动开发和App以及UEFI编程,从此更多的精力用在了团队和公司管理上。然不忘初心,仍孜孜不倦地在各技术领域钻研,其乐无穷。
合作译著《现代X86汇编语言程序设计》、《21世纪机器人》
展开
-
Foxdisk-代码仓库介绍暨完结篇
(请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365)Foxdisk之代码仓库介绍暨完结篇1 Foxdisk12 Foxdisk23 Foxdisk3考虑到未来几年的工作中,基本上不会大量使用X86的汇编,并且大概率不会再研究Legacy BIOS了(2020年Legacy BIOS基本就消失了,除了虚拟机中偶尔还用到),我准备完结Foxdisk的博客了。本来还计划了十几篇的内容,关于如何实现时钟中断的进程调度、硬盘的访问和分区、从汇编到C语言的原创 2021-09-19 14:08:47 · 466 阅读 · 0 评论 -
Foxdisk12 – 图形显示1
(请保留 -> 作者:罗冰)最近在写UEFI博客的时候,遇到些阻碍。我想移植一款开源的GUI到UEFI下,目前还没有找到。不过,博客开天窗这么久,总是不像话,所以回来继续写Foxdisk的博客了。Foxdisk的博客更新较慢,主要是觉得这些都是Legacy BIOS下的东西,可能想了解的人不多,我也是随性而写,并不制定计划。使用Foxdisk3的代码,很难演示如何进行图形编程。...原创 2019-11-18 21:04:47 · 409 阅读 · 0 评论 -
Foxdisk11-小字库显示汉字2
(请保留 -> 作者:罗冰)刚从大学毕业那会,对操作系统极其入迷,总想搞清楚底层是怎么运行的。其中最感兴趣的是图形的显示,BIOS对硬件的控制等。找了很多资料看,正好公司的一些项目上也需要用到,就这么磕磕碰碰地实现了各种显示的代码。Foxdisk的代码中,Vesa.c和Vesa.h就包含了显示的所有信息。主要是遵循了vesa的标准进行显示,采用C嵌汇编的方式来编写。目前,几乎所有的...原创 2019-09-03 22:08:34 · 267 阅读 · 0 评论 -
Foxdisk10-小字库显示汉字1
(请保留 -> 作者:罗冰)在以前的博客中曾经讨论过,设计的Foxdisk代码段和数据段总共只能128K。可是随便哪个汉字库轻轻松松都超过了100K,大的有近500K(我设计的时候只用了24×24以及16×16的字模),无论如何是不能包含在程序中的。唯一的办法,是将需要用的汉字字模提取出来,实现小字库的汉字显示。当然,如果改变Foxdisk的设计方法,比如采用很久以前用过的一种技术...原创 2019-09-03 22:07:02 · 332 阅读 · 0 评论 -
Foxdisk09-工具篇
(请保留 -> 作者:罗冰)题外话,大概是2017年底,开始开发DTU,用来采集光伏逆变器的数据,通过GPRS发送给后端服务器。一个不大的物联网设备,针对客户的需求做了三种不同的形态。采用的是STM32F103C8T6+SIM800C的硬件架构,软件则用FreeRTOS,方便后续的扩展。2018年4月份,国家政策一变,幻想中(计划中)的50K的产品计划也全部泡汤。我写博客前,刚好看...原创 2019-09-03 22:05:46 · 197 阅读 · 0 评论 -
Foxdisk08-如何调试2
(请保留 -> 作者:罗冰)有段时间一直沉迷于裸机上跑程序,学习怎么让一个操作系统跑起来。使用过VirtualPC(现在被微软收购了),VMware,VirtualBOX,Bochs,最终还是觉得Bochs比较好用。它的最大好处是集合了完整的调试环境,对指令是软件解析的,速度虽然慢,但对程序员来说,一步步看代码是如何执行的,非常契合需求。Bochs的文档非常的完整,使用起来也比较方...原创 2019-09-03 22:01:22 · 220 阅读 · 0 评论 -
Foxdisk07-如何调试1
(请保留 -> 作者:罗冰)在开发过程中,我主要采用两种方式进行调试,一是使用Debug.exe,通过U盘或者光盘,启动DOS,用debug观察程序是否如想象中的写入硬盘指定区域。在早期的版本中,我也曾经去除了写硬盘以及替换MBR的功能,编译了可以在DOS下运行的Foxdisk,方便自己在DOS下对其进行调试。Debug是个很好的工具,当年开发隔离卡和双网隔离计算机的所有底层代码,均是...原创 2019-09-03 21:59:18 · 196 阅读 · 0 评论 -
Foxdisk06-启动原理3
(请保留 -> 作者:罗冰)Loader.asm控制权转交给BootEntry后,开始启动Foxdisk的主体代码。BootEntry()函数中,只调用了Foxdisk()函数。BootEntry没有其他作用,只是用来定位的,方便Loader.asm去加载。看代码前,首先熟悉一下将要用到的结构体,定义在Common.h中。图1 数据结构对应图程序中允许安装四个不同的操作系统...原创 2019-09-03 21:56:36 · 196 阅读 · 0 评论 -
Foxdisk05-启动原理2
(请保留 -> 作者:罗冰)观察Foxdisk3的makefile,可以看到使用的是bcc -ms的编译开关。这是要求编译器采用Samll内存模式进行编译,其特点是栈和数据都在64K以内,Code在另外一个64K内。为什么采用Small方式?主要是我当时设计的时候,没有考虑到后面的各种新的需求,以为代码可以控制在64K内完成;另外,这种模式比较便于汇编和C的混合编写,不用去考虑复杂的数...原创 2019-09-03 21:44:56 · 169 阅读 · 0 评论 -
Foxdisk04-启动原理1
(请保留 -> 作者:罗冰)我不记得是哪个小品了,赵本山用他的标准铁岭普通话说:“我不想知道它怎么来的,我只想知道它是怎么没的。”对编程而言,“怎么来的”实际上非常重要,不能不了解。Foxdisk的启动过程,在“如何安装1”中已经有了说明,本篇会尽量的把相关的背景知识介绍清楚。有几个关键词:BBS、Legacy BIOS、UEFI、MBR。BBS英特尔、Phoenix和...原创 2019-09-03 21:42:28 · 363 阅读 · 0 评论 -
Foxdisk03-如何安装2
(请保留 -> 作者:罗冰)整个Foxdisk3.01的代码,是将安装程序和主程序混在一起编译的。安装程序负责将代码拷贝到指定的硬盘区域,包括MBR代码、Foxdisk的启动代码、Foxdisk的资源、Foxdisk的code段和数据段。在“如何安装1”中叙述的foxdisk在硬盘中的映像,都是由它来实现的。混编的好处是,安装程序能够很容易的定位主程序各种段(code、data、s...原创 2019-09-03 21:29:03 · 197 阅读 · 0 评论 -
Foxdisk02-如何安装1
(请保留 -> 作者:罗冰)Foxdisk是基于BIOS中断或者直接访问硬件的,在设计的时候,第一个需要考虑的问题就是软件如何运行。这个问题很有趣,也是我在早期开发一个小的OS时试图搞清楚的最初的问题。作为介于BIOS和操作系统间的一个小程序,我考虑了两种让Foxdisk运行的方法。其一是依靠硬件,将Foxdisk的引导代码放在PCI ROM或者以Option ROM的形式直接嵌入...原创 2019-09-03 13:30:59 · 317 阅读 · 0 评论 -
Foxdisk01-缘起
“没有任何一个题目是彻底完成了的。总还会有些是哪个可做;在经过充分的研究和洞察以后,我们可以将任何解题方法加以改进;而且无论如何,我们总可以深化我们对答案的理解。” ...原创 2019-09-02 15:11:24 · 374 阅读 · 0 评论 -
Foxdisk00-源代码编译
(请保留->作者:罗冰)为了便于之后博文的行文方便,我把代码放在了下载区。(这篇博文最早发布在http://yiiyee.cn/blog/author/luobing/下,我把代码放在github上了https://github.com/luobing/Foxdisk3)编译器使用的是Borland C++3.1,C编译器和汇编编译器都在其中。代码中包含三个汇编文件:Loaser....原创 2019-09-02 14:57:44 · 571 阅读 · 0 评论