自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 资源 (6)
  • 收藏
  • 关注

原创 如何使用编程的方法--创建1.44兆软盘镜像的几种方法。。。(之二 汇编)

第二种情况:我们可以用汇编语言。原理跟前面的一样。在这不再赘述。nasm实现版times 1474560 - ($ - $$) db 0 将上面的文件保存为makeboot.asm然后编译 nasm -f bin makeboot.asm -o fkix.img 即可。以下是在我的机子上的实际操作。C:/DOCUME~1/ADMINI~1>vim makeboot.as

2010-04-30 22:15:00 1133

原创 如何使用编程的方法--创建1.44兆软盘镜像的几种方法。。。(之一 C语言法)

首先先分析以下一块1.44兆软盘镜像占多少个字节。我查到的数据是1474560。不过,我始终不明白这是怎么算出来的?如果有谁知道,请指教。其实一个软盘镜像就是一个1.44兆的文件。只要你有办法生成一个1.44兆的文件。那么一个软盘镜像就算完成。原理懂了。接下来,我们来实现它吧。第一种方法:c语言法#include int main(){ long i; for (i=0; i  pri

2010-04-30 21:58:00 1626

原创 set_base 和 set_limitC语言实现版

在重建系统的时候发现linux-0.11原来这两个宏函数经常出错,迫不得已。改写了这两个函数。extern inline void set_base(void  * addr, unsigned long base){ *((char *)addr+2) = (short) base; base >>= 16; *((char *)addr+4) = (char) base; base >>= 8

2010-04-30 21:52:00 1168

原创 分享《C语言教程》Al.Kelley Ira Pohl 著 一个有趣的例子吧。。。

c编译器把函数名本身当做指针看待  #include void f(void);void g(void);void h(void);int main(void){ (*(*f))(); return 0;}void f(void){ printf("hello from f()./n"); (*(*(*(*(*(*(*(*g))))))))();}void g(void

2010-04-30 21:33:00 1096

原创 用nasm语言重新实现linux-0.11 键盘驱动程序(us)(博古以通今) (开发版,未精简)

;文件名:followking/kernel/chr_drv/keyboard.s;本文件改写linux-0.11/kernel/chr_drv/keyboard.s;目的是为了体验整个系统构建的过程。;作者:hk0625;开始时间: 2010年04月25日星期日 12:57 ;完成时间: 2010年04月25日星期日 22:48(完成);最后修改时间: 2010年04月26日星期一 21:18;

2010-04-26 22:38:00 1673 6

原创 8259芯片的初始化-在重现linux-0.11遇到的问题 (博古以通今)

/*文件名:followking/include/asm/io.h*本文件改写linux-0.11/inlcude/asm/io.h,目的是为了体验整个系统构建的过程。*作者:hk0625*开始时间: 2010年03月28号星期天 15:22*完成时间: 2010年03月28号星期天 15:42(完成)*最后修改时间: 2010年03月29号星期一 11:50*调试完成时间: 2010年04月09

2010-04-25 18:59:00 1221

原创 用nasm语言重新实现linux-0.11 asm.s(博古以通今)

;文件名:followking/kernel/asm.s;本文件改写linux-0.11/kernel/asm.s,目的是为了体验整个系统构建的过程。;作者:hk0625;开始时间: 2010年03月26号星期五 18:47 ;完成时间: 2010年03月31号星期三 15:53(完成);最后修改时间: 2010年04月20日星期二 23:51:;地点: 北京化工大学郁夫图书馆文法阅览室小圆桌;E

2010-04-25 18:57:00 1131

原创 Makefile 文件

AS86 =nasm LD86 =ld -s AS =asLD =ldLDFLAGS =-x -MCC =gcc CFLAGS =-Wall -g  -nostdinc -Iinclude  -O -fno-builtin CPP =gcc -E -nostdinc -IincludeARCHIVES=mm/mm.o kernel/kernel.o fs/fs.oLIBS =lib

2010-04-25 18:54:00 585

原创 给出一个printk函数的实现版本(用于早期调试用)

它有三部分组成。vsprintf,printk,debug.s中mywrite函数。其中vsprintf函数是linux实现我调试后拿来使用,对这个函数的调试可用gdb来调。呵呵,mywrite则是我自己写的。呵呵,改了很多次了。我把所有原件不加修改的发上来,以期可以看到系统开发的真实过程吧。/*文件名:followking/include/stdarg.h*本文件改写linux-0.11

2010-04-25 18:44:00 1548

原创 nasm重写linux-0.11 head.s (博古以通今)

;文件名:followking/boot/head.s;本文件改写linux-0.11/boot/head.s,目的是为了体验整个系统构建的过程。;我是看着赵炯《Linux内核0.11完全注释》编写的。不过,我是编写代码,有疑问再看。;我用的nasm的语法格式。我想写一个操作系统,现在觉得最简单的方式莫过于;先把前辈的实现的东西重新实现一遍。等到对这个问题有更深刻认识的时候,;再重新思考,写出有自

2010-04-25 18:39:00 2502

原创 用nasm语言重新实现linux-0.11 setup.s (博古以通今)

;文件名:followking/boot/setup.s;本文件改写linux-0.11/boot/setup.s,目的是为了体验整个系统构建的过程。;我是看着赵炯《Linux内核0.11完全注释》编写的。不过,我是编写代码,有疑问再看。;我用的nasm的语法格式。我想写一个操作系统,现在觉得最简单的方式莫过于;先把前辈的实现的东西重新实现一遍。等到对这个问题有更深刻认识的时候,;再重新思考,写出

2010-04-25 18:37:00 1618 2

原创 用nasm语言重新实现linux-0.11 bootsect.s(博古以通今)

;这个程序是改写linux的bootsect.s。我用的nasm的语法格式。昨天刚学,今天学完。所以想马上运用一下。;我想写一个操作系统,现在觉得最简单的方式莫过于先把前辈的实现的东西重新实现一遍。等到对这个;问题有更深刻认识的时候,再重新思考,写出有自己特色的系统。;作者:hk0625;开始时间: 2010年03月18日星期四 21:00 ;完成时间: 2010年03月19日星期五 20:55(

2010-04-25 18:31:00 3054 4

linux0.11采用nasm重写汇编代码部分

这是我在大学阶段在学习编写操作系统时遗留下来的代码。之前在博客说要公布,但是由于没有通过最后的测试一直没有公布出来。现在先公布出来以后有空我会 在完善。我讨厌csdn上传的有界限,所以只能把我代码中最后一天发上来。如果你们想要我前期的代码,请发邮件:[email protected]给我。

2011-01-27

The Fundamentals Linux Programming by Example

(美)Arnold Robbins著, 是一本非常不错的linux c书籍。注重实战。值得一看。

2010-09-27

《unix操作系统设计》(有书签,中文版)

这本书对于理解linux早期版本的算法很有益处,也可以作为自己编写操作系统的主要参考书。当年linus就是根据这本书编出早期的linux版本。你看完这本书后,再看linux早期代码会发现很容易理解。呵呵,这些都是我的亲身感受。

2010-05-08

汇编语言 王爽著 清华大学出版社

汇编语言 王爽著 清华大学出版社 这是一本不错的汇编语言教程,适合汇编的初学者。本书是有关8086编程的。想学习汇编的朋友,推荐看一看

2010-02-20

计算机组成原理课件(唐朔飞)

唐朔飞编写的计算机组成原理是一部很不错的教科书,这次上传的是它的配套课件,希望需要学习的同学有用。

2009-11-28

计算机组成原理课后解答(唐朔飞)

计算机组成原理课后解答(唐朔飞) 第一章 作者:佚名 来源:网络 1. 什么是计算机系统、计算机硬件和计算机软件?硬件和软件哪个更重要? 解:P3 计算机系统——计算机硬件、软件和数据通信设备的物理或逻辑的综合体。 计算机硬件——计算机的物理实体。 计算机软件——计算机运行所需的程序及相关资料。 硬件和软件在计算机系统中相互依存,缺一不可,因此同样重要。 5. 冯诺依曼计算机的特点是什么? 解:冯氏计算机的特点是:P9 由运算器、控制器、存储器、输入设备、输出设备五大部件组成; 指令和数据以同一形式(二进制形式)存于存储器中; 指令由操作码、地址码两大部分组成; 指令在存储器中顺序存放,通常自动顺序取出执行; 以运算器为中心(原始冯氏机)。 7. 解释下列概念: 主机、CPU、主存、存储单元、存储元件、存储基元、存储元、存储字、存储字长、存储容量、机器字长、指令字长。 解:P10 主机——是计算机硬件的主体部分,由CPU+MM(主存或内存)组成; CPU——中央处理器(机),是计算机硬件的核心部件,由运算器+控制器组成;(早期的运、控不在同一芯片上) 主存——计算机中存放正在运行的程序和数据的存储器,为计算机的主要工作存储器,可随机存取;由存储体、各种逻辑部件及控制电路组成。 存储单元——可存放一个机器字并具有特定存储地址的存储单位; 存储元件——存储一位二进制信息的物理元件,是存储器中最小的存储单位,又叫存储基元或存储元,不能单独存取; 存储字——一个存储单元所存二进制代码的逻辑单位; 存储字长——一个存储单元所存二进制代码的位数; 存储容量——存储器中可存二进制代码的总量;(通常主、辅存容量分开描述) 机器字长——CPU能同时处理的数据位数; 指令字长——一条指令的二进制代码位数; 讲评:一种不确切的答法: CPU与MM合称主机; 运算器与控制器合称CPU。 这两个概念应从结构角度解释较确切。 8. 解释下列英文缩写的中文含义: CPU、PC、IR、CU、ALU、ACC、MQ、X、MAR、MDR、I/O、MIPS、CPI、FLOPS 解:全面的回答应分英文全称、中文名、中文解释三部分。 CPU——Central Processing Unit,中央处理机(器),见7题; PC——Program Counter,程序计数器,存放当前欲执行指令的地址,并可自动计数形成下一条指令地址的计数器; IR——Instruction Register, 指令寄存器,存放当前正在执行的指令的寄存器; CU——Control Unit,控制单元(部件),控制器中产生微操作命令序列的部件,为控制器的核心部件; ALU——Arithmetic Logic Unit,算术逻辑运算单元,运算器中完成算术逻辑运算的逻辑部件; ACC——Accumulator,累加器,运算器中运算前存放操作数、运算后存放运算结果的寄存器; MQ——Multiplier-Quotient Register,乘商寄存器,乘法运算时存放乘数、除法时存放商的寄存器。 X——此字母没有专指的缩写含义,可以用作任一部件名,在此表示操作数寄存器,即运算器中工作寄存器之一,用来存放操作数; MAR——Memory Address Register,存储器地址寄存器,内存中用来存放欲访问存储单元地址的寄存器; MDR——Memory Data Register,存储器数据缓冲寄存器,主存中用来存放从某单元读出、或写入某存储单元数据的寄存器; I/O——Input/Output equipment,输入/输出设备,为输入设备和输出设备的总称,用于计算机内部和外界信息的转换与传送; MIPS——Million Instruction Per Second,每秒执行百万条指令数,为计算机运算速度指标的一种计量单位; 10. 指令和数据都存于存储器中,计算机如何区分它们? 解:计算机硬件主要通过不同的时间段来区分指令和数据,即:取指周期(或取指微程序)取出的既为指令,执行周期(或相应微程序)取出的既为数据。 另外也可通过地址来源区分,从PC指出的存储单元取出的是指令,由指令地址码部分提供操作数地址。 问题讨论: × 由控制器分析是指令还是数据;

2009-11-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除