Thụ túc caơp nhaơt keyboard buffer ( theđm moơt phím vào hàng đợi )

Một phần của tài liệu Giáo trình TASM (Trang 51 - 53)

- 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

Một phần của tài liệu Giáo trình TASM (Trang 51 - 53)