自学计算机中断知识--INT 21
2011-08-08 15:37
453 查看
INT 21是计算机中断的一种,不同的AH值表示不同的中断功能。
举个例子,如果在DOS下面,键入两行代码:
它代表的意思是在屏幕上显示输出。
这里有一份table,收纳了全部的INT 21中断类型。
[align=center]表:DOS系统功能调INT 21H[/align]
(P.S.因为直接复制粘贴失败,而我又是个HTML的菜鸟,只好把别人表格的源码修修改改COPY过来了。)
概念补充:
中断向量表是放在MEMORY里面的,位置是:00:00。这个地方开始的每4个BYTE,代表一个INT。
举个例子,如果在DOS下面,键入两行代码:
MOV AH, 02H INT 21H
它代表的意思是在屏幕上显示输出。
这里有一份table,收纳了全部的INT 21中断类型。
[align=center]表:DOS系统功能调INT 21H[/align]
[align=center]AH[/align] | [align=center]功能[/align] | [align=center]调用参数[/align] | [align=center]返回参数[/align] |
[align=left]00[/align] | [align=left]程序终止(同INT 20H)[/align] | [align=left]CS=程序段前缀[/align] | [align=left] [/align] |
[align=left]01[/align] | [align=left]键盘输入并回显[/align] | [align=left] [/align] | [align=left]AL=输入字符[/align] |
[align=left]02[/align] | [align=left]显示输出[/align] | [align=left]DL=输出字符[/align] | [align=left] [/align] |
[align=left]03[/align] | [align=left]异步通迅输入[/align] | [align=left] [/align] | [align=left]AL=输入数据[/align] |
[align=left]04[/align] | [align=left]异步通迅输出[/align] | [align=left]DL=输出数据[/align] | [align=left] [/align] |
[align=left]05[/align] | [align=left]打印机输出[/align] | [align=left]DL=输出字符[/align] | [align=left] [/align] |
[align=left]06[/align] | [align=left]直接控制台I/O[/align] | [align=left]DL=FF(输入) DL=字符(输出)[/align] | [align=left]AL=输入字符[/align] |
[align=left]07[/align] | [align=left]键盘输入(无回显)[/align] | [align=left] [/align] | [align=left]AL=输入字符[/align] |
[align=left]08[/align] | [align=left]键盘输入(无回显) 检测Ctrl-Break[/align] | [align=left] [/align] | [align=left]AL=输入字符[/align] |
[align=left]09[/align] | [align=left]显示字符串[/align] | [align=left]DS:DX=串地址 '$'结束字符串[/align] | [align=left] [/align] |
[align=left]0A[/align] | [align=left]键盘输入到缓冲区[/align] | [align=left]DS:DX=缓冲区首地址 (DS:DX)=缓冲区最大字符数[/align] | [align=left](DS:DX+1)=实际输入的字符数[/align] |
[align=left]0B[/align] | [align=left]检验键盘状态[/align] | [align=left] [/align] | [align=left]AL=00 有输入 AL=FF 无输入[/align] |
[align=left]0C[/align] | [align=left]清除输入缓冲区并 请求指定的输入功能[/align] | [align=left]AL=输入功能号 (1,6,7,8,A)[/align] | [align=left] [/align] |
[align=left]0D[/align] | [align=left]磁盘复位[/align] | [align=left] [/align] | [align=left]清除文件缓冲区[/align] |
[align=left]0E[/align] | [align=left]指定当前缺省的磁盘驱动器[/align] | [align=left]DL=驱动器号 0=A,1=B,...[/align] | [align=left]AL=驱动器数[/align] |
[align=left]0F[/align] | [align=left]打开文件[/align] | [align=left]DS:DX=FCB首地址[/align] | [align=left]AL=00 文件找到 AL=FF 文件未找到[/align] |
[align=left]10[/align] | [align=left]关闭文件[/align] | [align=left]DS:DX=FCB首地址[/align] | [align=left]AL=00 目录修改成功 AL=FF 目录中未找到文件[/align] |
[align=left]11[/align] | [align=left]查找第一个目录项[/align] | [align=left]DS:DX=FCB首地址[/align] | [align=left]AL=00 找到 AL=FF 未找到[/align] |
[align=left]12[/align] | [align=left]查找下一个目录项[/align] | [align=left]DS:DX=FCB首地址 (文件中带有*或?)[/align] | [align=left]AL=00 找到 AL=FF 未找到[/align] |
[align=left]13[/align] | [align=left]删除文件[/align] | [align=left]DS:DX=FCB首地址[/align] | [align=left]AL=00 删除成功 AL=FF 未找到[/align] |
[align=left]14[/align] | [align=left]顺序读[/align] | [align=left]DS:DX=FCB首地址[/align] | [align=left]AL=00 读成功 =01 文件结束,记录中无数据 =02 DTA空间不够 =03 文件结束,记录不完整[/align] |
[align=left]15[/align] | [align=left]顺序写[/align] | [align=left]DS:DX=FCB首地址[/align] | [align=left]AL=00 写成功 =01 盘满 =02 DTA空间不够[/align] |
[align=left]16[/align] | [align=left]建文件[/align] | [align=left]DS:DX=FCB首地址[/align] | [align=left]AL=00 建立成功 =FF 无磁盘空间[/align] |
[align=left]17[/align] | [align=left]文件改名[/align] | [align=left]DS:DX=FCB首地址 (DS:DX+1)=旧文件名 (DS:DX+17)=新文件名[/align] | [align=left]AL=00 成功 AL=FF 未成功[/align] |
[align=left]19[/align] | [align=left]取当前缺省磁盘驱动器[/align] | [align=left] [/align] | [align=left]AL=缺省的驱动器号 0=A,1=B,2=C,...[/align] |
[align=left]1A[/align] | [align=left]置DTA地址[/align] | [align=left]DS:DX=DTA地址[/align] | [align=left] [/align] |
[align=left]1B[/align] | [align=left]取缺省驱动器FAT信息[/align] | [align=left] [/align] | [align=left]AL=每簇的扇区数 DS:BX=FAT标识字节 CX=物理扇区大小 DX=缺省驱动器的簇数[/align] |
[align=left]1C[/align] | [align=left]取任一驱动器FAT信息[/align] | [align=left]DL=驱动器号[/align] | [align=left]同上[/align] |
[align=left]21[/align] | [align=left]随机读[/align] | [align=left]DS:DX=FCB首地址[/align] | [align=left]AL=00 读成功 =01 文件结束 =02 缓冲区溢出 =03 缓冲区不满[/align] |
[align=left]22[/align] | [align=left]随机写[/align] | [align=left]DS:DX=FCB首地址[/align] | [align=left]AL=00 写成功 =01 盘满 =02 缓冲区溢出[/align] |
[align=left]23[/align] | [align=left]测定文件大小[/align] | [align=left]DS:DX=FCB首地址[/align] | [align=left]AL=00 成功(文件长度填入FCB) AL=FF 未找到[/align] |
[align=left]24[/align] | [align=left]设置随机记录号[/align] | [align=left]DS:DX=FCB首地址[/align] | [align=left] [/align] |
[align=left]25[/align] | [align=left]设置中断向量[/align] | [align=left]DS:DX=中断向量 AL=中断类型号[/align] | [align=left] [/align] |
[align=left]26[/align] | [align=left]建立程序段前缀[/align] | [align=left]DX=新的程序段前缀[/align] | [align=left] [/align] |
[align=left]27[/align] | [align=left]随机分块读[/align] | [align=left]DS:DX=FCB首地址 CX=记录数[/align] | [align=left]AL=00 读成功 =01 文件结束 =02 缓冲区太小,传输结束 =03 缓冲区不满[/align] |
[align=left]28[/align] | [align=left]随机分块写[/align] | [align=left]DS:DX=FCB首地址 CX=记录数[/align] | [align=left]AL=00 写成功 =01 盘满 =02 缓冲区溢出[/align] |
[align=left]29[/align] | [align=left]分析文件名[/align] | [align=left]ES:DI=FCB首地址 DS:SI=ASCIIZ串 AL=控制分析标志[/align] | [align=left]AL=00 标准文件 =01 多义文件 =02 非法盘符[/align] |
[align=left]2A[/align] | [align=left]取日期[/align] | [align=left] [/align] | [align=left]CX=年 DH:DL=月:日(二进制)[/align] |
[align=left]2B[/align] | [align=left]设置日期[/align] | [align=left]CX:DH:DL=年:月:日[/align] | [align=left]AL=00 成功 =FF 无效[/align] |
[align=left]2C[/align] | [align=left]取时间[/align] | [align=left] [/align] | [align=left]CH:CL=时:分 DH:DL=秒:1/100秒[/align] |
[align=left]2D[/align] | [align=left]设置时间[/align] | [align=left]CH:CL=时:分 DH:DL=秒:1/100秒[/align] | [align=left]AL=00 成功 =FF 无效[/align] |
[align=left]2E[/align] | [align=left]置磁盘自动读写标志[/align] | [align=left]AL=00 关闭标志 AL=01 打开标志[/align] | [align=left] [/align] |
[align=left]2F[/align] | [align=left]取磁盘缓冲区的首址[/align] | [align=left] [/align] | [align=left]ES:BX=缓冲区首址[/align] |
概念补充:
中断向量表是放在MEMORY里面的,位置是:00:00。这个地方开始的每4个BYTE,代表一个INT。
相关文章推荐
- 自学计算机中断知识--INT 21
- 自学计算机中断--INT 09 & INT 16
- 汇编中断知识之INT 1CH
- 汇编中断知识之INT 1CH
- 8086汇编语言自学经验分享 在使用debug跟踪程序时,遇到Int 21使用P命令
- 定义一个不受计算机字长限制的整数类INT,要求INT与INT以及INT与C++基本数据类型int之间能进行+、-、×、÷和=运算,并且能通过cout输出INT类型的值。(持续添加)
- ROS知识(21)----ROS C++代码格式化
- java知识:int与Integer区别
- 计算机网络基础知识总结
- 知识储备_计算机操作系统:进程管理
- 一个INT 10H中断的小例子
- 计算机基础知识学习(网络必备)强烈推荐!!!
- 程序员轶事趣闻:给老婆普及计算机知识
- [综合面试] 牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结
- 计算机操作系统知识--关于同步互斥的思考1
- 【转载】计算机网络基础知识
- 计算机网络笔记之传输层知识总结
- HTML基础知识自学教程
- 计算机基础知识(面试)
- 语言小知识-处理数据时 Byte[] 尽量转换为 int[] 防止数字大小越界,变为负数