微机实验3.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微机实验3

实验二 十进制到十六进制转换 一、实验目的 1、了解微机系统中的数制与代码表示方法; 2、掌握计算机中使用的各种代码转换方法; 3、掌握实现分支、循环的指令及其程序的编写方法; 二、实验内容及结果分析 1、设一串字母的ASCII存于30H起始的单元中,设计程序判断字母是否为大写字母,是则将大写字母的ASCII字符转换成小写字母的ASCII字符,为小写则不转换。 原理框图 程序如下: ORG?0000H ??????? LJMP?MAIN? ??????? ORG?0030H MAIN:??MOV?R0,#30H;将用来存储字母ASCII的单元的起始地址存入R0 ??????? MOV?R1,#00H;R1用来标记小写字母的个数 ??? MOV?R2,#05H;从30H开始存有五个字母的ASCII LOOP:?CLR?C ?????? ? MOV?A,@R0 ??? CJNE?A,#40H,NEXT1;将输入字母的ASCII用来和ASCII40H比较,小于等于40H则跳出 ??? SJMP?OUT NEXT1:?JC?OUT ??????? CJNE?A,#5BH,NEXT2;若输入字母的ASCII大于40H,再和5BH比较,小于5BH则进行转换,等于5BH跳出 ??????? SJMP?OUT NEXT2:?JC?JIA ??????? CJNE?A,#60H,NEXT3;若输入字母的ASCII大于5BH,再和60H比较,小于等于60H则跳出 ??? SJMP?OUT NEXT3:?JC?OUT;若输入字母的ASCII大于60H,再和7BH比较,大于等于7BH则跳出 ??? CJNE?A,#7BH,NEXT4 ??? SJMP?OUT NEXT4:?JNC?OUT ??????? INC?R1;若输入字母的ASCII大于60H小于7BH,则R1自加一,完成小写字母的计数 ??????? SJMP?OUT JIA :???ADD?A,#20H;输入字母的ASCII大于40H且小于 5BH则加上20H,完成大写字母的ASCII字符转换成小写字母的ASCII字符 ??????? MOV?@R0,A OUT:???INC?R0 ??????? DJNZ R2,LOOP ???SJMP????$ ???????END 令片内RAM30H~34H存储为30H,43H,5CH,62H,7CH,程序执行后如下图所示 其中R1=1表明输入的ASCII字符中有一个小写字母。 将单字节十六进制数D8H转换为十进制数,存放在30H~33H中。 程序如下: RESULT?EQU?30H ???ORG?0000H ???MOV?A,#0D8H;将0D8H赋值给累加器A ???MOV?B,#64H;除以64H得到百位数 ???DIV?AB;商为百位数 ???MOV?RESULT,A;将百位数结果存入单元30H中 ???MOV?A,B ???MOV?B,#0AH;除以0AH得到十位数和个位数 ???DIV?AB;商为十位数,余数为个位数 ???MOV?RESULT+1,A;将十位数结果存入单元31H中 ???MOV?RESULT+2,B;将个位数结果存入单元32H中 ???SJMP?$ ???END 运行结果如下: 30H~32H空间的内容为:02H,01H,06H,与实际结果一致。 设计程序,将十六进制数614EH转换成ASCII码,使用单步、断点方式调试程序,查看结果。 程序如下: VALUE EQU 614EH;准备转换的16进制数 RESULT EQU 30H;转换后的结果存入30H的起始单元中 ORG 0000H MOV DPTR,#VALUE MOV A,DPH;取十六进制数的高八位 SWAP A;将高八位的高四位和低四位进行调换 ANL A,#0FH;清除高四位,保留低四位 ACALL ASCII;调用子程序,得到高八位中高四位的ASCII MOV RESULT,A;结果存入30H中 MOV A,DPH;取十六进制数的高八位 ANL A,#0FH;清除高四位,保留低四位 ACALL ASCII;调用子程序,得到高八位中低四位的ASCII MOV RESULT+1,A;结果存入31H中 MOV A,DPL;取十六进制数的低八位 SWAP A;将低八位的高四位和低四位进行调换 ANL A,#0FH;清除高四位,保留低四位 ACAL

您可能关注的文档

文档评论(0)

shenlan118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档