1. <code id="ya7qu"><span id="ya7qu"><label id="ya7qu"></label></span></code>

    <b id="ya7qu"><bdo id="ya7qu"></bdo></b>
    <wbr id="ya7qu"><optgroup id="ya7qu"><strike id="ya7qu"></strike></optgroup></wbr>
  2. <u id="ya7qu"><bdo id="ya7qu"></bdo></u>
    現在位置:范文先生網>理工論文>計算機論文>也談硬盤參數測試t2gg

    也談硬盤參數測試t2gg

    時間:2023-02-20 22:50:23 計算機論文 我要投稿
    • 相關推薦

    也談硬盤參數測試t2gg

      《計算機世界月刊》1995年第八期上刊登了李宇先生的一篇文章,介紹了測試PC機軟硬盤參數的方法。文中介紹的讀取硬盤參數的方法是通過讀取并分析硬盤主引導記錄Masterboot record來取得硬盤信息的。此方法適用范圍比較廣。事實上由于現在很多PC都使用IDE型的硬盤,因此,我們也可以通過直接編程IDE控制器的方法獲得硬盤參數。下面簡單介紹一下這個方法,并給出一個匯編程序供大家參考。
    IDE(Integrated Drive Electronics)有時也被稱為ATAPI型控制器。此種控制器速度快,集 成度高,在PC機中應用廣泛。我們可以通過一些IDE控制命令來完成硬盤的讀/寫/校驗等各種操作。本文僅介紹其中的硬盤測試命令--0ECH。表1列出了IDE控制器的端口寄存器分配及功能,其中"主狀態寄存器"(1F7H)的各位定義如表2。
    表1 IDE端口寄存器地址及功能表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
    源程序如下。
    .MODEL SMALL
    .286
    .DATA
    copydb 'IDE hard drive identify program 1.0',0dh,0ah
    db 'Copyright (c) 1995 by LiChunsheng',0dh,0ah
    db 'All rights reserved.'
    db 0dh,0ah,0ah,'Model Number......'
    iofm dw 14h dup(2020h)
    db 0dh,0ah,'Firmware Revision....'
    dw 4 dup(2020h)
    db 0dh,0ah,'Serial number......'
    dw 0ah dup(2020h)
    db 0ah
    db 0dh,0ah,'Cylinders......'
    nofcdb 5 dup(20h)
    db 0dh,0ah,'Heads......'
    db 5 dup(20h)
    db 0dh,0ah,'Sectors per track...'
    db 5 dup(20h)
    db 0dh,0ah,'Bytes per track....'
    db 5 dup(20h)
    db 0dh,0ah,'Bytes per sector....'
    db 5 dup(20h)
    db 0dh,0ah,'Buffer size(KB).....'
    db 5 dup(20h)
    db 0dh,0ah,'ECC bytes......'
    db 5 dup(20h)
    db 0dh,0ah,'Drive capacity......'
    db 5 dup(20h)
    db 'MB',24h
    addrdb 2,6,12,8,10,42,44
    addr1dw 36h,14h,2eh,04h,14h,0ah
    cmddb 0,0,0,0,0,0,0ech
    hdinfodw 100h dup(?)
    t-o-msg db 'Time out of range!!!',0dh,0ah,24h
    errmsg db 'Error!!!',0dh,0ah,24h
    .CODE
    dec160PROC
    push di
    push dx
    push cx
    push ax
    mov al,20h
    std
    cmp dx,9999
    ja dloop
    stosb
    cmp dx,999
    ja dloop
    stosb
    cmp dx,99
    ja dloop
    stosb
    cmp dx,9
    ja dloop
    stosb
    dloop:mov ax,dx
    mov dx,0
    mov cx,10
    div cx
    xchg ax,dx
    add al,30h
    stosb
    cmp dx,0
    jnz dloop
    pop ax
    pop cx
    pop dx
    pop di
    cld
    ret
    dec160endp
    mainPROC
    mov ax,@DATA
    mov ds,ax
    mov es,ax
    mloop1:
    mov cx,0
    mov dx,1f7h
    mloop2:in al,dx
    and al,11000000b
    cmp al,01000000b
    jz d-rdy
    loop mloop2
    jmp time-out
    d-rdy:mov al,0
    mov dx,3f6h
    out dx,al
    mov si,offset cmd
    mov al,byte ptr
    and al,1
    mov cl,4
    shl al,cl
    or al,0a0h
    mov byte ptr,al
    mov dx,1f1h
    mov cx,7
    mloop3:
    lodsb
    out dx,al
    inc dx
    loop mloop3
    dec dx
    xor cx,cx
    mloop4:
    in al,dx
    and al,10001000b
    cmp al,00001000b
    jz readdata
    loop mloop4
    jmp time-out
    readdata:
    cli
    cld
    mov dx,1f0h
    mov di,offset hdinfo
    mov cx,100h
    repz insw
    sti
    mov dx,1f7h
    in al,dx
    and al,71h
    xor al,50h
    jnz errend
    mov si,offset addr
    mov di,offset

    nofc
    add di,4
    mov bh,0
    mov cx,7
    mloop6:
    mov bl,byte ptr
    mov dx,word ptr
    call dec160
    inc si
    add di,28
    loop mloop6
    mov ax,1
    mov si,offset addr
    mov cx,3
    mloop7:
    mov bl,byte ptr
    mul word ptr
    inc si
    loop mloop7
    mov bx,2048
    div bx
    mov dx,ax
    call dec160
    mov bx,offset hdinfo
    mov si,offset addr1
    mov di,offset iofm
    mov cx,3
    mloop8:
    push cx
    push bx
    add bx,
    mov cx,
    add si,4
    mloop9:mov ax,word ptr
    xchg ah,a1
    stosb
    mov al,ah
    stosb
    add bx,2
    loop mloop9
    pop bx
    pop cx
    add di,23
    loop mloop8
    mov dx,offset copy
    jmp endproc
    time-out:
    mov dx,offset t-o-msg
    jmp endproc
    errend:
    mov dx,offset errmsg
    endproc:
    mov ah,09h
    int 21h
    mov ah,4ch
    int 21h
    mainendp
    end main


    【也談硬盤參數測試t2gg】相關文章:

    如何測試軟硬盤驅動器參數08-06

    也談責任08-17

    也談讀經08-16

    也談參與08-17

    也談“終端促銷”08-06

    也談“終端促銷”08-06

    也談估算教學08-05

    也談語文積累08-20

    也談“學雷鋒”08-06

    国产福利萌白酱精品tv一区_日韩亚洲中字无码一区二区三区_亚洲欧洲高清无码在线_全黄无码免费一级毛片
    1. <code id="ya7qu"><span id="ya7qu"><label id="ya7qu"></label></span></code>

      <b id="ya7qu"><bdo id="ya7qu"></bdo></b>
      <wbr id="ya7qu"><optgroup id="ya7qu"><strike id="ya7qu"></strike></optgroup></wbr>
    2. <u id="ya7qu"><bdo id="ya7qu"></bdo></u>
      丝袜美腿国产综合久久 | 先锋资源国产男人色 | 亚洲一区二区国产精品无l 伊人久久大香线蕉AV五月天宝贝 | 最新国产精品拍自在线观看 | 在线网站黄不卡 | 亚洲欧美伊人久久综合一区二区 |