30 天自制操作系统
转载CSDN:https://blog.csdn.net/zl18206208825/article/details/104250128
第 2 天 汇编语言学习与Makefile入门
helloos4
准备工作
- windows环境
- VMware workstation
- vc code
- 程序和源代码链接:https://pan.baidu.com/s/1bFGAYgnA0m9KB7tzFrMD5g
提取码:d210
开始实验
-
新建文件夹
在 tolset 文件夹内新建子文件夹helloos4。 -
!cons_nt.bat
打开记事本文档并在其中输入以下代码,并另存为!cons_nt.bat文件,放在helloos4中:
cmd.exe
-
ipl.nas
打开vc code,新建文件,输入以下代码并保存为ipl.nas文件,放在helloos4中:
; hello-os
; TAB = 4
ORG 0x7c00 ; 指明程序的装载地址
; 以下的记述用于标准FAT12格式的软盘
JMP entry
DB 0x90
DB "HELLOIPL" ; 启动区的名称可是任意的字符串
DW 512 ; 每个扇区(sector)的大小(必须为512字节)
DB 1 ; 簇(cluster)的大小(必须为1个扇区)
DW 1 ; FAT12的起始位置(一般从第一个扇区开始)
DB 2 ; FAT的个数(必须为2)
DW 224 ; 根目录的大小(一般设成224项)
DW 2880 ; 该磁盘的大小(必须是2880扇区)
DB 0xf0 ; 磁盘的种类(必须是0xf0)
DW 9 ; FAT的长度(必须是9扇区)
DW 18 ; 一个磁道(track)有几个扇区(必须是18)
DW 2 ; 磁头数(必须是2)
DD 0 ; 不使用分区,必须是0
DD 2880 ; 重写一次磁盘大小
DB 0,0,0x29 ; 意义不明固定
DD 0xffffffff ; (可能是)卷标号码
DB "HELLO-OS " ; 磁盘的名称(11字节)
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加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 ; 换行两次
DB "hello, world"
DB 0x0a
DB 0
RESB 0x7dfe-$
DB 0x55, 0xaa
-
asm.bat
打开记事本文档,输入以下代码并保存为asm.bat文件,存放在helloos4中:
..\z_tools\nask.exe ipl.nas ipl.bin ipl.lst
- makeimg.bat
..\z_tools\edimg.exe imgin:../z_tools/fdimg0at.tek wbinimg src:ipl.bin len:512 from:0 to:0 imgout:helloos.img
- run.bat
copy helloos.img ..\z_tools\qemu\fdimage0.bin
..\z_tools\make.exe -C ../z_tools/qemu
好的到这里,代码的编辑工作就完成了,接下来是编译及运行了
编译
-
打开!cons.nt.bat,出现命令行界面
在这里插入图片描述 - 在命令行中输入asm, 并回车;
在这里插入图片描述
-
接着输入makeimg 制作img系统镜像
在这里插入图片描述
最后在虚拟机中运行,输入run回车
在这里插入图片描述
PS:在vmware 中运行
在这里插入图片描述
以上,就是helloos4的内容了,好的,到这里就结束了,请大家多多支持!!!