教育资源为主的文档平台

当前位置: 查字典文档网> 所有文档分类> 论文> 其他论文> 如何测试软硬盘驱动器参数

如何测试软硬盘驱动器参数

上传者:网友
|
翻新时间:2013-12-18

如何测试软硬盘驱动器参数

如何测试软硬盘驱动器参数 如何测试软硬盘驱动器参数 如何测试软硬盘驱动器参数

一、如何测试驱动器类型

随着PC硬件的高速发展,各种应用软件对外设的要求亦不断提高,这使得有些软件的设计者在开发软件时需要对主机的配套设备进行检查,以便能更好地利用这些设备。如对处理器CPU及协处理器的检测、对驱动器的检测等等。对于上述的测试,除CPU及协处理器的测试方法已有不少文章论述过外,还很少有对驱动器测试的论述。本文将详细介绍如何测试驱动器,并给出相应的子程序源码,读者可根据需要将其变成一独立程序,也可将其加入到自己的应用程序中去。

在提供的测试驱动器子程序中,使用了DOS INT 21h 的设备管理功能调用 44XXh(IOCTL)的两个子功能:AX=4409h 和AX=440Dh。通过对What-Drv子程序的调用,可得到指定驱动器的类型。该测试子程序的调用方式为:

输入:AL=驱动器标号(A,B,C,...)

程序:CALL What-Drv

输出:CF= 0 成功

AL= 驱动器类型(提供之源码中有各种类型说明)

DS:DX= Device-Params读取参数缓冲区,共有32Bytes长度

CF= 1失败

AX=错误代码

1.测试指定驱动器状态

本子功能是测试所指定驱动器是否为单机或网络之共享状态输入:AX= 4409h中断:INT 21h

输出:CF= 0成功

DX=返回状态(这里仅讨论DX寄存器的Bit12,在返回的参数中,DX还有其它许多状态值,本节将不在此讨论)

若Bit12=0,则为单机状态

Bit12=1,则为服务器共享状态

CF= 1失败

AX=错误代码

2.读取指定驱动器参数

本子功能将读出指定驱动器的各种参数,包括驱动器类型、文件分配表FAT大小,根目录ROOT大小,及其它BPB各种磁盘参数。本子程序仅读取驱动器类型参数。

输入:AX= 440Dh,CX= 0860h 这里 CH=08h表示磁盘驱动器

CL=60h表示读取驱动器参数

DS∶DX=Device-Params指向读取参数缓冲区,共有32 Bytes长度

中断:INT 21h

输出:CF= 0成功

DS∶DX=缓冲区包含读出驱动器参数

CF= 1失败

AX=错误代码

3.磁盘参数区@@08a08600.GIF;表1@@

4.测试驱动器源码(程序

1)

程序1:

;------------

; Check Drive Type

;Input: AL=Can be any drive letter(A,B,C..)

;Output: CF=0 Successfully

; AL=drive type will be returned as an

; ERRORLEVEL.

; DS∶DX=Pointer to parameter block

; CF=1 Failed

; all registers restored.

;-----------------

; ERRORLEVEL Result

; --------------

; -1Drive isn′t local

; 0320K/360K 130mm.drive; 2720K 90mm.drive

; 3Single-density 203mm.drive

; 4Double-density 203mm.drive

; 5Hard disk

; 6Type drive

; 71.44M drive

; 8Something else

;------------;

What-drv proc near

push cx ;save registers

push bx

mov bl,almov ax,4409h

;Check workstation /server

push bx

int 21h

pop bx

jb What-error ;Error to exit

test dh,10h ;test server?

jz What-continue

mov al,-1

jmp short What-Exit

What-continue:

mov ax,440dh

mov cx,0860h

;Get device paramters

push cs

pop ds

mov dx,offset Device-params

int 21h

jb What-error ;Error to exit

mov al,[Device-Params+1]

;Get device type

What-Exit:

clc ;Successfully flag

What-error:

pop bx ;recover registers

pop cx

retn

What-drv endp

Device-Params db 32 dup(0)

二、读取硬盘参数

硬盘是主机重要的存储设备,不同厂家,不同大小的硬盘参数均不相同。这里所说的硬盘参数是:磁头数、簇面数和扇区数。本节将给出一个读取硬盘参数的子程序(不含逻辑,即将一个大硬盘分成两个以上分区。当然读者也可修改本程序,以便能识别两个以上分区的硬盘)。在下面的程序中,将首先读取硬盘的主引导区 Master boot record,因为所有的硬盘参数都存放在里面。程序流程如下:

