欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

汇编语言int 13中断02h功能Demo - 使用emu8086

发布时间:2025/4/14 编程问答 32 豆豆
生活随笔 收集整理的这篇文章主要介绍了 汇编语言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的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。