从键盘输入数据并显示实验
- 格式:docx
- 大小:18.40 KB
- 文档页数:3
实验二 从键盘输入数据并显示实验
一、实验目的
1.掌握键盘输入字符的方法和十六进制数字字符的ASCII码转换为二进制数的原理。
2.掌握子程序定义和调用的方法。
3.掌握循环移位指令的用法和无符号数比较大小的方法。
二、实验内容
1. 从键盘上输入4位十六进制数,将其转换为16位二进制数并在显示器上显示出来。要求输入的数字字符串以回车键结束。若按下的键不是十六进制数字字符,则显示出错信息。
2. 从键盘上输入4位十六进制数(如果输入的数字超过4个,则以最后输入的4个为准),将其转换为16位二进制数并在显示器上显示出来。要求输入的数字字符串以回车键结束。若按下的键不是十六进制数字字符,则显示出错信息。
3.应该Masm for Windows 集成实验环境调试运行并讲解程序,并用屏幕录像软件录制全过程,全程开启摄像头,以MP4G格式上传,完成实验报告的书写。
三、实验程序和结果
CRLF MACRO
MOV AH,02H ;显示器输出
MOV DL,0DH ;换行
INT 21H
MOV AH,02H
MOV DL,0AH ;回车
INT 21H
ENDM
DATA SEGMENT ;输入
MARK DB ?
MESSAGE DB 'PLEASE INPUT THE
WORDS!',0DH,0AH,'INPUT:$' ; 输入字符串提示
ERROR DB 0DH,0AH, 'NO MATCH!',0DH,0AH,'$' ;输入错误提示
DATA ENDS
STACK SEGMENT
STA DW 32 DUP(?) ;定义32个空字
TOP DW ?
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK ;表明程序代码段与段地址之间的关系
START: MOV AX,DATA
MOV DS,AX ;将段地址送入段地址寄存器
MOV ES,AX
MOV SP,TOP
HEAD: CRLF ;输出换行回车
MOV MARK,0 MOV AH,09H ;字符串显示
LEA DX,MESSAGE
INT 21H ;显示提示输入的信息
CALL GETNUM ;接收键入数值送DX
CMP MARK,01H
JE HEAD ;输入错误,跳转到HEAD重新输入
MOV CX,0010H ;16位 ;循环次数为16
MOV BX,DX ;把DX的数据放入BX中,显示777
TTT: ROL BX,1 ;循环左移1位
MOV DL,BL
AND DL,01H ;屏蔽掉高7位
ADD DL,30H ;将二进制转码为ASCII码输出
MOV AH,02H ;字符输出
INT 21H ;显示二进制位对应的ASCII字符
LOOP TTT
JMP HEAD
FINI: MOV AX,4C00H ;终止当前程序,返回调用程序
INT 21H ;返回DOS
GETNUM PROC NEAR ;子程序,接收键入数值送DX
PUSH CX
XOR DX,DX ;清零
GGG: MOV AH,01H
INT 21H ;键盘输入
CMP AL,0DH
JE PPP ;输入为回车,则进行转换
CMP AL,20H
JE FINI ;输入为空格,则退回DOS
CMP AL,30H
JB KKK ;输入有误,显示ERROR
SUB AL,30H
CMP AL,0AH ;判断是否为0~9
JB GETS
CMP AL,11H
JB KKK
SUB AL,07H
CMP AL,0FH ;判断是否为A~Z
JBE GETS
CMP AL,2AH
JB KKK
CMP AL,2FH
JA KKK
SUB AL,20H ;判断是否 为a~z
GETS: MOV CL,04 ;转换
SHL DX,CL ;左移四位,第四位0补齐 XOR AH,AH ;AH清零
ADD DX,AX ;把输入的数据放入DX中
JMP GGG
KKK: MOV AH,09H ;显示字符串
MOV DX,OFFSET ERROR
INT 21H
MOV MARK,01H ;将MARK置1
PPP: PUSH DX ;压入堆栈
CRLF ;回车换行
POP DX ;弹出堆栈
POP CX
RET
GETNUM ENDP
CODE ENDS
END START
(页面不足请附页)
四、实验总结和体会
本实验做键盘输入并屏幕显示将十六进制转换成等值的二进制数,我们用DOS功能,利用软件中断指令INT 21H实现了键盘的输入显示器的输出以及返回到DOS的命令,并通过判断将正确输入的4位十六进制数转换为二进制数显示到屏幕上,编写程序时我们要注意一点,DOS环境下是不允许汉字输入的,通过本次实验的学习掌握并了解了接收键盘数据的方法,接收到的数据以ASCII码进行放,并了解了将键盘数据显示时需要转换为ASCII码的原理。