中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

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

      時間: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

      主站蜘蛛池模板: 国产亚洲视频在线观看播放 | 皮山县| 日本高清一区二区在线观看| 国产AV无码无遮挡毛片| 鄯善县| 亚欧视频无码在线观看| 女人高潮被爽到呻吟观看| 国产精品爽爽VA吃奶在线观看| 精品久久杨幂国产杨幂| 师宗县| 久久丁香花综合狼人| 国产网友自拍亚洲av| 麻豆成年视频在线观看| 国产香蕉一区二区三区| 加勒比东京热综合久久| 读书| 克什克腾旗| 扬中市| 日土县| 亚洲24小时在线免费视频网站| 人妻无码AⅤ中文系列久久免费 | 亚洲一区二区三区精品在线看| 日本高清视频在线一区二区三区 | 精精国产xxxx视频在线播放器 | 国产美女胸大一区二区三区 | 久久婷婷国产五月综合色| 国产精品久久一区性色a| 亚洲九九夜夜| 18禁精品一区二区三区 | 99日本亚洲黄色三级高清网站| 日本女优在线观看一区二区三区 | 国产va在线播放| 一区二区三区国产偷拍| 仪征市| 免费视频一区二区三区亚洲激情| 亚洲一区二区三区在线视频观看| 泊头市| 国产熟女av一区二区三区四季| 亚洲精品一区二区三区av| 亚洲国产精一区二区三区性色| 亚洲av免费不卡一区二区|