专注于操作系统5之引导程序代码
来源:互联网 发布:dll不兼容windows 编辑:程序博客网 时间:2024/04/29 17:48
这里给出一个很简单的引导程序代码,它功能是先显示一段字符,并允许通过键盘输入字符,并显示在屏幕上,还没引导操作系统。这段代码是我看过《自己动手写操作系统》后,根据理解自己写的,在VMware虚拟机机中实现的(因为这段引导程序是以软盘作为引导盘的,而现在的计算机几乎都不用软盘,所以,只能通过虚拟机来实现) 知道16位汇编,知道中断,就非常简单了,这个可看一下王爽老师的《汇编语言》,相当的经典。关于BIOS的中断可查看 BIOS中断大全
;;nasm 2.07汇编
org 7c00h ;告诉编译器,该程序存放的首地址,因为BIOS是先将引导程序的代码 ;放到内存地址为7c00h的位置 mov ax,cs mov es,axmov bp,hello call display ;调用显示模块显示“welcome to os”mov ax,0b800h ;将显存的段地址存到ds中mov ds,axmov si,0s: ;调用16号BIOS中断 处理键盘的输入 mov [si],al mov ah,0h int 16h inc si inc sijmp sdisplay: ;显示字符串“welcome to os”的模块mov bx,000cHmov dx,1010Hmov cx,13mov ah,13hint 10Hrethello: db 'welcome to os'times 510-($-$$) db 0 ;将512字节大小的剩余部分用0和0aa55h补上,最后两个字节用0aa55h其余部分用0dw 0aa55h不要小看了这个程序,那可是没通过其他操作系统运行的。也就是说,你的机子上就算没装任何的操作系统,也能运行,这就是同一般程序的区别。
给个运行后的图片:
- 专注于操作系统5之引导程序代码
- 专注于操作系统4之引导程序
- 专注于操作系统26之从软盘引导boot,并加载loader
- 专注于操作系统13之LDT
- 专注于操作系统15之特权级
- 专注于操作系统19之走进分页
- 专注于操作系统20之启动分页
- 专注于操作系统21之分页进阶
- 专注于操作系统22之中断
- 专注于操作系统23之中断进阶
- 专注于操作系统1之操作系统的从无到有a
- 专注于操作系统2之操作系统的从无到有b
- 专注于操作系统6之导入操作系统内核
- 专注于操作系统3之计算机的启动过程
- 专注于操作系统7之初识保护模式
- 专注于操作系统8之保护模式基础知识a
- 专注于操作系统9之保护模式基础知识b
- 专注于操作系统10之走进保护模式
- Linux网络编程(一)
- SQL*LOAD经常使用的一些例子
- bat 脚本基本语法
- 背包问题系列教程(1):01背包问题
- Android之Activity的生命周期
- 专注于操作系统5之引导程序代码
- HDOJ 1238:Substrings 寻找最长子序列 解题报告
- 第二周上机任务1-2---编写递归函数将十进制数转换成二进制数输出
- HDOJ 1239:Calling Extraterrestrial Intelligence Again 解题报告
- 内部类实现机制
- 多线程计数器锁存器---CountDownLatch
- Oracle中TO_DATE格式
- 从地址栏输入到页面显示 -深入探究web运行机制
- HDOJ 1010:Tempter of the Bone 迷宫问题 解题报告