从键盘输入数据并显示实验

  • 格式: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码的原理。