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