教育资源为主的文档平台

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

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

上传者:网友
|
翻新时间: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

下载文档

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

网友最新关注

给远方小朋友的一封信
手拉手活动给远方小学生的一封信
难忘童年
难忘的童年
给远方小朋友的一封信
让我们手拉手
给远方小朋友的一封信
给远方小朋友的一封信
难忘童年(6)
难忘童年
难忘的童年
给远方的小学生的一封信3
给贫困山区的小朋友一封信
难忘的童年
难忘童年
伤害同学的检讨书范文
上英语课开小差的检讨书范文
英语四级考试怠慢的检讨书范文
在学校打牌的检讨书
学生打老师的检讨书范文
不遵守组织纪律性的检讨书范文
不做值日的检讨书范文
给家人的检讨书范文
上课时间玩手机的检讨书范文
考试没考好的检讨书范文
犯错不认错的检讨书范文
上晚自习看手机视频的检讨书范文
无故旷课、离校的检讨书范文
上课听歌的检讨书范文
酒店工作失职的检讨书范文
甲方现场代表职责
当前中国别墅设计与美国的差异
装饰、装修工程中隐蔽工程验收记录的主要项目
怎样整理工程技术资料
工程管理部工作总结
住宅外观(外立面)设计
建筑抗震知识
施工现场安全要求
屋面工程的隐蔽验收记录的主要项目
工程资料保管的期限与密级
施工管理应该注意的地方
质量检查内业资料遗留问题及解决方案
地基与基础、主体结构中隐蔽工程验收记录的主要项目
土建 房屋工程施工放线方法
个人年终总结
《北京亮起来了》 教案讲义1
《北京亮起来了》重点字词意思
《北京亮起来了》重点字词梳理
《难忘的泼水节》 教案讲义2
《北京亮起来了》 训练素材
《日月潭》 教案讲义2
《日月潭》 教案讲义1
《日月潭》 训练素材
《日月潭》 范文习作
《日月潭》 写作指导
《日月潭》 教师语录
《日月潭》 考点练兵2
《日月潭》 考点练兵1
《日月潭》 重难点分析
《北京亮起来了》 写作指导