资源描述:
《片机原理与应用技术重点程序高惠芳》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、传送类指令举例:[例3-1]已知(R0)=30H,问执行如下程序,A、R4、30H和31H单元的内容是什么。MOVA,#10HMOVR4,#36HMOV@R0,#7AHMOV31H,#01H解:8051执行上述指令后的结果为:(A)=10H(R4)=36H(30H)=7AH(31H)=01H[例3-2]设内部RAM中30H单元的内容为40H,40H单元的内容为10H,P1口作输入口,其输入数据为0CAH,程序及执行后的结果如下:MOVR0,#30H;单元地址30H送R0中MOVA,@R0;R0间址,将30H单元内容送AMOVR1,A;
2、A送R1MOVB,@R1;R1间址,将40H单元内容送BMOV@R1,P1;将P1内容送40H单元MOVP2,P1;将P1内容送P2执行结果:(R0)=30H,(R1)=40H,(A)=40H,(B)=10H,(P1)=0CAH,(40H)=0CAH,(P2)=0CAH[例3-5]已知外部RAM2020H单元中有一个数X,内部RAM20H单元一个数Y,试编出可以使它们互相交换的程序。解:MOVP2,#20HMOVR1,#20HMOVXA,@R1XCHA,@R1MOVX@R1,ASJMP$END指向内部RAM20H单元指向外部RAM20
3、20H单元[例3-7]把01H单元内容送02H单元,有几种不同的实现方法。①MOV02H,01H;直接寻址3字节2周期②MOVA,01H;直接寻址+寄存器寻址MOV02H,A;4字节2周期③MOVA,R1;寄存器寻址2字节2周期MOVR2,A④MOVR0,#01H;4字节3周期MOV02H,@R0;间接寻址⑤PUSH01H;栈操作4字节4周期POP02H第三种方法占存储空间少,执行周期短。补充:设20H,21H单元存放一个16位2进制数X1(高8位存于21H单元);30H,31H单元存放一个16位2进制数X2,(高8位存于31H单元)
4、;求X1+X2,结果存放于20H,21H。(两数之和不超过16位)答案ORG0000HAJMPmainORG0100HMAIN:MOV20H,#12HMOV21H,#34HMOV30H,#23HMOV31H,#45HMOVA,20HADDA,30HMOV20H,AMOVA,21HADDCA,31HMOV21H,ASJMP$END#1234H+#2345H=#3579H例4.3.1将片内RAM30H单元中的两位压缩BCD码转换成二进制数送到片内RAM40H单元中.(P63)ORG1000HSTART:MOVA,30H;取两位BCD压缩码
5、a1a0送AANLA,#0F0H;取高4位BCD码a1SWAPA;高4位与低4位换位MOVB,#0AH;将二进制数10送入BMULAB;将10×a1送入A中MOVR0,A;结果送入R0中保存MOVA,30H;再取两位BCD压缩码a1a0送AANLA,#0FH;取低4位BCD码a0ADDA,R0;求和10×a1+a0MOV40H,A;结果送入40H保存SJMP$;程序执行完,“原地踏步”END例4.3.2将内部RAM中20H单元的压缩BCD码拆开,转换成相应的ASC码,存入21H、22H,高位存22H.(P64)ORG1000HSTAR
6、T:MOVA,20H;取压缩BCD码ANLA,#0FH;取低位BCD码ADDA,#30H;转换为低位ASCII码MOV21H,A;保存低位ASCII码MOVA,20H;重新取压缩BCD码ANLA,#0F0H;分离高位BCD码SWAPA;得到高位BCD码ADDA,#30H;转换为高位ASCII码MOV22H,A;保存高位ASCII码SJMP$END补充举例:三字节无符号数相加,其中被加数在内部RAM的50H、51H和52H单元中;加数在内部RAM的53H、54H和55H单元中;要求把相加之和存放在50H、51H和52H单元中进位存放在位
7、寻址区的20H单元最低位中(即20H.0)。分析:除最低字节可以使用ADD指令之外,其它字节相加时要把低字节的进位考虑进去,因此使用ADDC指令.MOV00H,C#20H分支程序是通过转移指令实现的一、单分支程序使用条件转移指令实现,即根据条件对程序的执行进行判断,满足条件则进行程序转移,否则程序顺利执行。可实现单分支程序转移的指令有:JZ、JNZ、CJNE、DJNZ等还有以位状态作为条件进行程序分支的指令:JC、JNC、JB、JNB和JBC等(1)单分支结构举例例4.3.3求符号函数的值。已知片内RAM的40H单元内有一自变量X,编
8、制程序按如下条件求函数Y的值,并将其存入片内RAM的41H单元中。见P651X>00X=0-1X<0Y=ORG1000HSTART:MOVA,40H;将X送入A中JZCOMP;若A为0,转至COMP处JNBACC.7,P