操作系统第一天学习

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

动手操作

今天主要是将最最简单的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命令

原文地址:https://www.cnblogs.com/y15821933792/p/8536573.html