操作系统第一天学习

时间:2022-11-26 05:55:19

                                                                                                                     从计算机结构到汇编程序入门

动手操作

今天主要是将最最简单的os运行起来

1.把tolset文件拷贝到硬盘的任意位置,例如test文件夹中

2.然后将OS/projects/01_day/helloos2拷贝到test/tolset

操作系统第一天学习

3.将test/tolset/helloos2/helloos.nas中的代码改成以下代码

操作系统第一天学习操作系统第一天学习
; hello-os
; TAB
=4

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

; 以下这段是标准FAT12格式软盘专用的代码

JMP entry
DB
0x90
DB
"HELLOIPL" ; freeparam 启动区的名称可以是任意的字符串(8字节)
DW
512 ; 每个扇区(sector)的大小(必须为512字节)
DB
1 ; 簇(cluster)的大小(必须为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 " ; freeparam 磁盘的名称(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, yangqiangwei's OS!" ; freeparam
DB
0x0a ; 换行
DB
0

RESB
0x7dfe-$ ; 填写0x00,直到0x001fe

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
helloos.nas

操作系统第一天学习

4.点击文件!cons_nt.bat,会出现命令行窗口,然后输入asm命令会生成img文件,最后输入run命令

操作系统第一天学习