摘要: 原创博文:转载请标明出处:http://www.cnblogs.com/zxouxuewei

首先加载启动代码:

; hello-os
; TAB=4

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

; 标准FAT12格式软盘专用的代码 Stand FAT12 format floppy code

        JMP        entry              ;程序跳转指令
        DB        0xeb, 0x4e, 0x90
        DB        "HELLOIPL"          ; 启动扇区名称(8字节)
        DW        512                 ; 每个扇区(sector)大小(必须512字节)
        DB        1                   ; 簇(cluster)大小(必须为1个扇区)00,
        DW        1                   ; FAT起始位置(一般为第一个扇区)
        DB        2                   ; FAT个数(必须为2)
        DW        224                 ; 根目录大小(一般为224项)
        DW        2880                ; 该磁盘大小(必须为2880扇区1440*1024/512)
        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   "          ; 磁盘格式名称(必??8字?,不足填空格)
        RESB    18                    ; 先空出18字节

; 程序主体

entry:
        MOV        AX,0            ; 初始化累加寄存器
        MOV        SS,AX           ; 将栈段寄存器初始为0
        MOV        SP,0x7c00       ; 栈指针寄存器赋值为0x7c00 
MOV DS,AX ; 数据段寄存器清零 MOV ES,AX ; 附加段寄存器清零 MOV SI,msg ; 将msg的地址装入SI寄存器中 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-$ ; 填写0x00直到0x001fe DB 0x55, 0xaa

汇编语言进阶和Makefile进阶---第二天的更多相关文章

  1. Python:什么是进阶,如何进阶?

    目录 Python:什么是进阶,如何进阶? 1. 什么是进阶? 2. 如何进阶? 3. 除此之外呢? Python:什么是进阶,如何进阶? 1. 什么是进阶? 一门编程语言的基础部分,往往非常简单.如 ...

  2. Makefile学习与进阶之Makefile.am和$$(M)的意思

    (1)makefile 中,出现$$(M) 是什么意思,发现还是看实际的Makefile长知识啊 在makefile中,会经常使用shell命令,也经常见到$var 和 $$var的情况,有什么区别呢 ...

  3. makefile 进阶

    一步一步写一个简单通用的makefile(一) 一步一步写一个简单通用的makefile(二) 一步一步写一个简单通用的makefile(三) 一步一步写一个简单通用的makefile(四)

  4. 【Java 进阶篇】【第二课】异常处理

    概念 异常处理的存在是为了:   允许程序员跳过无法处理的问题,继续开发后续的工作,或根据异常做出更加聪明的处理方式. Java中存在一类对象叫“异常对象”. 当异常情况发生时,就会暗战预先的设定,抛 ...

  5. 《软件工程实践》第五次作业-WordCount进阶需求 (结对第二次)

    在文章开头给出结对同学的博客链接.本作业博客的链接.你所Fork的同名仓库的Github项目地址 本作业博客链接 github pair c 031602136魏璐炜博客 031602139徐明盛博客 ...

  6. Ionic APP-Web SPA开发进阶(二)Ionic进阶之路由去哪了

    Ionic进阶之路由去哪了 项目需求 在查看药品时,从药品列表中可以通过点击药品列表获取某一药品详情.提交订单时,同样可以查看药品详情.两种情形下,从药品详情返回后,应分别返回至原来的页面.如下图所示 ...

  7. NodeJS学习笔记 进阶 (13)Nodejs进阶:5分钟入门非对称加密用法

    个人总结:读完这篇文章需要5分钟,这篇文章讲解了Node.js非对称加密算法的实现. 摘录自网络 地址: https://github.com/chyingp/nodejs-learning-guid ...

  8. iOS进阶路线以及进阶书籍

    第一,熟悉ARC机制:首先要了解ARC的前世今生.假设了解不清楚会导致两种可能,1,一个对象的引用莫名奇异为空.或失效了.这个一般都能在开发阶段及时发现,由于会导致应用异常.2.导致内存溢出:不了解A ...

  9. 【 D3.js 进阶系列 】 进阶总结

    进阶系列的文章从去年10月开始写的,晃眼又是4个多月了,想在年前总结一下. 首先恭祝大家新年快乐.今年是羊年吧.前段时间和朋友聊天,聊到十二生肖里为什么没猫,我张口就道:不是因为十二生肖开会的时候猫迟 ...

随机推荐

  1. logistc regression练习(三)

    % Exercise 4 -- Logistic Regression clear all; close all; clc x = load('E:\workstation\data\ex4x.dat ...

  2. hightchart属性(更新中...)

    legend:{ layout: 'vertical', //legend中内容垂直放置 align: 'right', //放在图表右边 verticalAlign: 'middle',    // ...

  3. JavaScript控制类名(className属性)

    语法:object.className =classname   (注意大小写) 作用:获取元素的class属性,为网页内的某个元素指定一个CSS样式来更改该元素的外观 示例: <!DOCTYP ...

  4. System.Web.Script.Serialization引用找不到的问题

    之前在项目中要使用JavascriptSerializer这个类,需要引入System.Web.Script.Serialization命名空间,但是在添加引用中找不到这个命名空间,后来才得知Syst ...

  5. Hive的API的说明

    之前通过命令行的界面可以操作Hive,可是在实际的生产环境中,往往都是需要写API的,因此对Hive的API简单的列举了一下.并对Hive进行了一个简单的封装.具体的封装可以参考github网站主页: ...

  6. GZipStream 压缩和解压

    GZipSteam: GZip 数据格式,它使用无损压缩和解压缩文件的行业标准算法 类 GZipStream有两种模式:CompressionMode.Compress和CompressionMode ...

  7. docker push 实现过程

    这一篇文章分析一下docker push的过程:docker push是将本地的镜像上传到registry service的过程: 根据前几篇文章,可以知道客户端的命令是在api/client/pus ...

  8. 从angularJS改道Vue.js,趟过第一个坑!

    vue采用 new vue()初始化,显然vue内部没有类似jquery ready函数的机制,在文档加载完成后再执行初始化. 今天新学习vue,由于vue采用es5的特殊机制更新UI,我不确定ipa ...

  9. Guess Number Higher or Lower II--困惑

    今天,试着做了一下LeetCode OJ上面的第375道题:Guess Number Higher or Lower II 原题链接:https://leetcode.com/problems/gue ...

  10. [windows]部分前缀以及其意义

    前缀                         意义 CS 类风格选项 CW 创建窗口选项 DT 文本绘制选项 IDI 图标的ID号 MB 消息框选项 SND 声音选项 WM 窗口消息 WS 窗 ...