汇编显示键盘扫描码和ASCII码

汇编的一个程序设计题_百度知道

http://zhidao.baidu.com/question/109823457.html?si=4

百度知道 > 电脑/网络 > 程序设计 > 汇编语言 已解决
汇编的一个程序设计题 悬赏分:5 - 解决时间:2009-8-16 00:55
高才的朋友们,期待你们能够伸出援助之手,在下感激不尽啊!先行谢过了!~/(≥▽≤)/~

题目及要求如下:
利用中断类型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
 cld
 lea 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

 

你可能感兴趣的:(X86_源码)