【写一个操作系统】3—汇编语言学习及Makefile入门

今天的主要任务是通过对helloos.nas核心代码汇的理解进行编语言的学习,还有就是Makefile的学习。

汇编代码

主要是对上次的汇编文件helloos.nas核心部分的学习,核心部分的原代码如下:

DB		0xb8, 0x00, 0x00, 0x8e, 0xd0, 0xbc, 0x00, 0x7c
		DB		0x8e, 0xd8, 0x8e, 0xc0, 0xbe, 0x74, 0x7c, 0x8a
		DB		0x04, 0x83, 0xc6, 0x01, 0x3c, 0x00, 0x74, 0x09
		DB		0xb4, 0x0e, 0xbb, 0x0f, 0x00, 0xcd, 0x10, 0xeb
		DB		0xee, 0xf4, 0xeb, 0xfd

看起来晦涩难懂,所以就改写为下面的样子,方便学习:

; hello-os
; TAB=4

		ORG		0x7c00			; 指明程序装载地址

; 以下的记述用于标准FAT12格式的软盘

		JMP		entry
		DB		0x90
		DB		"HELLOIPL"		; 启动区的名称可以是任意字符串(8字节)
		DW		512				;规定 每个扇区的大小(必须为512字节)
		DB		1				; 规定簇的大小,以扇区为单位(必须为1个扇区)
		DW		1				; 规定FAT的起始位置(一般是从第一个位置开始)
		DB		2				; FAT的个数(必须为2)
		DW		224				; 根目录的大小(一般设置224项)
		DW		2880			; 规定磁盘大小(必须2880个扇区大小)
		DB		0xf0			; 规定磁盘的种类
		DW		9				; 规定FAT的长度(必须是9个扇区)
		DW		18				; 规定一个磁道的扇区个数(必须18个)
		DW		2				; 规定磁头数(必须2个)
		DD		0				; 不使用分区,必须为0
		DD		2880			; 重新确定磁盘大小为2880个扇区
		DB		0,0,0x29		; 教程也不知道这是什么
		DD		0xffffffff		; たぶんボリュームシリアル番号
		DB		"HELLO-OS   "	; 磁盘的名称
		DB		"FAT12   "		; 磁盘的格式
		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加一
		CMP		AL,0
		JE		fin
		MOV		AH,0x0e			; 显示一个字符
		MOV		BX,15			; 指定字符颜色
		INT		0x10			; 调用显卡BIOS
		JMP		putloop
fin:
		HLT						; 让CPU处于待机状态
		JMP		fin				; 跳转到fin,即无限循环

msg:
		DB		0x0a, 0x0a		; 换行俩次
		DB		"hello, world"
		DB		0x0a			; 换行
		DB		0
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值