汇编网首页登录博客注册
assembird的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  

[2014-10-08 22:14] 自制OS雏形

点击查看原图
学习linux 2.4.0内核的小成果,里面借鉴了很多linux中的数据结构、函数、代码、原理等,并非原创。自己在xp上用vc和masm将内核启动的一小部分实现出来。引导,中断,启动内存管理,页表设置等内容,
都已经完成。当然问题多多,不是要写一个系统,而是学习的记录。如果你是大牛就pass吧。如果你是如我一样的菜鸟,学linux内核不知从哪下手,可以看看。在过程中碰到了很多困难,也解决了很多问题。总体觉得比捧着厚厚的内核书籍看,来的深刻,希望对你有所启发。
这是其中的汇编代码,先睹为快:
全部代码下载链接:http://download.csdn.net/detail/hello_pe...
阅读全文 | 评论次数(0) | 浏览次数(345) | 所属类型(默认类型)

[2013-01-12 22:57] 操作系统启动测试程序3——启用分页

点击查看原图
测试线性地址到物理地址的转换。BIOS初始化完成后,将软盘上的引导程序加载到0x0000:0x7c00处,并从此处开始执行引导程序。引导程序输出提示,并将kernel程序加载到0x8000:0000处,并跳到此处开始执行。kernel准备全局描述符表GDT,并加载GDT。之后进入保护模式。之后把演示代码移动到地址00303000H位置。设置页目录表,页表项0和页表项1. 再跳到演示代码打印Page is OK,Done!。之后返回实模式。
演示代码的功能是显示指定的字符串。页目录表安排在页码为00200H的物理页中,页表0安排在页码为00202H的物理页中,页表1安排在页码为00201H的物...
阅读全文 | 评论次数(0) | 浏览次数(298) | 所属类型(默认类型)

[2012-12-07 23:52] 操作系统启动测试程序2

点击查看原图
BIOS初始化完成后,将软盘上的引导程序加载到0x0000:0x7c00处,并从此处开始执行引导程序。引导程序输出提示,并将kernel程序加载到0x8000:0000处,并跳到此处开始执行。kernel准备全局描述符表GDT,并加载GDT。初始化局部描述符表LDT,并加载LDT。引入两个任务:临时任务Temp和演示任务Demo,都由TSS结构描述。
根据GDT和LDT,定义了诸多的选择子,并定义了特权级的调用门和任务切换的任务门。初始化GDT、LDT之后进入保护模式,加载临时任务,特权级为0,接着跳入演示任务,特权级为2。演示任务中设置堆栈切换时要拷贝的参数个数、提示字符串的偏移地址和临时...
阅读全文 | 评论次数(0) | 浏览次数(299) | 所属类型(默认类型)

[2012-12-02 21:53] 操作系统启动测试程序

点击查看原图
BIOS初始化完成后,将软盘上的引导程序加载到0x0000:0x7c00处,并从此处开始执行引导程序。引导程序输出提示,并将kernel程序加载到0x8000:0000处,并跳到此处开始执行。kernel准备全局描述符表GDT,并加载GDT。为了访问1M以上的内存,打开A20地址线。使能保护模式,进入保护模式执行,把显存中的内容拷贝到buffer中。退出保护模式,进入实模式,在实模式中将buffer中的内容转成16进制显示出来。
编译器:MASM 6.14.8444  link 5.60.339 
测试工具:bochs 2.6
调试方法:
1、将引导程序和kernel程序分别编译成.e...
阅读全文 | 评论次数(2) | 浏览次数(448) | 所属类型(默认类型)

[2012-11-14 21:42] BIOS字符串输入函数,支持左移、右移、HOME、END、Backspace、Delete和Insert键盘(3)

实现了Insert、Delete和及时显。 方便修改输入的错误。
编译环境:Ml版本:6.14.8444 ; link版本:5.60.339  
更新bios.asm。 
================================================== 
;通用的输入输出模块。
;*输入参数:
;*堆栈传递输入参数,输入参数的压栈顺
;*序采用C语言参数规则,最右端的参数先
;*入栈。参数的访问采用[BP+偏移值]的形式。
;*-----------------------------------
;*返回值:
;*如果函数有返回值,用AX存放。
;...
阅读全文 | 评论次数(0) | 浏览次数(280) | 所属类型(默认类型)

[2012-11-10 19:42] BIOS字符串输入函数,支持左移、右移、HOME、END、Backspace、Delete和Insert键盘(2)

实现了Home、End键行为。 还用Insert、Delete和及时显示未做好。
编译环境:Ml版本:6.14.8444 ; link版本:5.60.339 
这里只更新bios.asm。
==================================================
;通用的输入输出模块。
;*输入参数:
;*堆栈传递输入参数,输入参数的压栈顺
;*序采用C语言参数规则,最右端的参数先
;*入栈。参数的访问采用[BP+偏移值]的形式。
;*-----------------------------------
;*返回值:
;*如果函数有返回值,用...
阅读全文 | 评论次数(2) | 浏览次数(336) | 所属类型(默认类型)

[2012-11-09 22:38] BIOS字符串输入函数,支持左移、右移、HOME、END、Backspace、Delete和Insert键盘(1)

实现了,左移、右移、Backspace键,已经通过调试。Home、End、Delete、Insert键和及时的字符串显示还没做好,做好后再传上来。
编译环境:Ml版本:6.14.8444 ; link版本:5.60.339 
程序要完成的控制键行为:
1、← :左移光标,每按一下,光标左移一个字符位置;如果输入为多行,会移动到上一行最后一个字符,直至本次输入的第一个字符。移动时不会清除屏幕上已经显示的字符,不删除已经输入的字符.
2、→:右移光标,每按一下,光标右移一个字符位置;如果输入为多行,会移动到下一行第一个字符,直至本次输入的最后一个字符的后一个位置。移动时不会清除屏幕上已经显...
阅读全文 | 评论次数(0) | 浏览次数(289) | 所属类型(默认类型)

[2012-10-29 23:23] XP系统,DEBUG能正确运行,但是直接运行就不行。

写了个BIOS键盘输入函数bios_str_input,主程序调用bios_str_input,并显示输入的字符串。debug调试是正确的,
但是直接运行就不行,费解费解呀%>_<%!
Ml版本:6.14.8444 ; link版本:5.60.339
代码如下:
主程序:DOS.asm
;MASMPlus 代码模板 - 纯 DOS 程序
EXTERN bios_str_input:FAR
EXTERN bios_str_output:FAR

code segment 
        db 2048 dup(0)
code ends

data segment
        szMsg d...
阅读全文 | 评论次数(4) | 浏览次数(368) | 所属类型(默认类型)