资源描述:
《微机原理实验六__从键盘输入数据并显示》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验六从键盘输入数据并显示1要求:编写程序,将键盘接收到的四位十六进制数转换为等值的二进制数,并显示在屏幕上。若输入的不是0—F间的数字,则显示出错信息,并要求重新输入。2目的:掌握接收键盘数据的方法,并了解将键盘数据显示时须转换为ASCII码的原理。实验程序CRLFMACROMOVAH,02H;换行MOVDL,0DHINT21HMOVAH,02H;回车MOVDL,0AHINT21HENDM;宏定义结束DATASEGMENT;数据段MARKDB?MESSDB'pleaseinputthenumber(H),pressinter,tureintonumber(B).pre
2、ssspaceend.',0DH,0AH,'$'ERRORDB0DH,0AH,'inputerror',0DH,0AH,'$'DATAENDS;数据段结束STACKSEGMENT;堆栈段STADW5DUP(?)TOPDW?STACKENDS;堆栈段结束CODESEGMENT;代码段ASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVES,AXMOVSP,TOP;SP指向堆栈段段尾HEAD:CRLF;输出换行符MOVMARK,0MOVAH,09H;显示9号功能,即字符串显示LEADX,MESSI
3、NT21H;显示提示输入的信息CALLGETNUM;接收键入数值送DXCMPMARK,01H;比较两者大小JEHEAD;如果相等则跳转MOVCX,0010H;16位MOVBX,DXTTT:ROLBX,1;循环左移1位MOVDL,BLANDDL,01H;屏蔽掉高7位ADDDL,30HMOVAH,02H;字符输出INT21H;显示二进制位对应的ASCII字符LOOPTTT;循环跳转tttJMPHEADFINI:MOVAX,4C00H;最后结束语句INT21H;返回DOSGETNUMPROCNEAR;子程序,接收键入数值送DXPUSHCXXORDX,DXGGG:MOVAH,0
4、1HINT21H;调用中断CMPAL,0DH;输入为回车,则进行转换JEPPPCMPAL,20H;输入为空格,则退回DOSJEFINICMPAL,30HJBKKK;输入有误,显示errorCMPAL,11HJBKKKCMPAL,2AHJBKKKCMPAL,2FHJAKKKSUBAL,20H;使大小写输入一样MOVAH,ALCMPAL,'9'JBESAVE1;大于零,且小于等于9,直接将ASCII码存放于HEX1变量。ANDAL,0DFH;将输入的小写转化为大写。相当于SUBAL,20HCMPAL,'A'JBERROR;小于A,转错误处理。MOVAH,ALSUBAH,'A
5、'-10;以上两行,假设为A-F,则将ASCII形式转为十六进制数。CMPAL,'F'JBESAVE2;大于A,小于F,转保存到HEX2变量处理。SAVE1:MOVHEX1,AHMOVAH,2MOVDL,0DHINT21HMOVDL,0AHINT21HMOVDL,HEX1INT21H;这一小段为显示0-9之间的十进制数的ASCII码,显示完退出程序。JMPGGGSAVE2:PUSHAX;先保存AX的值MOVAH,2MOVDL,0DHINT21HMOVDL,0AHINT21HMOVCX,2;设置循环次数为2次LEASI,CS1;将除数的首地址送出SILEADI,HEX2;
6、将要存入的十进制ASCII码的变量的首地址送入DIPOPAX;恢复AX的值MOVAL,AH;将十六进制数送入AL,作被除数JMPGGGZHW10:XORAH,AHDIVBYTEPTR[SI]ADDAL,30HMOV[DI],ALINCSIINCDIMOVAL,AHLOOPZHW10;这一小段,用于将十六进制数转化为十进制数并将每一位变为ASCII码后存入变量HEX2MOVDX,OFFSETHEX2MOVAH,9INT21H;以ASCII码形式显示A-F转化后的十进制数。KKK:MOVAH,09HMOVDX,OFFSETERROR;把error的偏移地址附给DXINT21
7、HMOVMARK,01HPPP:PUSHDXCRLFPOPDXPOPCXRET;子程序返回GETNUMENDPCODEENDSENDSTART