ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

逆向 | 《30天自制操作系统》读书笔记 | day2 汇编语言学习与Makefile入门

2022-01-14 22:35:14  阅读:167  来源: 互联网

标签:0x00 读书笔记 Makefile 30 DB MOV 扇区 RESB DW


《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去简化工作流程,可以弄一下,不嫌麻烦也无所谓就是了。

标签:0x00,读书笔记,Makefile,30,DB,MOV,扇区,RESB,DW
来源: https://www.cnblogs.com/Mz1-rc/p/15805675.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有