[DOS]DOS功能调用06H 执行控制台I/O
DOS功能调用 06H 执行直接控制台I/O 功能调用: 06H 执行直接控制台I/O DOS版本: 1.0、1.1、2.0、2.1、3.0、3.1、3.2 说明: 此功能调用提供下述两种功能之一:向标准输出设备(一般是显示器)发送字符和从标准输入设备(一般是键盘)接收一个字符。DOS2.0以上版本允许重定向标准输入和输出设备。此重定向程序使用此功能调用对其它设备(如文件)进行读或写。 此功能调用不检查字符是否是Ctrl-Break或Ctrl-Prtsc字符且对这些字符不进行特殊处理。 当此功能调用从键盘接收一字符时,它在显示器上显示该字符。 如果在使用功能调用接收字符时没有有效字符,该功能调用等待,直到一个有效字符(直到操作员按一键),如果不希望程序无限等待,应当先使用功能调用0BH(检查输入设备的状态)来查看是否有一个有效字符。 入口参数: 调用前,需设置寄存器: AH=06H 指出功能调用号。 DL 置为FFH,功能调用从键盘读一字符,若为其他数值,功能调用在控制台屏幕上显示字符。 出口参数: 如从键盘接收一字符(在使用功能调用前将DL设成FFH),则当返回后,设置为: AL= 如果键盘上有一个准备好的字符,零标志被清除且此寄存器将含有该字符。 如无有效字符,零标志将被置位,这种情况下AL为0。 其他要求: 在读一字符时,如从此功能调用返回的值是00H,则该字符是一个扩展ASCII字符(如功能键,ALT键或光标键)。必须再次使用此功能调用以确定该扩展ASCII字符第二个调用返回的是该字符的扩展部分。 参见: 01H 读键盘字符并回显。 07H 直接控制台输入但不回显。 08H 读键盘字符但不回显 0BH 检查输入设备状态。 程序实例: 下面的实例用功能调用06H从键盘接收输入。该程序在屏幕上连续显示一串信息。当按除‘s’之外的任何健时,该程序在屏幕上显示‘......INTERRUPTED......’键入‘s’结束程序。 ; ;DIRECT CONSOLE I/O (0bH) ; code segment public assume cs:code,ds:code org 100h start: jmp begin msg1 db 0dh,0ah db 'Press "s" to stop, any other key to interrupt.' db '$' msg2 db '......INTERRUPTED......','$' begin: mov ax,cs mov ds,ax next: mov dx,offset msg1 mov ah,09h int 21h mov dl,0FFh ;从键盘读字符 mov ah,06h ;直接控制台输入输出 int 21h ;调用DOS jnz keyhit ;如果键被按下,ZF=0 jmp next ;取下一个字符 keyhit: cmp al,'s' ;是要终止吗? je done ;是就终止 mov dx,offset msg2 ;不是就显示msg2 mov ah,09h int 21h jmp next done: mov ax,4c00h int 21h code ends end start