鱼C论坛

 找回密码
 立即注册
查看: 3217|回复: 4

[技术交流] 各种中断功能及其子程序功能【更多资料在我的空间里】

[复制链接]
发表于 2011-7-28 13:08:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
(1)、中断INT 20H

功能描述: 终止当前正在运行的程序,它是几种终止程序运行方法之一
入口参数: CS=PSP的段地址
出口参数: 无

(2)、中断INT 22H

功能描述: 终止处理程序的地址,该地址在程序装入内存运行前被放入PSP的0AH~0DH的单元内。该中断指令从不直接书写在程序之中

(3)、中断INT 23H

功能描述: Ctrl+C处理程序。该中断指令从不直接书写在程序之中

(4)、中断INT 24H

功能描述: 致命错误处理程序。该中断指令从不直接书写在程序之中

(5)、中断INT 25H

功能描述: 绝对读磁盘,直接从逻辑设备中读出数据到内存单元中
入口参数: AL=驱动器号(0=A、1=B、……) 分区容量≤32M,有:
CX=读出的扇区数
DX=起始扇区数
DS:BX=存放数据缓冲区的地址
否则,有:
CX=-1
DS:BX=参数块缓冲区的地址,该参数块的结构如下: 字节 描述
00~03H 32位扇区数
04~05H  将被读出的扇区数
06~07H 存放数据的缓冲区的偏移量
08~09H 存放数据的缓冲区的段地址


出口参数: CF=0——操作成功,否则,AX=错误号,其含义见下错误代码表 错误代码 错误含义
80H 附件响应失败
40H 定位操作失败
20H 设备控制器失败
10H 数据错(错误的CRC)
08H  DMA失败
04H 需要的扇区未发现
02H 错误的地址标志
01H 错误命令


(6)、INT 26H

功能描述: 绝对写磁盘,直接把内存单元中的内容写入逻辑设备
入口参数: 与前面的INT 25H相一致
出口参数: 与前面的INT 25H相一致

(7)、INT 27H

功能描述: 终止,并驻留在内存
入口参数: CS=PSP的段值
DX=被保护程序最后一个字节的偏移量再加1
出口参数: 无

(8)、INT 28H

功能描述: DOS空闲中断
入口参数: 无
出口参数: 无

(9)、INT 2FH

功能描述: 多重中断服务,允许多个驻留程序通过单个中断与其它进程通信。
入口参数: AH=标识号,AL=功能号,功能号及其含义如下: 功能号 功能描述
01H 假脱机打印
06H 驻留ASSIGN命令
10H 驻留SHARE命令
B7H 驻留APPEND命令

出口参数: 若入口AL为0,则出口AL=0FFH,否则,其值取决于处理程序
中断INT 13H的扩展功能

    由于旧有的INT 13H中断只能采用10位二进制来表示磁道,所以对于大于8.4G的硬盘它已不能完全读写了。扩展INT 13H又称为INT 13 Extension APIs,它主要就是用来对超过1024个磁道的硬盘进行读写的。

1.数据结构(Data Structure)
该数据结构是提供给扩展INT 13H使用的,它是建立在逻辑扇号之上的,具体结构如下:

disk_addr_pkt struc ; 磁盘地址包
packet_size   db  16  ; 磁盘参数包的尺寸,必须为10H
reserved      db  0   ;    保留,必须为零
block_count   dw  ?   ;    传输的扇区数
buffer_addr   dd  ?   ;    内存缓冲区地址(段:偏移)
block_num     dq  ?   ;    起始绝对扇区号(即起始扇区的LBA号码)
disk_addr_pkt ends

    结构中前两项是固定的,用到的是后三项。起始绝对扇区号即前面讲到的逻辑扇区号,从0开始编号。

2.扩展读的功能
  入口:AH=42H
       DL=驱动器号(硬盘是80H)
       DS:SI=磁盘地址包(即前面的数据结构的地址)
  出口:成功则 CF=0, AH=0
       失败则 CF=1, AH=错误码
3.扩展写的功能
  入口:AH=43H
       AL =0 (不校验)
          =1(校验)
       DL=驱动器号
       DS:SI=磁盘地址包
  出口:成功则 CF=0, AH=0
       失败则 CF=1, AH=错误码
    注:一般取AL=0。
4.获得驱动器参数
  入口:AH=48H
       DL=驱动器号
       DS:SI=返回结果的地址
  出口:成功则 CF=0, AH=0
       DS:SI指向返回数据结构的地址:

Info_size     dw  26 ;缓冲区的大小
Flags         dw  ? ;信息标志
Cylinders     dd  ?  ;number of cylinders on disk
Heads         dd  ?  ;number of heads on disk
Sec_per_track dd  ?  ;number of sectors per track
Sectors       dq  ?  ;number of sectors on requested disk
Sector_size   dw  ?  ;number of bytes per sector

失败则 CF=1, AH=错误码
错误码的定义与原来的相同,增加的几个在此用不到。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-28 13:11:28 | 显示全部楼层
本帖最后由 死亡请帖 于 2011-7-28 13:12 编辑

由于篇幅有限,我会将有关8086的资料放在空间里:http://home.fishc.com/?106081
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-28 15:34:58 | 显示全部楼层
很不错的资源,已经把你的空间收藏了,等把汇编学完了再来看呵呵
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-30 14:46:56 | 显示全部楼层
感谢分享,继续加油
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-7-2 16:33:36 | 显示全部楼层
看看老帖,学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-29 09:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表