AT硬碟介面

2021-05-22 06:47:17 字數 4316 閱讀 4559

對硬碟進行操作的常用埠是1f0h~1f7h號埠,各埠含義如下:   

埠號           讀還是寫       具體含義   

1f0h               讀/寫             用來傳送讀/寫的資料(其內容是正在傳輸的乙個位元組的資料)   

1f1h               讀                   用來讀取錯誤碼   

1f2h               讀/寫             用來放入要讀寫的扇區數量   

1f3h               讀/寫             用來放入要讀寫的扇區號碼   

1f4h               讀/寫             用來存放讀寫柱面的低8位位元組   

1f5h               讀/寫             用來存放讀寫柱面的高2位位元組(其高6位恒為0)   

1f6h               讀/寫             用來存放要讀/寫的磁碟號及磁頭號   

第7位           恒為1   

第6位           恒為0   

第5位           恒為1   

第4位           為0代表第一塊硬碟、為1代表第二塊硬碟   

第3~0位         用來存放要讀/寫的磁頭號   

1f7h               讀                   用來存放讀操作後的狀態   

第7位           控制器忙碌   

第6位           磁碟驅動器準備好了   

第5位           寫入錯誤   

第4位           搜尋完成   

第3位           為1時扇區緩衝區沒有準備好   

第2位           是否正確讀取磁碟資料   

第1位           磁碟每轉一周將此位設為1,   

第0位           之前的命令因發生錯誤而結束   

寫                   該位埠為命令埠,用來發出指定命令   

為50h           格式化磁軌   

為20h           嘗試讀取扇區   

為21h           無須驗證扇區是否準備好而直接讀扇區   

為22h           嘗試讀取長扇區(用於早期的硬碟,每扇可能不是512位元組,而是128位元組到1024之間的值)   

為23h           無須驗證扇區是否準備好而直接讀長扇區   

為30h           嘗試寫扇區   

為31h           無須驗證扇區是否準備好而直接寫扇區   

為32h           嘗試寫長扇區   

為33h           無須驗證扇區是否準備好而直接寫長扇區   

注:當然看完這個表你會發現,這種讀寫埠的方法其實是基於磁頭、柱面、扇區的硬碟讀寫方法,不過大於8g的硬碟的讀寫方法也是通過埠1f0h~1f7h來實現的^_^   

乙個通過對硬碟輸入輸出埠操作來讀寫硬碟的例項   

讓我們來看乙個關於int13h讀寫硬碟程式例項。在例子中詳細說明了硬碟的讀寫操作所用到的埠,並且把通過int13h讀出的主引導區得到的資料和通過輸入輸出讀主引導區得到的資料進行比較,從而證實這兩種操作功能相同,程式片段如下:   

mov           dx,1f6h                   ;   要讀入的磁碟號及磁頭號   

mov           al,0a0h                   ;磁碟0,磁頭0         

out             dx,al   

mov           dx,1f2h                   ;要讀入的扇區數量   

mov           al,1                         ;讀乙個扇區           

out             dx,al     

mov           dx,1f3h                   ;要讀的扇區號     

mov           al,1                         ;扇區號為1   

out             dx,al   

mov           dx,1f4h                   ;要讀的柱面的低8位   

mov           al,0                         ;   柱面低8位為0     

out           dx,al   

mov           dx,1f5h                   ;   柱面高2位       

mov           al,0                         ;   柱面高2位為0(通過1f4h和1f5h埠我們可以確定   

;   用來讀的柱面號是0)   

out             dx,al   

mov           dx,1f7h                   ;命令埠   

mov           al,20h                     ;   嘗試讀取扇區   

out             dx,al   

still_going:   

in             al,dx   

test           al,8                         ;扇區緩衝是否準備好   

jz           still_going           ;如果扇區緩衝沒有準備好的話則跳轉,直到準備好才向下執行。   

mov           cx,512/2                 ;設定迴圈次數(512/2次)   

mov           di,offset   buffer   

mov           dx,1f0h                   ;將要傳輸的乙個位元組的資料   

rep             insw                         ;傳輸資料   

;       ------   

mov           ax,201h                   ;以下是用int13h讀硬碟的0磁頭、0柱面、1扇區   

mov           dx,80h   

mov           cx,1   

mov           bx,offset   buffer2   

int               13h   

mov           cx,512                   ;以下部分用來比較2種方法讀出的硬碟資料   

mov           si,offset   buffer   

mov           di,offset   buffer2   

repe           cmpsb   

jne             failure   

mov           ah,9   

mov           dx,offset   readmsg   

int             21h   

jmp           good_exit   

failure:   

mov           ah,9   

mov           dx,offset   failmsg   

int               21h   

good_exit:                             ;以下部分用來結束程式   

mov             ax,4c00h                 ;退出程式   

硬碟介面型別

硬碟介面是硬碟與主機系統間的連線部件,作用是在硬碟快取和主機記憶體之間傳輸資料。不同的硬碟介面決定著硬碟與計算機之間的連線速度,在整個系統中,硬碟介面的優劣直接影響著程式執行快慢和系統效能好壞。從整體的角度上,硬碟介面分為ide sata scsi和光纖通道四種,ide介面硬碟多用於家用產品中,也部...

硬碟介面型別

開放分類 硬體 電腦 it 計算機 cpu硬碟 介面是硬碟與主機系統間的連線部件,作用是在硬碟快取和主機記憶體 之間傳輸資料。不同的硬碟介面決定著硬碟與計算機之間的連線速度,在整個系統中,硬碟介面的優劣直接影響著程式執行快慢和系統效能好壞。從整體的角度上,硬碟介面分為ide sata scsi 和光...

硬碟介面簡介

硬碟介面是硬碟與主機系統間的連線部件,作用是在硬碟快取和主機記憶體之間傳輸資料。不同的硬碟介面決定著硬碟與計算機之間的連線速度,在整個系統中,硬碟介面的優劣直接影響著程式執行快慢和系統效能好壞。從整體的角度上,硬碟介面分為ide sata scsi和光纖通道四種,ide介面硬碟多用於家用產品中,也部...