汇编语言int 13中断02h功能Demo - 使用emu8086
INT 13H,直接磁盤服務(wù),Direct Disk Service;
00H —磁盤系統(tǒng)復(fù)位?
01H —讀取磁盤系統(tǒng)狀態(tài)?
02H —讀扇區(qū)?
讀扇區(qū);以3.5英寸軟盤為例;
常用的3.5軟盤分為上下兩面,每面有80個磁道,每個磁道分為
18個扇區(qū),每扇區(qū)大小為512B。
則:2面*80磁道*18扇區(qū)*512B=1440KB≈1.44MB
磁盤的實際訪問由磁盤控制器進(jìn)行,以扇區(qū)為單位對磁盤進(jìn)行讀寫
在讀寫扇區(qū)的時候要給出面號,磁道號和扇區(qū)號,面號和磁道號從0開始,而扇區(qū)號從1開始。
BIOS提供的訪問磁盤的中斷例程為int13h。
入口參數(shù):
ah=int 13h的功能號
al=讀取的扇區(qū)數(shù)
ch=磁道號
cl=扇區(qū)號
dh=磁頭號(對于軟盤即面號,因為一個面用一個磁頭來讀寫)
dl=驅(qū)動器號 軟驅(qū)從0開始,0:軟驅(qū)A,1:軟驅(qū)B;硬盤從80h開始,
80h:硬盤C,81h:硬盤D。
es:bx指向接收從扇區(qū)讀入數(shù)據(jù)的內(nèi)存區(qū)
返回參數(shù):
操作成功:ah=0,al=讀入的扇區(qū)數(shù)
操作失敗:ah=出錯代碼
?
dl里面放驅(qū)動器號,為0,操作第一個軟驅(qū);
操作成功,返回,ah=0;出錯,ah=錯誤代碼;
那么看來當(dāng)前用的計算機,底層各種硬件返回的錯誤代碼是放在EAX,再由Windows翻譯為一個系統(tǒng)錯誤代碼返回給應(yīng)用程序;
?
讀取0面0道1扇區(qū)的內(nèi)容到0:200
200=c8h;
DB 200 DUP(10)mov ax,0 mov es,ax mov bx,c8h mov al,1 mov ch,0 mov cl,1 mov dl,0 mov dh,0 mov ah,2 int 13h裝入emu8086,執(zhí)行;看一下啥情況;emu8086帶有虛擬軟驅(qū);從virtual drive菜單可查看;
? ? 第一句是在數(shù)據(jù)區(qū)存入10(十六進(jìn)制A),重復(fù)200個;
裝入,啟動以后看一下,從0100:0000開始,一直放的都是十六進(jìn)制的A;
?es:bx指向接收從扇區(qū)讀入數(shù)據(jù)的內(nèi)存區(qū); es放入0,bx放入200;
執(zhí)行完后看一下;是否0100:0000以后的A會被覆蓋;
? ? 執(zhí)行完程序看一下;
? ? 0100:0000以后的內(nèi)容還全部是A;
? ? 看AH寄存器的值為0,表示操作成功;
? ? 也許emu8086的虛擬軟驅(qū)不支持太多的仿真;總之磁盤的讀寫在BIOS層都是用int 13h進(jìn)行的;
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的汇编语言int 13中断02h功能Demo - 使用emu8086的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WPF 3D 基础学习 - 相机、裁剪、
- 下一篇: WPF 3D 学习 - 3D材质初步