(1) 将指定的物理硬盘主引导区读入缓冲区

(2) 在引导区偏移地址1BEh处获取相应的硬盘参数

(3) 通过计算求得该硬盘的磁头数、簇面数和扇区数

(4) 由得到的硬盘参数求得其容量大小

Get-FdiskParam 子程序调用方式为:

输入:AL=硬盘物理ID号(80h 或 81h)

程序:CALL Get-FdiskParam

输出:CF=0成功

AX= 硬盘容量大小(Hex)

CX= 簇面数

DL=扇区数

DH=磁头数

CF=1 失败

1.硬盘分区表参数@@08A08601.GIF;表2 硬盘分区表参数@@2.硬盘容量计算

通过分区表的参数,还可求得硬盘的容量大小。在提供的程序中对硬盘容量的计算均按16进制方式:3.读硬盘参数源码(程序

2)

程序2:

;----------------

;Get Hard Cyls,Sector,Head,Size

;Input:AL= Fdisk ID(80h,81h)

;Output: CF= 0 successfully

;AX= Fdisk size(Hex)

;CX= Number of Cylinders

:DL= Number of Sectors

;DH= Number of Heads

;CF= 1 failed

;-------------

Get-Fdiskparamproc near

cmp al,80h ;test Fdisk ID

jb Get-FdiskExit

mov cx,cs

mov ds,cx

mov es,cx ;set DS,ES segment

mov dl,al ;Fdisk ID

mov bx,offset Partition-area

mov cx,1

mov dh,0

mov ax,201h ;read partition sector

int 13h

jb Get-FdiskExit ;failed to exit.

mov bx,offset Partiton-area+1beh

mov al,[bx+8] ;Sector counter

mov ah,[bx+5] ;Head counter

mov dl,[bx+7] ;cylinder lower

mov dh,[bx+6] ;cylinder high

mov cx,6

shr dh,cl

inc dx ;get cylinder

push dx ;save cylinder

push ax ;save head & sector

mul ah ;compute Fdisk size

mul dx

mov cx,11

Loop-shift:

shr dx,1

rcr ax,1

loop Loop-shift ;Get Fdisk size

pop dx ;sectors & heads

pop cx ;cylinder counter

clc ;clear CF flag

Get-FdiskExit:

retn

Get-FdiskParamendp

Partition-area db 512 dup(0) ;read Partition buffer

下载文档

版权声明:此文档由查字典文档网用户提供,如用于商业用途请与作者联系,查字典文档网保持最终解释权!

网友最新关注

还是象我自己吧
汽车"丢"了
铅笔和橡皮
倒霉的一天
小蜘蛛PK大苍蝇
一件有趣的事
白色让我想起
小苍耳
我变成百花仙子
拍手歌
第一次溜冰
欢乐的“六一”儿童节
我观察昙花一现
采蜜
20年后的我
城轨交通建设项目施工招标的评标方法研究
基于等代层模型的盾构法地层移动优化反分析
基于运营组织的城市群轨道客流预测法
城市轨道交通项目合同全过程管理
煤矿供配电系统谐波的危害及治理
人权与国权的觉悟——新文化运动与五四运动同异论
MPEG一2与ATM网在长春轻轨上的应用
谈建筑电气安装与土建施工的相互配合
浅谈仪表自动化系统工程施工程序
论轨道交通列车位置检测设备
城轨交通梁整体移动道岔的驱动方式
仁政——权威主义国家的合法性理论
小议配电网谐波的产生与危害治理
城际快速轨道交通对区域经济的影响
专制、宪政、民主的逻辑关系
《数星星的孩子》教学设计
《爱迪生救妈妈》教学设计2
《数星星的孩子》教学设计一
《阿德的梦》教学设计
《玲玲的画》教学设计三
《玲玲的画》教学设计四
《三个儿子》教学设计一
《蜜蜂引路》教学设计一
《丑小鸭》教学设计
《丑小鸭》教学设计片段
《爱迪生救妈妈》教学设计1
《蜜蜂引路》教学设计二
《三个儿子》教学设计片段
《数星星的孩子》教学设计二
《恐龙的灭绝》教学设计2