| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
2017.7.3 
面对一台虚拟的空白计算机,我现在仅能做的是给她的内存0:7c00处写入一段代码,然后启动她,她就会按我的代码 
执行我给她的指令,例如 
mov ax,0 是让她的ax寄存器=0 
mov al,'0'  
mov ah,0eh 
mov cx,1 
int 10h  
是让她在屏幕显示一个0 
mov ax,0b800h 
mov ds,ax 
mov bx,0 
mov byte [bl],'0' 
应该也能让她在屏幕显示一个0 
我想让她做更多的事,该怎么办呢? 
 
《汇编语言》教我们的没有太多涉及硬件的东西,记忆中好像只有稍微涉及了键盘的i/o端口和CMOS的端口 
可是我们的电脑还有那么多的硬件,怎么让它们工作呢? 
寻寻觅觅,又找到了几本书: 
《操作系统教程 MINIX的设计和实现》 
《linux设备驱动开发详解第二版》 
目前正在看第一本,哎,真羡慕那些记忆力好的人,不懂的东西记下来就好了,可我不懂的东西真记不住。 
只有理解了才能记住。 
所以好多书中前面的章节直接介绍什么进程啊、文件系统啊、管道、通信什么的,好难理解。 
我的想法是,首先知道电脑有什么硬件,怎么命令它们做事,仅此而已, 
在这个基础上慢慢懂得多了,才会用到怎么协调它们一起做事、配合做事,这时候再理解进程、文件系统、通信什么的才好。 
所以,目前首要问题是弄清楚电脑有什么硬件。 
已知的有:软驱、硬驱、光驱、鼠标、键盘、CMOS、DMA、时钟。 
这些东西的名字可能还弄错了,因为暂时还没找到系统介绍它们的书籍。 
假如抛开的BIOS中断不用的话,现在我能做的,只有两样: 
60H端口的读取 
70~71H 端口的读写 
按理说,CPU将所有外设接口芯片的内部寄存器都当做端口来访问,她是怎么识别、管理它们的呢? 
现在都64位电脑了,一个I/O命令  
例如         mov edx,0ffffffffh 
                in eax,edx 
                这个命令会发生什么? 
想想都头大。 
所以现在从简单的学起,在实模式下学习怎么认识和管理这些端口,即达到控制硬件的目的。 
看几天书先咯。 
2017.7.3 |   
 
评分
- 
查看全部评分
 
 
 
 
 
 |