计算机实验室之树莓派:课程 5 OK05
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/12/122809f73x8z1xl73xhhm7.jpg">Media</a>OK05 课程构建于课程 OK04 的基础,使用它来闪烁摩尔斯电码的 SOS 序列(...---...)。这里假设你已经有了 <a href="https://linux.cn/article-10526-1.html">课程 4:OK04</a> 操作系统的代码作为基础。1、数据到目前为止,我们与操作系统有关的所有内容提供的都是指令。然而有时候,指令只是完成了一半的工作。我们的操作系统可能还需要数据。一些早期的操作系统确实只允许特定文件中的特定类型的数据,但是这通常被认为限制太多了。现代方法确实可以使程序变得复杂的多。通常,数据就是些很重要的值。你可能接受过培训,认为数据就是某种类型的,比如,文本文件包含文本,图像文件包含图片,等等。说实话,这只是你的想法而已。计算机上的全部数据都是二进制数字,重要的是我们选择用什么来解释这些数据。在这个例子中,我们会用一个闪灯序列作为数据保存下来。在 main.s 结束处复制下面的代码:<pre class="prettyprint linenums">.section .data %定义 .data 段.align 2 %对齐pattern: %定义整形变量.int 0b11111111101010100010001000101010</pre>.align num 确保下一行代码的地址是 2num 的整数倍。.int val 输出数值 val。要区分数据和代码,我们将数据都放在 .data 区域。我已经将该区域包含在操作系统的内存布局图。我选择将数据放到代码后面。将我们的指令和数据分开保存的原因是,如果最后我们在自己的操作系&…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201902/12/122809f73x8z1xl73xhhm7.jpg">Media</a>OK05 课程构建于课程 OK04 的基础,使用它来闪烁摩尔斯电码的 SOS 序列(...---...)。这里假设你已经有了 <a href="https://linux.cn/article-10526-1.html">课程 4:OK04</a> 操作系统的代码作为基础。1、数据到目前为止,我们与操作系统有关的所有内容提供的都是指令。然而有时候,指令只是完成了一半的工作。我们的操作系统可能还需要数据。一些早期的操作系统确实只允许特定文件中的特定类型的数据,但是这通常被认为限制太多了。现代方法确实可以使程序变得复杂的多。通常,数据就是些很重要的值。你可能接受过培训,认为数据就是某种类型的,比如,文本文件包含文本,图像文件包含图片,等等。说实话,这只是你的想法而已。计算机上的全部数据都是二进制数字,重要的是我们选择用什么来解释这些数据。在这个例子中,我们会用一个闪灯序列作为数据保存下来。在 main.s 结束处复制下面的代码:<pre class="prettyprint linenums">.section .data %定义 .data 段.align 2 %对齐pattern: %定义整形变量.int 0b11111111101010100010001000101010</pre>.align num 确保下一行代码的地址是 2num 的整数倍。.int val 输出数值 val。要区分数据和代码,我们将数据都放在 .data 区域。我已经将该区域包含在操作系统的内存布局图。我选择将数据放到代码后面。将我们的指令和数据分开保存的原因是,如果最后我们在自己的操作系&…