- bàn phím 101 phím cụa IBM PC/AT
8.2.4: Thụ túc caơp nhaơt keyboard buffer ( theđm moơt phím vào hàng đợi )
Insert-key proc near ; Input ; AH : Scan code ; AL : ASCII code ; Output ; AX = 0FF00h --> buffer đã đaăy push bx push si push ds mov bx,040h mov ds,bx
mov bx,word ptr ds:[01Ch] ; BX = đieơm cuôi hàng đợi mov si,bx
add bx,2 ;
cmp bx,03Eh ; Cuôi buffer hay chưa jb IK-1
mov bx,1Eh ; Nêu roăi thì quay trở veă đaău buffer IK-1:
cmp bx,word ptr ds:[01Ah] ; Kieơm tra xem đã đaăy buffer chưa jne IK-2
jmp IK-3 IK-2:
mov word ptr ds:[si],ax ; Đaịt scan-code và Ascii-code vào ; hàng đợi
mov word ptr ds:[01Ch],bx ; Caơp nhaơt đieơm cuôi IK-3: pop ds pop si pop bx ret Insert-key endp 8.2.5Thụ túc đĩc moơt phím từ keyboard buffer
Read-key proc near ; Input
; AH = 0 --> nêu chưa có phím trong hàng đợi thì chờ
; AH = 1 --> nêu chưa có phím trong hàng đợi thì AX = 0FF00h ; Output ; AH : Scan code ; AL : ASCII code push bx push ds mov bx,040h mov ds,bx RK-1:
mov bx,word ptr ds:[01Ah] ; BX = đieơm đaău hàng đợi cmp bx,word ptr ds:[01Ch] ; Có baỉng đieơm cuôi khođng ? jne RK-2 ; Nêu baỉng --> chưa có phím trong
; hàng đợi . or ah,ah
jz RK-1 ; AH = 0 --> chờ
mov ax,0FF00h ; AH # 0 --> cho AX=0FF00h roăi kêt thúc jmp RK-4
RK-2:
mov ax,word ptr ds:[bx] ; Đaịt scan-code và Ascii-code vào AX add bx,2
cmp bx,03Eh
jne RK-3 ; Cuôi buffer hay chưa ?
mov bx,01Eh ; Nêu roăi thì quay trở veă đaău buffer RK-3:
mov word ptr ds:[01Ah],bx ; Caơp nhaơt đieơm đaău . RK-4:
pop ds pop bx ret
Read-key endp