30天自制操作系统学习笔记----day_one

、实验主要内容

  1. 内容1:尝试使用二进制编辑器,试着在屏幕上输出HELLO WORLD。

重点:如何看懂二进制编辑器的地址格式、输入的十六进制如何来的?

首先左边前两个0不用管,真正的地址由左数第三个0开始加上后面的四位数构成一个地址,上面的数字标号表示地址单元号。

那么这些十六进制都是怎么来的呢?根据ASCLL码表对应的十六进制得到的,举个例子,比如说E的ASCLL值为69,化为十六进制是45,因此往二进制编辑器输入45就会得到字母E,如图:

此代码的作用是命名启动的第一个扇区为HELLOIPL,扇区命名可以是任意字符串。

  1. 内容2:尝试使用汇编语言输出HELLO WORLD,同时输出其它一些更有趣的图案。

重点内容:理解每一条指令的意思以及它的作用、如何使用自带的汇编代码编辑器。

首先看到我们需要的文件:

.bat文件是windows批量处理文件,通俗的讲就是存储着命令的文件,这两个文件的作用是在当前目录下调用cmd窗口,两个文件对应着不同的windows版本,我们点击第二个即可。Helloos.img是存储我们的汇编代码的文件,install.bat是将文件拷贝的命令,最后的run就是执行可执行文件的命令了,后来作者还封装了一个编译汇编文件的bat文件,当写完一个汇编程序后保存,然后点击这个bat文件即可对汇编文件重新编译,最后可以选择run.bat或!Con文件运行可执行文件,就可以看到屏幕上输出了图案或字符串。

下面来分析一下关键指令的意思:

  1. DB指令:往内存(文件)写入1个字节的指令,该指令不区分大小写;
  2. DW指令:往内存写入大小为2个字的指令,也就是4个字节,同样不区分大小写;
  3. RESB指令:空出指定的地址,可用于输出0x00。

、遇到的问题及解决方法

  1. !con文件无法启动

解决方法:导致该问题的原因是cmd路径问题,解决方法为:(1).右键开打任意一个!cons文件点击编辑;(2).将此路径:C:\Windows\System32/cmd.exe复制到编辑窗口保存即可。

  1. run.bat文件可以运行,但找不到指定路径。

解决方法:导致该问题的原因是:拷贝img文件的路径出错,解决方法为:1.右键编辑run.bat,将指令里面的/改为\即可。

、程序设计创新点

1、在二进制编辑器中将小写的hello world 替换为大写的HELLO WoRLD。

如图:

蓝底即为关键代码,得到这些数字很简单,将HELLOWORLD对应的ACSLL值化为16进制即可。

成功输出HELLO,WORLD。

 

  1. 在汇编代码中输出心型图案。

首先用记事本打开图中的文件:

该文件是汇编文件,存放着汇编代码。打开后看到汇编指令,找到DB “hello world”这条指令,你可以进行修改成任意字符串内容。但我们来玩点高逼格的,首先你得理解DB 0x0是什么意思,0x0a是换行符对应的十六进制,0x20是空格的ASCLL值对应的十六进制,心形对应的十六进制是0x03,其它没用到就没查了。这个QUEM的特性会将你写入文件的东西输出到屏幕上,因此你要输出什么字符用DB即可。我很好奇怎么才能输出汉字,但很遗憾的是QEMU这个平台不支持中文显示,因为无法输出汉字。

汇编代码过长,贴出运行截图:

本来想向屏幕输出LOVE,但是没那么大耐心了,就将就了

猜你喜欢

转载自blog.csdn.net/weixin_42294984/article/details/83589205