实验一8051单片机简单编程与调试实验内容:1、存储块置全“1”源代码:汇编语言源程序:ORG00HSTARTEQU30H;起始地址MOVR1,#STARTMOVR0,#32H;Rn中设置32字节计数值MOVA,#0FFHLOOP:mov@R1,AINCR1;指向下一个地址DJNZR0,LOOP;计数值减1,不为零继续SJMP$END在下划线处填入适当指令。输入源程序,编译无误后,用单步执行的方法,观察各个相应存储单元和寄存器中内容的变化。解释STARTEQU30H。答:START=30H(2)二进制ASCII码转换源代码:汇编语言源程序:RESULTEQU30HORG00HSTART:MOVA,#1AHLCALLBINTOHEX;调用BINTOHEX子程序LIMP$BINTOHEX:MOVDPTR,#ASCIITAB;表的首址ASCIITAB送DPTRMOVB,ASWAPAANLA,#0FH;取A的高四位MOVCA,@A+DPTR;查ASCII表MOVRESULT,AMOVA,BANLA,#0FHMOVCA,@A+DPTRMOVRESULT+1,ARETASCIITAB:DB'0123456789ABCDEF'END答:注释掉LJMP$执行到MOVA,#1AH2、多路开关指示OGR00HSTART:MOVA,PR1;读取P1口数据SWAPA;交换A中高四位与低四位的位置ORLA,0F0H;与0F0H相或MOVP1,A;将开关状态送LED显示SJMPSTART;转移到STARTEND答:把上移后的高四位再全装为1,并且屏蔽掉低四位3、程序调试(1)程序a.asmORG0000HMOV30H,#87HMOVA,#69HADDA,30HNOPEND答:CY=0,(A)=1,OV=0,P=0将程序中的指令NOP改为指令DAA后答:CY=1,(A)=1,OV=0,P=0(2)程序b.asmORG0000HMOVSP,#60HMOVDPTR,#0A679HPUSHDPHPUSHDPLMOVA,#80HPUSHACCPOPBPOP30HPOP31HNOPEND答:(SP)=60H,(A)=80H,(30H)=79H,(31H)=0A6H,(B)=80H,(DPH)=0A6H,(DPL)=79H(3)程序c.asmORG0000HMOVA,#02HMOVB,ARLAADDA,BMOVDPTR,#TABJMP@A+DPTRNOPORG0800HTAB:LJMP1000HLJMP2000HLJMP3000HLJMP4000HEND答:执行完JMP@A+DPTR以后,PC=0806H