原理
通过int 16h中断,设置ah为0即可。
得到ah为键盘缓冲区一个字符的扫描码,al为其ASCII码
assume cs:code
code segment
start:
mov cx,0FFH
mov dh,0
mov dl,1
s:
mov ah,0
int 16h
mov ah,1
cmp al,'r'
je red
cmp al,'g'
je green
cmp al,'b'
je blue
loop s
red:
mov dl,100B
call show
ret
green:
mov dl,010B
call show
ret
blue:
mov dl,001B
call show
ret
;-------------------------
show:
push cx
mov ax,0b800h
mov es,ax
mov cx,2000
mov bx,0
s0:
mov byte ptr es:[bx+1],dl
add bx,2
loop s0
pop cx
ret
delay:
push cx
mov cx,02FFFH
delays0:
loop delays0
pop cx
ret
back:
mov ax,4c00h
int 21h
code ends
end start