1000部丰满熟女富婆视频,托着奶头喂男人吃奶,厨房挺进朋友人妻,成 人 免费 黄 色 网站无毒下载

首頁 > 文章中心 > 正文

硬盤參數測試

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

硬盤參數測試

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

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

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

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

表3

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

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

(2)檢驗控制器和驅動器的狀態(通過檢測端口1F7H的B7、B6兩位),若控制器空閑且驅動器就緒,即可輸出命令;

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

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

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

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

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

表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

主站蜘蛛池模板: 武胜县| 祥云县| 老河口市| 堆龙德庆县| 四川省| 南陵县| 普兰店市| 油尖旺区| 东台市| 东乌珠穆沁旗| 江川县| 凤山市| 尖扎县| 高台县| 盐城市| 甘德县| 台江县| 自治县| 昌宁县| 将乐县| 卓资县| 青海省| 浠水县| 林甸县| 阜康市| 苍梧县| 明光市| 汉沽区| 马公市| 大方县| 临清市| 吉隆县| 西乌珠穆沁旗| 上蔡县| 喜德县| 乌拉特后旗| 宜章县| 宝鸡市| 德格县| 托里县| 鄯善县|