DOS系统功能调用表(INT21H)收藏DOS功能调用作者:来源:互联网AH功能调用参数返回参数00程序终止(同INT20H)CS=程序段前缀01键盘输入并回显AL=输入字符02显示输出DL=输出字符03异步通迅输入AL=输入数据04异步通迅输出DL=输出数据05打印机输出DL=输出字符06直接控制台I/ODL=FF(输入)DL=字符(输出)AL=输入字符07键盘输入(无回显)AL=输入字符08键盘输入(无回显)检测Ctrl-BreakAL=输入字符09显示字符串DS:DX=串地址'$'结束字符串0A键盘输入到缓冲区DS:DX=缓冲区首地址(DS:DX)=缓冲区最大字符数(DS:DX+1)=实际输入的字符数0B检验键盘状态AL=00有输入AL=FF无输入0C清除输入缓冲区并请求指定的输入功能AL=输入功能号(1,6,7,8,A)0D磁盘复位清除文件缓冲区0E指定当前缺省的磁盘驱动器DL=驱动器号0=A,1=B,...AL=驱动器数0F打开文件DS:DX=FCB首地址AL=00文件找到AL=FF文件未找到10关闭文件DS:DX=FCB首地址AL=00目录修改成功AL=FF目录中未找到文件11查找第一个目录项DS:DX=FCB首地址AL=00找到AL=FF未找到12查找下一个目录项DS:DX=FCB首地址(文件中带有*或?)AL=00找到AL=FF未找到13删除文件DS:DX=FCB首地址AL=00删除成功AL=FF未找到14顺序读DS:DX=FCB首地址AL=00读成功=01文件结束,记录中无数据=02DTA空间不够=03文件结束,记录不完整15顺序写DS:DX=FCB首地址AL=00写成功=01盘满=02DTA空间不够16建文件DS:DX=FCB首地址AL=00建立成功=FF无磁盘空间17文件改名DS:DX=FCB首地址(DS:DX+1)=旧文件名(DS:DX+17)=新文件名AL=00成功AL=FF未成功19取当前缺省磁盘驱动器AL=缺省的驱动器号0=A,1=B,2=C,...1A置DTA地址DS:DX=DTA地址1B取缺省驱动器FAT信息AL=每簇的扇区数DS:BX=FAT标识字节CX=物理扇区大小DX=缺省驱动器的簇数1C取任一驱动器FAT信息DL=驱动器号同上21随机读DS:DX=FCB首地址AL=00读成功=01文件结束=02缓冲区溢出=03缓冲区不满22随机写DS:DX=FCB首地址AL=00写成功=01盘满=02缓冲区溢出23测定文件大小DS:DX=FCB首地址AL=00成功(文件长度填入FCB)AL=FF未找到24设置随机记录号DS:DX=FCB首地址25设置中断向量DS:DX=中断向量AL=中断类型号26建立程序段前缀DX=新的程序段前缀27随机分块读DS:DX=FCB首地址CX=记录数AL=00读成功=01文件结束=02缓冲区太小,传输结束=03缓冲区不满28随机分块写DS:DX=FCB首地址CX=记录数AL=00写成功=01盘满=02缓冲区溢出29分析文件名ES:DI=FCB首地址DS:SI=ASCIIZ串AL=控制分析标志AL=00标准文件=01多义文件=02非法盘符2A取日期CX=年DH:DL=月:日(二进制)2B设置日期CX:DH:DL=年:月:日AL=00成功=FF无效2C取时间CH:CL=时:分DH:DL=秒:1/100秒2D设置时间CH:CL=时:分DH:DL=秒:1/100秒AL=00成功=FF无效2E置磁盘自动读写标志AL=00关闭标志AL=01打开标志2F取磁盘缓冲区的首址ES:BX=缓冲区首址30取DOS版本号AH=发行号,AL=版本31结束并驻留AL=返回码DX=驻留区大小33Ctrl-Break检测AL=00取状态=01置状态(DL)DL=00关闭检测=01打开检测DL=00关闭Ctrl-Break检测=01打开Ctrl-Break检测35取中断向量AL=中断类型ES:BX=中断向量36取空闲磁盘空间DL=驱动器号0=缺省,1=A,2=B,...成功:AX=每簇扇区数BX=有效簇数CX=每扇区字节数DX=总簇数失败:AX=FFFF38置/取国家信息DS:DX=信息区首地址BX=国家码(国际电话前缀码)AX=错误码39建立子目录(MKDIR)DS:DX=ASCIIZ串地址AX=错误码3A删除子目录(RMDIR)DS:DX=ASCIIZ串地址AX=错误码3B改变当前目录(CHDIR)DS:DX=ASCIIZ串地址AX=错误码3C建立文件DS:DX=ASCIIZ串地址CX=文件属性成功:AX=文件代号错误:AX=错误码3D打开文件DS:DX=ASCIIZ串地址AL=0读=1写=3读/写成功:AX=文件代号错误:AX=错误码3E关闭文件BX=文件代号失败:AX=错误码3F读文件或设备DS:DX=数据缓冲区地址BX=文件代号CX=读取的字节数读成功:AX=实际读入的字节数AX=0已到文件尾读出错:AX=错误码40写文件或设备DS:DX=数据缓冲区地址BX=文件代号CX=写入的字节数写成功:AX=实际写入的字节数写出错:AX=错误码41删除文件DS:DX=ASCIIZ串地址成功:AX=00出错:AX=错误码(2,5)42移动文件指针BX=文件代号CX:DX=位移量AL=移动方式(0:从文件头绝对位移,1:从当前位置相对移动,2:从文件尾绝对位移)成功:DX:AX=新文件指针位置出错:AX=错误码43置/取文件属性DS:DX=ASCIIZ串地址AL=0取文件属性AL=1置文件属性CX=文件属性成功:CX=文件属性失败:CX=错误码44设备文件I/O控制BX=文件代号AL=0取状态=1置状态DX=2读数据=3写数据=6取输入状态=7取输出状态DX=设备信息45复制文件代号BX=文件代号1成功:AX=文件代号2失败:AX=错误码46人工复制文件代号BX=文件代号1CX=文件代号2失败:AX=错误码47取当前目录路径名DL=驱动器号DS:SI=ASCIIZ串地址(DS:SI)=ASCIIZ串失败:AX=出错码48分配内存空间BX=申请内存容量成功:AX=分配内存首地失败:BX=最大可用内存49释放内容空间ES=内存起始段地址失败:AX=错误码4A调整已分配的存储块ES=原内存起始地址BX=再申请的容量失败:BX=最大可用空间AX=错误码4B装配/执行程序DS:DX=ASCIIZ串地址ES:BX=参数区首地址AL=0装入执行AL=3装入不执行失败:AX=错误码4C带返回码结束AL=返回码4D取返回代码AX=返回代码4E查找第一个匹配文件DS:DX=ASCIIZ串地址CX=属性AX=出错代码(02,18)4F查找下一个匹配文件DS:DX=ASCIIZ串地址(文件名中带有?或*)AX=出错代码(18)54取盘自动读写标志AL=当前标志值56文件改名DS:DX=ASCIIZ串(旧)ES:DI=ASCIIZ串(新)AX=出错码(03,05,17)57置/取文件日期和时间BX=文件代号AL=0读取AL=1设置(DX:CX)DX:CX=日期和时间失败:AX=错误码58取/置分配策略码AL=0取码AL=1置码(BX)成功:AX=策略码失败:AX=错误码59取扩充错误码AX=扩充错误码BH=错误类型BL=建议的操作CH=错误场所5A建立临时文件CX=文件属性DS:DX=ASCIIZ串地址成功:AX=文件代号失败:AX=错误码5B建立新文件CX=文件属性DS:DX=ASCIIZ串地址成功:AX=文件代号失败:AX=错误码5C控制文件存取AL=00封锁=01开启BX=文件代号CX:DX=文件位移SI:DI=文件长度失败:AX=错误码62取程序段前缀BX=PSP地址#5楼得分:0回复于:2010-04-2609:12:28BUF2DB128,?,128DUP(?)又是什么意思,怎么用的?等于BUF2DB128db?db128DUP(?)对我有用[0]丢个板砖[0]引用举报管理TOP精华推荐:[幽默机智问答]汇编系列,给初学者qiuyatao(qiuyatao)等级:#6楼得分:10回复于:2010-04-2612:34:06引用3楼mrleo3013的回复:BUF2DB128,?,128DUP(?)又是什么意思,怎么用的?#5正解,自我认为是在用于做字符输入缓冲区需要有一个字节存缓冲区大小第二个字节放输入的字符数目剩下的128才是供控制台输入的缓冲区详情见INT21H的AH=10对我有用[0]丢个板砖[0]引用举报管理TOPmrleo3013(mrleo3013)等级:#7楼得分:0回复于:2010-05-0500:05:29引用3楼mrleo3013的回复:BUF2DB128,?,128DUP(?)又是什么意思,怎么用的?找到答案了:(8)、功能0AH功能描述:从标准输入设备上读入一个字节字符串,遇到“回车键”结束输入(输入的字符在标准的输出设备上有回显)。如果该输入操作被重定向,那么,将无法判断文件是否已到文件尾入口参数:AH=0AHDS:DX=存放输入字符的起始地址接受输入字符串缓冲区的定义说明:1、第一个字节为缓冲区的最大容量,可认为是入口参数;2、第二个字节为实际输入的字符数(不包括回车键),可看作出口参数;3、从第三个字节开始存放实际输入的字符串;4、字符串以回车键结束,回车符是接受的最后一个字符;5、若输入的字符数超过缓冲区的最大容量,则多出的部分被丢弃,系统并发出响铃,直到输入“回车”键才结束输入。例如:BUFF80,?,80DUP(?);最多接受80个字符出口参数:无