实验报告十二
(一) 实验名称
键盘输入输出处理
(二)学生姓名:林榆耿 学号:08380076 班级:计科 A 班
实验时间:2009.12.24
(三) 实验目的
学习使用 DOS 功能调用和 BIOS 中断编写键盘处理程序
(四) 实验环境和器材
实验环境:win7 masm for windows 编译器
调试工具:CV
(五)实验内容:
一:要求:编写汇编语言程序,使用 DOS 中断接收键盘输入,每次以不回显的方式接
收一个字符,将其以十六进制字符串的形式显示。例如,键盘输入“1”时,屏幕输出
“30”。当接收到 ESC 键时,程序结束。
算法描述:本程序分为二个部分
主程序:使用 INT21 的 8 号命令不回显的接收一个字符,ascii 码存在 AL 中,判断
AL=1bh “( ESC”),若相等则结束程序,不等则调用子程序输出。
子程序 2(dispbxh): 把 bx 按十六进制输出,具体见代码注释。
代码如下:
data segment
data ends
code segment
assume cs:code,ds:data
; 按十六进制形式输出一个字
;入口参数 bl,出口参数 bl
;通过 2 号中断输出
dispbxh proc near
mov cl,4
mov ch,2
next: rol bl,cl ;连续循环移位四次交换 BL 的高低四位
mov al,bl
and al,0fh ;把 al 的高四位清零,这样就 al 存放的就是入口时 bl 的高四位,第二
次循环时 al 存放的就是入口时 bl 的低四位
add al,30h
cmp al,3ah
jl outp
add al,07h ;是a~f,要多加7
outp:mov dl,al ;用二号命令输出
cmp dl,0
je next2
mov ah,02h
int 21h
next2 : dec ch