资源描述:
《数据转换程序实验.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、南京工程学院单片机实验指导书课程名称院(系、部、中心)自动化学院专业自动化(自动化)班级起止日期2010.9.27~2010.9.27指导教师一.实验目的:1.通过实验调试加深对汇编语言的应用,通过对程序的修改加深对汇编语言的用法掌握,一边更好的应用汇编语言来编写程序。2.通过自己用汇编语言来编写程序锻炼自己对汇编语言的理解和应用,并且加深自己对wave6000软件的使用。3.掌握不同进制数及编码相互转换的程序设计方法,加深对数码转换的理解。二.实验内容:程序一:将累加器A拆成二个ASCII码,并存入20H开始的二个单元中。程序:RESULTEQU20HORG0000HLJMPS
2、TARTBINTOHEX:MOVDPTR,#ASCIITABMOVB,A;暂存ASWAPAANLA,#0FH;取高四位MOVCA,@A+DPTR;查ASCII表MOVRESULT,AMOVA,BANLA,#0FHMOVCA,@A+DPTRMOVRESULT+1,ARETSTART:MOVSP,#40HMOVA,#1AHCALLBINTOHEXLJMP$ASCIITAB:DB'0123456789ABCDEF'END程序一使用了查表法,首先定义数字对应的ASCII表,设定为ASCIITAB:DB'0123456789ABCDEF',使用这个表依次设定了0123456789ABCDE
3、F的ASCII码,然后通过查表指令:MOVCA,@A+DPTR,调用查表指令,根据表中所对应的字符,得到所要求的ASCII码。实验二:不用查表方法,将累加器A拆成二个ASCII码,并存入30H开始的二个单元中。第一次编辑的程序:ORG00000HMAIN:MOVA,#0A6HMOVA,R0ANLA,#0FHMOVR1,AMOVB,#09HSUBBA,BJCNEXTMOVA,R1ADDA,#37HMOV31H,ALJMPL1NEXT:MOVA,R1ADDA,#30HMOV31H,AL1:MOVA,R0ANLA,#0F0HSWAPACLRCMOVR1,ASUBBA,BJCNEXT1M
4、OVA,R1ADDA,#37HMOV30H,ALJMPCLOSENEXT1:MOVA,R1ADDA,#30HMOV30H,ACLOSE:LJMP$END点击保存,再点击项目菜单里面编译,编辑成功,没有出错的,然后点击单步执行,执行完语句MOVA,R0后,00H的内容变为A6H,当执行到MOVR1,A语句的时候,01H寄存器的内容变为06,然后继续点击单步执行,执行完语句JCNEXT后,跳转到语句NEXT:MOVA,R1,单步执行完语句MOV31H,A后,31H内容变为36H,继续点击单步执行,当执行完MOVR1,A语句后,01H内容变为0A,执行到语句JCNEXT1后,继续执行后
5、面的语句,而不是跳转到NEXT1,MOV30H,A语句后30H,30H内容变为41H,然后点击单步执行,语句一直在语句CLOSE:LJMP$执行;程序虽然结果如下:可是感觉此程序还是有问题,首先程序开始缺少清C标志位,因而将语句改为:ORG00000HMAIN:MOVA,#0A6HMOVR0,AANLA,#0FHMOVR1,AMOVB,#09HCLRCSUBBA,BJCNEXTMOVA,R1ADDA,#37HMOV31H,ALJMPL1NEXT:MOVA,R1ADDA,#30HMOV31H,AL1:MOVA,R0ANLA,#0F0HSWAPACLRCMOVR1,ASUBBA,BJ
6、CNEXT1MOVA,R1ADDA,#37HMOV30H,ALJMPCLOSENEXT1:MOVA,R1ADDA,#30HMOV30H,ACLOSE:LJMP$END程序结果如下:编辑没有出错,然后依次点击单步执行,存储器内容跟上个程序相同;希望使用CJNE命令来改写程序,考虑到CJNE命令的使用规则:CJNEA,direct,rel;若(A)不等于direct,则PC+3+rel赋值给PC,Cy按规则形成;若(A)等于direct,则PC+3赋值给PC,Cy=0;因而程序改写如下:ORG00000HMAIN:MOVA,#0A6HMOVR0,AANLA,#0FHMOVB,#09H
7、CLRCCJNEA,B,NEXTNEXT:JCFE1ADDA,#37HMOV31H,ALJMPL1FE1:ADDA,#30HMOV31H,AL1:MOVA,R0ANLA,#0F0HSWAPACLRCMOVB,#09HCJNEA,B,NEXT1NEXT1:JCF2ADDA,#37HMOV30H,ALJMPCLOSEF2:ADDA,#30HMOV30H,ACLOSE:LJMP$END使用单步执行按钮,最终得到的结果为: