亚洲欧洲中文日韩久久av乱码,51成人精品午夜福利av免费七,强被迫伦姧惨叫在线视频,绝伦の上司に一晚人妻

硬盤參數(shù)測(cè)試

前言:本站為你精心整理了硬盤參數(shù)測(cè)試范文,希望能為你的創(chuàng)作提供參考價(jià)值,我們的客服老師可以幫助你提供個(gè)性化的參考范文,歡迎咨詢。

硬盤參數(shù)測(cè)試

《計(jì)算機(jī)世界月刊》1995年第八期上刊登了李宇先生的一篇文章,介紹了測(cè)試PC機(jī)軟硬盤參數(shù)的方法。文中介紹的讀取硬盤參數(shù)的方法是通過讀取并分析硬盤主引導(dǎo)記錄Masterbootrecord來(lái)取得硬盤信息的。此方法適用范圍比較廣。事實(shí)上由于現(xiàn)在很多PC都使用IDE型的硬盤,因此,我們也可以通過直接編程IDE控制器的方法獲得硬盤參數(shù)。下面簡(jiǎn)單介紹一下這個(gè)方法,并給出一個(gè)匯編程序供大家參考。

IDE(IntegratedDriveElectronics)有時(shí)也被稱為ATAPI型控制器。此種控制器速度快,集成度高,在PC機(jī)中應(yīng)用廣泛。我們可以通過一些IDE控制命令來(lái)完成硬盤的讀/寫/校驗(yàn)等各種操作。本文僅介紹其中的硬盤測(cè)試命令--0ECH。表1列出了IDE控制器的端口寄存器分配及功能,其中"主狀態(tài)寄存器"(1F7H)的各位定義如表2。

表1IDE端口寄存器地址及功能表2

"硬盤控制寄存器"(3F6H)各位定義如表3。

表3

輸出IDE控制命令可采用下列步驟:

(1)向端口3F6H寫入控制字節(jié),建立相應(yīng)的硬盤控制方式;

(2)檢驗(yàn)控制器和驅(qū)動(dòng)器的狀態(tài)(通過檢測(cè)端口1F7H的B7、B6兩位),若控制器空閑且驅(qū)動(dòng)器就緒,即可輸出命令;

(3)完整地輸出7B長(zhǎng)的命令塊,依次寫入端口1F1H-1F7H,不論是否需要,端口1F1H-1F6H對(duì)應(yīng)的前6B參數(shù)必須輸出,端口1F7H輸出命令碼0ECH;

(4)檢測(cè)端口1F7H的B7、B3位,若控制器空閑且B3置1,表示操作結(jié)束,即可讀取結(jié)果;

(5)通過端口1F0H獨(dú)取100H字至緩沖區(qū);

(6)再次讀取端口1F7H,判斷B0位是否為0,若B0=0,表示命令成功,否則表示命令失敗,轉(zhuǎn)至錯(cuò)誤處理;

(7)通過表4所示的偏移量,讀取我們所需的信息并轉(zhuǎn)換成可顯示的信息。

表4

源程序如下。

.MODELSMALL

.286

.DATA

copydb''''IDEharddriveidentifyprogram1.0'''',0dh,0ah

db''''Copyright(c)1995byLiChunsheng'''',0dh,0ah

db''''Allrightsreserved.''''

db0dh,0ah,0ah,''''ModelNumber......''''

iofmdw14hdup(2020h)

db0dh,0ah,''''FirmwareRevision....''''

dw4dup(2020h)

db0dh,0ah,''''Serialnumber......''''

dw0ahdup(2020h)

db0ah

db0dh,0ah,''''Cylinders......''''

nofcdb5dup(20h)

db0dh,0ah,''''Heads......''''

db5dup(20h)

db0dh,0ah,''''Sectorspertrack...''''

db5dup(20h)

db0dh,0ah,''''Bytespertrack....''''

db5dup(20h)

db0dh,0ah,''''Bytespersector....''''

db5dup(20h)

db0dh,0ah,''''Buffersize(KB).....''''

db5dup(20h)

db0dh,0ah,''''ECCbytes......''''

db5dup(20h)

db0dh,0ah,''''Drivecapacity......''''

db5dup(20h)

db''''MB'''',24h

addrdb2,6,12,8,10,42,44

addr1dw36h,14h,2eh,04h,14h,0ah

cmddb0,0,0,0,0,0,0ech

hdinfodw100hdup(?)

t-o-msgdb''''Timeoutofrange!!!'''',0dh,0ah,24h

errmsgdb''''Error!!!'''',0dh,0ah,24h

.CODE

dec160PROC

pushdi

pushdx

pushcx

pushax

moval,20h

std

cmpdx,9999

jadloop

stosb

cmpdx,999

jadloop

stosb

cmpdx,99

jadloop

stosb

cmpdx,9

jadloop

stosb

dloop:movax,dx

movdx,0

movcx,10

divcx

xchgax,dx

addal,30h

stosb

cmpdx,0

jnzdloop

popax

popcx

popdx

popdi

cld

ret

dec160endp

mainPROC

movax,@DATA

movds,ax

moves,ax

mloop1:

movcx,0

movdx,1f7h

mloop2:inal,dx

andal,11000000b

cmpal,01000000b

jzd-rdy

loopmloop2

jmptime-out

d-rdy:moval,0

movdx,3f6h

outdx,al

movsi,offsetcmd

moval,byteptr

andal,1

movcl,4

shlal,cl

oral,0a0h

movbyteptr,al

movdx,1f1h

movcx,7

mloop3:

lodsb

outdx,al

incdx

loopmloop3

decdx

xorcx,cx

mloop4:

inal,dx

andal,10001000b

cmpal,00001000b

jzreaddata

loopmloop4

jmptime-out

readdata:

cli

cld

movdx,1f0h

movdi,offsethdinfo

movcx,100h

repzinsw

sti

movdx,1f7h

inal,dx

andal,71h

xoral,50h

jnzerrend

movsi,offsetaddr

movdi,offsetnofc

adddi,4

movbh,0

movcx,7

mloop6:

movbl,byteptr

movdx,wordptr

calldec160

incsi

adddi,28

loopmloop6

movax,1

movsi,offsetaddr

movcx,3

mloop7:

movbl,byteptr

mulwordptr

incsi

loopmloop7

movbx,2048

divbx

movdx,ax

calldec160

movbx,offsethdinfo

movsi,offsetaddr1

movdi,offsetiofm

movcx,3

mloop8:

pushcx

pushbx

addbx,

movcx,

addsi,4

mloop9:movax,wordptr

xchgah,a1

stosb

moval,ah

stosb

addbx,2

loopmloop9

popbx

popcx

adddi,23

loopmloop8

movdx,offsetcopy

jmpendproc

time-out:

movdx,offsett-o-msg

jmpendproc

errend:

movdx,offseterrmsg

endproc:

movah,09h

int21h

movah,4ch

int21h

mainendp

endmainHY6YVASD1Q

主站蜘蛛池模板: 东乡县| 新建县| 闽清县| 峨眉山市| 太仓市| 黄骅市| 营口市| 固原市| 盐池县| 芜湖市| 金堂县| 余姚市| 基隆市| 定西市| 正宁县| 合水县| 洪洞县| 青神县| 蒙城县| 温泉县| 类乌齐县| 延津县| 仙居县| 旅游| 扶沟县| 汨罗市| 綦江县| 石林| 舒兰市| 南康市| 静安区| 房产| 五莲县| 栾川县| 富源县| 全椒县| 常宁市| 巨鹿县| 南岸区| 华阴市| 平武县|