題目及要求如下:
利用中斷型別16h呼叫鍵盤i/o介面程式,並顯示由鍵盤中斷程式送回的掃瞄碼和ascii碼。
顯示的格式如下:
scan ascii char
1e 61 a
30 62 b
2e 63 c
按ctrl+c可以中止程式。ctrl+c對應的ascii碼為03h。
練習將二進位制數轉換為16進製制數並顯示的功能。
提問者: 曐楽僷 - 一級
code segment
assume cs:code,ds:code
start:
push cs
pop ds
push cs
pop es
cldlea dx,string
mov ah,9
int 21h
key:
mov ah,0 ;中斷型別16h呼叫鍵盤i/o介面程式
int 16h
mov bp,ax
call show
lea dx,scan
mov ah,9
int 21h
mov ax,bp
cmp al,03 ;按ctrl+c中止程式
jnz key
exit:
mov ah,4ch
int 21h
;show:
lea di,scan
call chang
lea di,ascii
call chang
mov ax,bp
mov char,al
ret;
chang:
mov cl,4
mov bx,2
next:
rol bp,cl
mov ax,bp
and ax,0fh
or ax,30h
cmp al,'9'
jbe yes
add al,7
yes:
stosb
dec bx
jnz next
ret;
string db 'scan ascii char',0dh,0ah,'$'
scan db '1e',6 dup(' ') ;掃瞄碼
ascii db '61',3 dup(' ') ;ascii碼
char db 'a',0dh,0ah,'$' ;字元
code ends
end start
鍵盤掃瞄碼
當按下一鍵時,產生 mark 碼,產生一次 irq1 中斷。放開鍵時,產生 break 碼,產生一次 irq1 中斷。因此 當按下 a 鍵放開,實際上產生了兩次 irq1 中斷 break 是 mark 碼的 bit7 置 1 得來,也就是 break mark 0x80 這裡只說一般日常應用中的鍵...
鍵盤對應ASCII碼
0x1 滑鼠左鍵 0x2 滑鼠右鍵 0x3 cancel 鍵 0x4 滑鼠中鍵 0x8 backspace 鍵 0x9 tab 鍵 0xc clear 鍵 0xd enter 鍵 0x10 shift 鍵 0x11 ctrl 鍵 0x12 menu 鍵 0x13 pause 鍵 0x14 caps ...
鍵盤常用ASCII碼
鍵盤常用ascii碼 esc鍵 vk escape 27 回車鍵 vk return 13 tab鍵 vk tab 9 caps lock鍵 vk capital 20 shift鍵 vk shift 10 16 ctrl鍵 vk control 17 alt鍵 vk menu 18 空格鍵 vk ...