彙編顯示鍵盤掃瞄碼和ASCII碼

2021-05-21 17:13:27 字數 1346 閱讀 2885

題目及要求如下:

利用中斷型別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 ...