单片机实验二 简单程序设计与调试.docx
单片机实验二简单程序设计与调试实验二简单程序设计与调试一、实验目的与要求本次实验的目的是通过给出的程序流程图,用MCS-51汇编语言编写程序,然后上机调试、执行程序。要求本人动手独立考虑编程序。二、验验设备Dais单片机仿真实验仪一台,计算机一台,导线若干条.三、实验内容1、查找一样数的个数程序设计:在2000H200FH查出有几个一样的数例如可事先在2000H200FH中设定几个零或其它数据,把统计的一样数据的个数放在2100H单元中。程序框图如图1所示。根据程序框图本人动手编写程序,然后上机编译、调试、执行。图2查找一样数个数程序流程图2、无符号双字节快速乘法子程序算法:两个双字节无符号数被分别存放在R2R3和R6R7中。可把被乘数和乘数分解为:R2(R3)=(R2)?82+(R3);(R6)(R7)=(R6)?82R7(R2R3)(R6R7)=(R2)×82+(R3)(R6)×82+(R7)=(R2)(R6)×162+(R2)(R7)×82+(R3)(R6)×82+(R3)(R7)将(R2R3)和(R6R7)中双字节无符号整数相乘,积送R4R5R6R7中。在R2R3和R6R7中输入无符号整数,以0970H为起始地址连续或单步运行本实验程序后检查R4R5R6R7中内容。程序流程见图3所示。图2单字节乘法参考程序=查找一样数的个数=ORG0AA0HL5800:MOVR0,#10H;查找16个字节MOVR1,#00HMOVDPTR,#2000HL5811:MOVXA,DPTRCJNEA,#00H,L5816;取出内容与00H相等吗?INCR1;取出个数加1L5816:INCDPTRDJNZR0,L5811;未完继续MOVDPTR,#2100HMOVA,R1MOVXDPTR,A;一样数个数送2100HL581E:SJMPL581EEND;=无符号双字节快速乘法子程序=ORG0970HQKUL:MOVA,R3MOVB,R7MULAB;R3*R7XCHA,R7;R7=(R3*R7)低字节MOVR5,B;R5=(R3*R7)高字节MOVB,R2MULAB;R2*R7ADDA,R5MOVR4,ACLRAADDCA,BMOVR5,A;R5=(R2*R7)高字节MOVA,R6MOVB,R3MULAB;R3*R6ADDA,R4XCHA,R6XCHA,BADDCA,R5MOVR5,AMOVPSW.5,C;存CYMOVA,R2MULAB;R2*R6ADDA,R5MOVR5,ACLRAMOVACC.0,CMOVC,PSW.5;加上次加法的进位ADDCA,BMOVR4,ASJMP$END五、考虑题1、简述指令MULAB;XCHA,B;ADDCA,R5;的功能。2、程序中ORG,END,SJMP$的功能什么?六、实验报告要求1、实验报告要求归纳总结本次做实验的方法及经过,分析多位数乘法程序编写方法。2、注释程序。3、回答考虑题。