逆向 | 《30天自制操作系统》读书笔记 | day2 汇编语言学习与Makefile入门
2022/1/15 1:06:37
本文主要是介绍逆向 | 《30天自制操作系统》读书笔记 | day2 汇编语言学习与Makefile入门,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
《30天自制操作系统》读书笔记 | day2 汇编语言学习与Makefile入门
好了直接继续day2!
反正上来就是解释一下之前的硬编码,用汇编写了出来:
; hello-os ; TAB=4 ORG 0x7c00 ;指明程序的装载方式 ; 以下的记述用于标准的FAT12格式的软盘 JMP entry DB 0x90 DB "HELLOIPL" ; 启动区的名称8bytes DW 512 ; 每个扇区的大小512 DB 1 ; 簇的大小1 DW 1 ; FAT的起始位置(一般从第一个扇区开始) DB 2 ; FAT的个数(必须为2) DW 224 ; 根目录的大小224项 DW 2880 ; 该磁盘的大小(必须是2880扇区) DB 0xf0 ; 磁盘的种类(必须是0xf0) DW 9 ; FAT的长度(必须是9扇区) DW 18 ; 1个磁道(track)有几个扇区(必须是18) DW 2 ; 磁头数(必须是2) DD 0 ; 不使用分区,必须是0 DD 2880 ; 重写一次磁盘大小 DB 0,0,0x29 ; 意义不明,固定 DD 0xffffffff ; 可能是)卷标号码 DB "HELLO-OS " ; 磁盘的名称(11字节) DB "FAT12 " ; 磁盘格式名称(8字节) RESB 18 ; 先空出18字节 ; 程序核心 entry: MOV AX,0 ; 初始化寄存器 MOV SS,AX MOV SP,0x7c00 MOV DS,AX MOV ES,AX MOV SI,msg putloop: MOV AL,[SI] ADD SI,1 ; 给SI加1 CMP AL,0 JE fin MOV AH,0x0e ; 显示一个文字 MOV BX,15 ; 指定字符颜色 INT 0x10 ; 调用显卡BIOS JMP putloop fin: HLT ; 让CPU停止,等待指令 JMP fin ; 无限循环 msg: DB 0x0a, 0x0a ; 换行*2 DB "hello, world" DB 0x0a ; 换行*1 DB 0 ;RESB 0x7dfe-$ ; 空\x00 RESB 0x7dfe-($-$$) ; 代替上面一行 DB 0x55, 0xaa ; 以下是启动区以外部分的输出 DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 RESB 4600 DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00 RESB 1469432
同样,编译出来会有一点点小问题的感觉,但是怎么说呢,感觉问题不大,至少我试了一下不影响启动和显示helloworld,23333
emmm
然后第二天基本上就是讲怎么用makefile去简化工作流程,可以弄一下,不嫌麻烦也无所谓就是了。
这篇关于逆向 | 《30天自制操作系统》读书笔记 | day2 汇编语言学习与Makefile入门的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-03-30[译]漫画SELinux概念
- 2024-03-29linux 移动文件
- 2024-03-28linux .so file
- 2024-03-28Linux 磁盘管理
- 2024-03-28Linux学习笔记(十三)磁盘管理(一):磁盘分区
- 2024-03-26linux 创建 文件
- 2024-03-25使用SecureCRT对Linux vim进行颜色设置
- 2024-03-202019-2020-12 20199317 《Linux内核原理与分析》 第十二周作业
- 2024-03-20Linux运维的第二周总结
- 2024-03-13how to count number of directories in linux