第7章中断调用程序设计 例7.1】 下面给出一个利用键盘ⅣO功能的程序例。用INT16H (AH=0)调用实现键盘输入字符 DATA SEGMENT BUFF DB 100 DUP(?) MESS DB 'NO CHARACTER!, ODH, OAH, 'S' DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA
第7章 中断调用程序设计 【例7.1】 下面给出一个利用键盘I/O功能的程序例。用INT 16H (AH=0)调用实现键盘输入字符。 DATA SEGMENT BUFF DB 100 DUP(?) MESS DB ‘NO CHARACTER!’,0DH,0AH, ‘$’ DATA ENDS CODESEGMENT ASSUME CS:CODE,DS:DATA
第7章中断调用程序设计 START: MOV AX, DATA MOVDS, AX MOVCX, 100 MOVBX, OFFSET BUFF ;内存缓冲区首址 LOPI MOV AH, 1 PUSH MOVCX, 0 MOVDX, O INT IAH ;设置时间计数器值为0
第7章 中断调用程序设计 START: MOV AX,DATA MOVDS,AX MOVCX,100 MOVBX,OFFSETBUFF ;内存缓冲区首址 LOP1: MOV AH,1 PUSH CX MOVCX,0 MOVDX,0 INT 1AH ;设置时间计数器值为0
第7章中断调用程序设计 LOP2 MOV AH, O INT1AH;读时间计数值 CMP DL, 100 NZ LOP2;定时时间未到,等待 MOV AH, 1 INT16H;判有无键入字符 JZ DONE;无键输入,则结束 MOV AH, O INT16H;有键输入,则读出键的ASCI码
第7章 中断调用程序设计 LOP2: MOV AH,0 INT 1AH ;读时间计数值 CMP DL,100 NZ LOP2 ;定时时间未到,等待 MOV AH,1 INT 16H ;判有无键入字符 JZ DONE;无键输入,则结束 MOV AH,0 INT 16H ;有键输入,则读出键的ASCII码
第7章中断调用程序设计 MOV BX,AL;存入内存缓冲区 INC BX POP CX LOOP LOP1;100个未输完 JMP EN DONE: MOV DX, OFFSET MESS MOV AH. 09H INT21H;显示提示信息 EN: MOV AH, 4CH INT 21H CODEENDS END START 返回本节
第7章 中断调用程序设计 MOV BX,AL ;存入内存缓冲区 INC BX POP CX LOOP LOP1 ;100个未输完 JMP EN DONE:MOV DX,OFFSET MESS MOV AH, 09H INT 21H ;显示提示信息 EN: MOV AH,4CH INT 21H CODEENDS END START 返回本节
第7章中断调用程序设计 7.2.3DOS中断调用 AH 功 能 调用参数 迈回参 1从键盘输入一个字符并显示在屏幕上无 〔AL〕=字符码 6读键盘字符 (DL )= OFFH 若有宇符可取八AL)=字符码 ZF=0 若有字符可取,〔AL)=0 ZF= 1 7从键盘输入一个字符不显示 无无 〔AL〕=字符码 8从键盘输入一个字符不显示 〔AL〕=字符码 检测CtH+Brek A输入字符到冲区 DS:BX=缓冲区首址 B读键盘状态 无 〔AL)=0FFH,有键入 〔AL)=00H,无键入 C清除键盘缓裨区, 〔AL)=键盘功能号 并调入一种键盘功能 〔1,6,7,8或A
第7章 中断调用程序设计 7.2.3 DOS中断调用