DOS系统功能调用详解与INT 21H常用功能

需积分: 27 0 下载量 154 浏览量 更新于2024-07-13 收藏 966KB PPT 举报
"这篇资料主要介绍了DOS系统功能调用的使用方法,以及与之相关的汇编语言编程概念,如过程定义伪指令、宏命令伪指令,并通过实例进行了详细解释。" 在DOS系统中,调用系统功能通常通过设置AH寄存器的功能号,并根据特定功能设置其他入口参数,然后执行INT 21H中断指令来实现。系统功能调用允许程序与DOS操作系统进行交互,执行诸如读写文件、显示字符、处理键盘输入等任务。例如,功能号09H用于显示字符串,需要先将功能号9H装入AH寄存器,然后设置DX寄存器指向要显示的字符串首地址,最后执行INT 21H中断。 在汇编语言编程中,过程(Procedure)是代码的重复使用单元,可以通过CALL指令调用。过程分为近过程(NEAR)和远过程(FAR)。近过程适用于在同一段内的调用,而远过程则用于跨越段的调用。过程定义伪指令(PROC和ENDP)用于声明和结束过程。在过程中,RET指令用于返回到调用点。 宏命令伪指令则是另一种提高代码复用性的工具。它允许我们将一段代码定义为宏,然后在需要的地方用宏命令名替代这段代码。宏定义使用MACRO和ENDM伪指令包围,宏调用时将实际参数传递给宏,汇编器会自动将宏展开为实际的代码。宏定义可以包含形参,实参在调用时替换形参,多余的实参会被忽略。 例如,定义了一个名为Display的宏,用于显示字符串。在程序中,我们可以调用DISPLAYERROR_MESSAGE和DISPLAYEXIT_MESSAGE,汇编器会将这两个宏调用替换为相应的INT 21H显示字符串的代码。 此外,还展示了如何定义一个求两数之和的宏DADD,它接受三个参数X、Y和Z,分别代表两个加数和结果的存储位置。在调用DADD时,我们可以提供实际的数值,如DADDDATA1,DATA2,SUM,汇编器会将这些值替换到宏定义中的相应位置。 总结来说,DOS系统功能调用是与操作系统交互的基础,而过程和宏命令是汇编语言编程中提高代码可读性和复用性的关键工具。理解并熟练运用这些概念对于编写低级程序至关重要。
2020-05-13 上传
错误类型 错误值 错误信息 NET_DVR_NOERROR 0 没有错误。 NET_DVR_PASSWORD_ERROR 1 用户名密码错误。注册时输入的用户名或者密码错误。 NET_DVR_NOENOUGHPRI 2 权限不足。一般和通道相关,例如有预览通道1权限,无预览通道2权限,即有预览权限但不完全,预览通道2返回此错误。 NET_DVR_NOINIT 3 SDK未初始化。 NET_DVR_CHANNEL_ERROR 4 通道号错误。设备没有对应的通道号。 NET_DVR_OVER_MAXLINK 5 设备总的连接数超过最大。 NET_DVR_VERSIONNOMATCH 6 版本不匹配。SDK和设备的版本不匹配。 NET_DVR_NETWORK_FAIL_CONNECT 7 连接设备失败。设备不在线或网络原因引起的连接超时等。 NET_DVR_NETWORK_SEND_ERROR 8 向设备发送失败。 NET_DVR_NETWORK_RECV_ERROR 9 从设备接收数据失败。 NET_DVR_NETWORK_RECV_TIMEOUT 10 从设备接收数据超时。 NET_DVR_NETWORK_ERRORDATA 11 传送的数据有误。发送给设备或者从设备接收到的数据错误,如远程参数配置时输入设备不支持的值。 NET_DVR_ORDER_ERROR 12 调用次序错误。 NET_DVR_OPERNOPERMIT 13 无此权限。用户对某个功能模块的权限,例如无预览权限用户预览返回此错误。 NET_DVR_COMMANDTIMEOUT 14 设备命令执行超时。 NET_DVR_ERRORSERIALPORT 15 串口号错误。指定的设备串口号不存在。 NET_DVR_ERRORALARMPORT 16 报警端口错误。指定的设备报警输入或者输出端口不存在。 NET_DVR_PARAMETER_ERROR 17 参数错误。SDK接口中给入的输入或输出参数为空,或者参数格式或值不符合要求。 NET_DVR_CHAN_EXCEPTION 18 设备通道处于错误状态 NET_DVR_NODISK 19 设备无硬盘。当设备无硬盘时,对设备的录像文件、硬盘配置等操作失败。 NET_DVR_ERRORDISKNUM 20 硬盘号错误。当对设备进行硬盘管理操作时,指定的硬盘号不存在时返回该错误。 NET_DVR_DISK_FULL 21 设备硬盘满。