微机原理实验六 从键盘输入数据并显示
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六从键盘输入数据并显示
1要求:
编写程序,将键盘接收到的四位十六进制数转换为等值的二进制数,并显示在屏幕上。若输入的不是0—F间的数字,则显示出错
信息,并要求重新输入。
2目的:
掌握接收键盘数据的方法,并了解将键盘数据显示时须转换为ASCII码的原理。
实验程序
CRLF MACRO
MOV AH,02H
MOV DL,0DH
INT 21H
MOV AH,02H
MOV DL,0AH
INT 21H
ENDM
DATA SEGMENT
MARK DB?
MESS DB'please input the number(H),press inter,ture into number(B).press space end.',0DH,0AH,'$'
ERROR DB 0DH,0AH, 'input error',0DH,0AH,'$' DATA ENDS
STACK SEGMENT
STA DW32 DUP(?)
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,MESS
INT 21H ;显示提示输入的信息
CALL GETNUM ;接收键入数值送DX
CMP MARK,01H
JE HEAD
MOV CX,0010H ;16位
MOV BX,DX
TTT: ROL BX,1 ;循环左移1位
MOV DL,BL
AND DL,01H ;屏蔽掉高7位
ADD DL,30H
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 ;输入为空格,则退回DOS
JE FINI
CMP AL,30H
JB KKK
SUB AL,30H
CMP AL,0AH
JB GETS
CMP AL,11H
JB KKK
SUB AL,07H
CMP AL,0FH
JBE GETS
CMP AL,2AH
JB KKK
CMP AL,2FH
JA KKK
SUB AL,20H
GETS: MOV CL,04
SHL DX,CL
XOR AH,AH
ADD DX,AX
JMP GGG
KKK: MOV AH,09H
MOV DX,OFFSET ERROR
INT 21H
MOV MARK,01H PPP: PUSH DX
CRLF
POP DX
POP CX
RET GETNUM ENDP CODE ENDS
END START