2013年5月25日

写一个简单的磁盘驱动

摘要: 写一个简单的IDE磁盘驱动。 那么多端口,光oranges’上列出来的几个我都晕了。还是先别一头扎进去。“驱动模块”不过是向上(系统)提供读写磁盘的接口函数,向下封装一系列端口操作。闭上眼,想想我们需要磁盘驱动器做什么,再去找相应功能的端口。下面我们就闭上眼: 1,首先,我们要设定硬盘控制器对扇区的寻址方式,是传统的“柱面/磁头/扇区”,还是所谓的“逻辑扇区”?这就需要设定0X1F6端口的bit6(L位),1表示LBA,0表示CHS。 我们选择LBA。 2,无论读写,我们都要告诉硬盘控制器,要操作的硬盘号(一个PC至少能挂4个IDE硬盘呢),起始扇区号,读写的扇区个数。 我们把硬盘号(0或1. 阅读全文

posted @ 2013-05-25 21:39 weiweishuo 阅读(477) 评论(0) 推荐(0) 编辑

关于有符号数移位的一篇帖子

摘要: 请问有符号位的移位,最高位是否会被补1,从而成为负数?比如signed int a = 320;a>>1=?...不会。随着移位,正数不断填零,负数会不断的填1。...负数填1是保证 还是负数正数填0 保证还是正数 ...给楼主一个建议,做位移之前,通通强制转换成无符号型的,这样结果就可控了…… ...移位 要看是什么数,和码制,这里整体讲一下:一、逻辑移位(无符号数):不管原码、反码、补码,左移和右移一律补"0"二、算术移位(有符号数): (1):真值为正数:不管原码、反码、补码,左移和右移一律补"0" (2)... 阅读全文

posted @ 2013-05-25 17:17 weiweishuo 阅读(750) 评论(0) 推荐(0) 编辑

导航