找回密码
 立即注册
搜索
热搜: 活动 通知
查看: 69|回复: 0

5.1--第5章导读

[复制链接]

709

主题

357

回帖

1331

积分

管理员

积分
1331
发表于 2026-5-2 17:32:44 | 显示全部楼层 |阅读模式

截止到目前我们已经明白:要让处理器完成某些工作,需要先运行一个文本编辑软件(比如配书文件包里的NASMIDE),然后用汇编语言在里面编写汇编语言指令。程序编写完成后将它保存为磁盘上的汇编语言源文件。接下来,要用汇编器(比如NASM)将源文件的内容编译成处理器可以识别和执行的二进制文件。当然,编译后生成的二进制文件通常也位于磁盘上。问题在于,处理器只从内存里取指令和执行指令。所以,还要将编译生成的二进制文件读入内存里,然后让处理器执行。


现在,问题来了:

1,如何将磁盘上的二进制文件读入内存?

2,如何让处理器开始执行刚才读入内存里的二进制程序?


有些人可能觉得这个问题不是很难,因为他们想到:Windows上的程序也都是二进制文件,只需要双击它们的图标就可以运行啦!所以我们只需要将磁盘上的汇编语言源文件编译成Windows上的可执行文件(程序)就好了,我们就可以象运行Windows上的其它程序一样来运行它了。


这并非不可以,而且有现成的汇编语言软件可以生成能在Windows上运行的程序,甚至可以包含图标。不过,这并非没有代价,因为能在Windows上运行的程序必须符合Windows要求的格式,也就是所谓的Windows PE格式。这就很尴尬了:我们还没开始正经学习汇编语言呢,就需要先学习和了解复杂的Windows PE规范(这甚至需要一本书的篇幅)!另一方面,由于程序是运行在Windows之上的,需要接受Windows的管理,所以很多机器指令(主要是特权指令,用来操作特别重要的系统数据,我们后面将要学习这些指令)无法执行。


因为以上原因,我们更希望编译器生成”纯粹“的二进制代码,也就是只包含与我们书写的汇编指令一一对应的机器指令,而不能有额外的东西。同时,最好是在没有操作系统的”裸机“上执行,这样就可以不受限制地执行任何机器指令,实现我们想要的任何功能。但这样一来就重新回到上述两个问题,即,如何将程序读入内存,如何让处理器来执行它。


传统上,计算机启动后会立即执行BIOS芯片里的指令。BIOS完成各种初始化操作,然后从硬盘的0面0道1扇区(也就是所谓的主引导扇区)读取程序到内存地址7C00H处,然后让处理器从这里继续取指令和执行指令。为此,我们可以将编译后的程序写入主引导扇区,然后重新启动计算机,不就可以获得执行了吗!


非常好!唯一的问题是会破坏主引导扇区的原有内容。不过没有关系,我们可以创建一台虚拟机,只在虚拟机里操作就可以了。虚拟机是一个软件,是用软件模拟的计算机。操作虚拟机,就象操作一台真实的计算机一样。


那么,本章的任务就是安装虚拟机,并学习如何写入主引导扇区。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|鼠侠网 ( 吉ICP备19001332号 )

GMT+8, 2026-5-14 08:17 , Processed in 0.252331 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表