input之 键盘输入子程序 入口参数:ds:bx=存放数据的缓冲区 出口参数:cx=数据个数 Input proc push ax push dx Xor CX. CX ;数据个数清0 inputol: or dx, dx 输入字符清0 inputo2: mov ah, 1 键盘输入一个字符 int 21h 继续: Input之二
;键盘输入子程序 ;入口参数:ds:bx=存放数据的缓冲区 ;出口参数:cx=数据个数 input proc push ax push dx xor cx,cx ;数据个数清0 input01: xor dx,dx ;输入字符清0 input02: mov ah,1 ;键盘输入一个字符 int 21h input之 一 继续:input之二
input.之 input10: cmp al, Odh je input30 是回车,结束整个数据的输入 cmp al/ je input20 是空格和逗号,确认输入了一个数据 cmp al.// je input20 cmp al, 08h je input ;是退格,丢弃本次输入的数据,出错 继续: Input之三
input10: cmp al,0dh je input30 ;是回车,结束整个数据的输入 cmp al,’ ’ je input20 ;是空格和逗号,确认输入了一个数据 cmp al,’ , ’ je input20 cmp al,08h je input17 ;是退格,丢弃本次输入的数据,出错 input之 二 继续:input之三
npu cmp al,/0/ ;有效数字判断(图4.5b) jb input 小于’0′,不是有效数字,出错 cmp al,"f′ ja inputt 大于’f′,不是有效数字 cmp al,"a′ jb inputll sub al. 20h ′a~’f′转换成大写’A′~’F′ jmp input12 inputll: cmp al,/F ja input 字符小于’a′、大于’F′,出错 cmp al,"A′ Jae input12;是’A′~’F’,有效字符 cmp al,"9′ Ja input17;是’0′~’9′,有效字符 继续: input之四
cmp al,’0’ ;有效数字判断(图4.5b) jb input17 ;小于’0’,不是有效数字,出错 cmp al,’f’ ja input17 ;大于’f’,不是有效数字 cmp al,’a’ jb input11 sub al,20h ;’a’~’f’转换成大写’A’~’F’ jmp input12 input11: cmp al,’F’ ja input17 ;字符小于’a’、大于’F’,出错 cmp al,’A’ jae input12 ;是’A’~’F’,有效字符 cmp al,’9’ ja input17 ;是’0’~’9’,有效字符 input之 三 继续:input之四
input之 input12: cmp dl, o 有效字符的处理 jne input13 mov dl. al ;d1=0,输入了一个数据的低位,则dl←a1 Jmp input02;转到字符输入 input13: cmp dh, 0 jne input ;d1≠0,dh≠0输入3位数据,出错 moy dh, dl d1≠0,dh=输入了一个数据的续?m之五 moy dl. al Jmp input02;转到字符输入
input12: cmp dl,0 ;有效字符的处理 jne input13 mov dl,al ;dl=0,输入了一个数据的低位,则dl←al jmp input02 ;转到字符输入 input13: cmp dh,0 jne input17 ;dl≠0,dh≠0输入3位数据,出错 mov dh,dl ;dl≠0,dh=0输入了一个数据的高位 mov dl,al ;dh←dl,dl←al jmp input02 ;转到字符输入 input之 四 继续:input之五