zoukankan      html  css  js  c++  java
  • 操作系统第一天学习

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

    动手操作

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

  • 相关阅读:
    Tkinter之Label部件
    Tkinter编码风格
    GUI之tkinter视窗设计模块
    绘制函数图像
    backbone学习总结(一)
    实习两个月,写在辞职的今天
    Spark SQL 编程初级实践2- 编程实现利用 DataFrame 读写 MySQL 的数据
    Spark SQL 编程初级实践1-Spark SQL 基本操作
    spark创建DataFrame的几种方式
    python-with open() as file相关参数以及常用打开方式
  • 原文地址:https://www.cnblogs.com/y15821933792/p/8536573.html
Copyright © 2011-2022 走看看