汇编语言学习与Makefile入门

继续开发

; hello-os
; TAB=4

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

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

        JMP        entry
        DB        0x90
        DB        "HELLOIPL"        ; 启动区的名称
        DW        512            ; 每个扇区(sector)的大小
        DB        1            ; 簇(cluster)的大小
        DW        1            ; FAT的起始位置
        DB        2            ; FAT的个数
        DW        224            ; 根目录的大小
        DW        2880            ; 该磁盘的大小
        DB        0xf0            ; 磁盘的种类
        DW        9            ; FAT的长度
        DW        18            ; 1个磁道(track)有几个扇区
        DW        2            ; 磁头数
        DD        0            ; 不适用分区
        DD        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加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, world"
        DB        0x0a            ; 换行
        DB        0

        RESB        0x7dfe-$        ; 0x7dfe和当前字节之间用0x00填写

        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
时间: 2024-08-29 14:01:25

汇编语言学习与Makefile入门的相关文章

30天自制OS笔记:2 汇编语言学习与Makefile入门

进一步提高代码的高级程度,在之前的代码基础上修改,所以先拷贝再重命名为helloos.nas: 感觉还是添加个git比较方便,等helloos3完成后添加个git,这样可以保留历史,而不用每次都被覆盖了. --------------------------------- 先回顾下昨天的程序结构: 只有显示部分,昨天看懂了,继续2016年9月7日18:37:10,说实话那个 因为只能提醒很麻烦,所以取消notepad++自动补全: ? ? 下面把对代码的注释添加上: 寄存器: ? ? X表示扩展

RPC学习----Thrift快速入门和Java简单示例

一.什么是RPC? RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议. RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据.在OSI网络通信模型中,RPC跨越了传输层和应用层.RPC使得开发包括网络分布式多程序在内的应用程序更加容易. 二.什么是Thrift? thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和

【Linux学习】Makefile学习(二)

FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 40975    Accepted Submission(s): 13563 Problem Description FatMouse prepared M pounds of cat food, ready to trade with the cats g

Struts学习傻瓜式入门篇

或许有人觉得struts不容易学,似乎里面的一些概念让未接触过的人迷惑,MVC1.MVC2.模式……我写这篇文章是想让从来没有接触过struts的人,能有个简单的入门指引,当然,系统地学习struts是必要的,里面有很多让人心醉的东东,那是后话了. 该案例包括首页,用户登陆.网站向导页面.就这么简单,没有深奥的struts概念,主要靠动手,然后用心体会. WEB Server用tomcat4.到http://jakarta.apache.org下载struts1.1,把zip文 件释放到c:\s

现代C++学习笔记之一入门篇:智能指针(C++ 11)

原始指针:通过new建立的*指针 智能指针:通过智能指针关键字(unique_ptr, shared_ptr ,weak_ptr)建立的指针 在现代 C++ 编程中,标准库包含智能指针,该指针用于确保程序不存在内存和资源泄漏且是异常安全的. 在现代 C++ 中,原始指针仅用于范围有限的小代码块.循环或者性能至关重要且不会混淆所有权的 Helper 函数中. 1 void UseRawPointer() 2 { 3 // Using a raw pointer -- not recommended

vim+makefile入门编辑,编译,差错实例

vim+makefile入门编辑,编译,差错实例 vim makefile 编译 编写代码,一般在vim中编辑完后,输入:wq,在命令行下输入g++ hello.cc -o hello ,出现问题,打开vim,找到对应行修改,感觉是不是很烦很NC.其实vim自带的Quickfix列表就能帮助我们无需退出vim,即可进行编译代码,浏览错误信息. 简单单个文件的调试,只需增添环境变量makeprg即可. 编写一个简单的命名为hi.c的如下程序: #include<stdio.h> int main

刚刚学习完了Java入门,不知下一步

刚刚学习完了Java入门,学习了进阶,下一步不知道该往哪个方面继续学习了! 当初自学Java的时候就想着有一天可以编制出自己的软件,最好是可以引领生活,世界进步的(话有点大,没关系,还没有实现,谁知道呢)!刚才上网又自己查了一下,不知道<Java思想>怎么样,能不能看懂,是不是都是英文的??? 大神求助啊:迷茫中...

学习Android开发入门

学习Android开发入门第四章:类与对象(上)-掌握成员变量和局部变量的使用-掌握方法重载和重写-掌握构造方法的执行过程-掌握static关键字的使用-掌握多态 本章 链接:1)http://pan.baidu.com/s/1gdmm3Nt2)http://pan.baidu.com/s/1kTn0sCZ<5>第五章:类与对象(下)- 掌握包的概念及包语句- 掌握掌握各种访问权限- 掌握final和abstract关键字- 掌握接口的定义及使用- 使用Eclispe创建jar包 本章 链接:

3、Kafka学习分享|快速入门-V3.0

Kafka学习分享|快速入门 这个教程假定你刚开始是新鲜的,没有现存的Kafka或者Zookeeper 数据.由于Kafka控制控制脚本在Unix和Windows平台不同,在Windows平台使用bin\windows\ 代替 bin/,并且更改脚本扩展名为.bat. 第一步:下载编码 下载0.10.2.0版本并且解压它. 第二步:启动服务器 Kafka使用Zookeeper,因此如果你没有Zookeeper server,你需要先启动a ZooKeeper server.你可以使用Kafka的