<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>

            計算機畢業論文-如何測試軟硬盤驅動器參數

            時間:2024-06-22 22:14:23 計算機畢業論文 我要投稿
            • 相關推薦

            計算機畢業論文-如何測試軟硬盤驅動器參數

            一、如何測試驅動器類型
            隨著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
            BL= 0,1,2,...(0=defult,1=A,2=B,3=C,...)
            中斷:INT 21h
            輸出:CF= 0成功
            DX=返回狀態(這里僅討論DX寄存器的Bit12,在返回的參數中,DX還有其它許多狀態值,本節將不在此討論)
            若Bit12=0,則為單機狀態
            Bit12=1,則為服務器共享狀態
            CF= 1失敗
            AX=錯誤代碼
            2.讀取指定驅動器參數
            本子功能將讀出指定驅動器的各種參數,包括驅動器類型、文件分配表FAT大小,根目錄ROOT大小,及其它BPB各種磁盤參數。本子程序僅讀取驅動器類型參數。
            輸入:AX= 440Dh,
            BL= 0,1,2,...(0=defult,1=A,2=B,3=C,...)
            CX= 0860h 這里 CH=08h表示磁盤驅動器
            CL=60h表示讀取驅動器參數
            DS∶DX=Device-Params指向讀取參數緩沖區,共有32 Bytes長度
            中斷:INT 21h
            輸出:CF= 0成功
            DS∶DX=緩沖區包含讀出驅動器參數
            CF= 1失敗
            AX=錯誤代碼
            3.磁盤參數區
            表1為一130mm 1.2MB的軟盤驅動器參數信息(共32字節長度)。
            @@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
            ; 11.2M 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,al
            and bl,lfh ;bl=0,1,2..
            mov 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.硬盤分區表參數
            在硬盤主引導區的1BEh位置即為硬盤分區表參數區,一個硬盤最多只能分成四個邏輯分區,每個分區參數表占10 h Bytes長度。本節為方便起見,僅設定硬盤為一個分區的情況,至于多分區情況,請讀者通過修改本程序亦可獲得。這里以162MB硬盤主引導區中的分區表參數為例。
            @@08A08601.GIF;表2 硬盤分區表參數@@
            由參數表可查出:磁頭數=15,簇面數=1010,扇區數=22
            2.硬盤容量計算
            通過分區表的參數,還可求得硬盤的容量大小。在提供的程序中對硬盤容量的計算均按16進制方式:
            硬盤容量(MB)=磁頭數×簇面數×扇區數×512/1024為精簡程序,筆者在計算時舍掉了許多余數(舍掉較多,僅保留整數),故此計算得來的容量與實際容量有些差異,請讀者引用時注意。
            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  

            【計算機畢業論文-如何測試軟硬盤驅動器參數】相關文章:

            WCDMA軟切換算法研究及參數設計03-07

            基于FPGA的集成運放參數測試儀03-07

            如何撰寫畢業論文03-01

            畢業論文如何答辯05-22

            計算機畢業論文03-26

            計算機的畢業論文06-24

            計算機畢業論文05-17

            計算機畢業論文-計算機漫話12-02

            計算機畢業論文提綱03-13

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看