bin2yx 发表于 2017-7-3 21:43:28

和CPU说话03

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 ,'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
页: [1]
查看完整版本: 和CPU说话03