您好,欢迎访问三七文档
11.MCS-51单片机有哪几种寻址方式?各寻址方式所对应的寄存器和存储空间有什么不同?答:51系列单片机共有7中寻址方式:1)立即寻址:将立即数存放到相应的寄存器中2)寄存器寻址:操作数在寄存器中,寻址范围包括:通用寄存器(4组32个通用寄存器,但在任何时刻只使用当前组寄存器组。所以在指令中这些寄存器的名字只有8个,及R0-R7),部分专用寄存器(例如累加器A和B寄存器,以及数据指针DPRT寄存器等)3)直接寻址,寻址范围只限于内部RAM4)寄存器间接寻址,寻址范围包括:内部数据RAM的寄存器间接寻址;外部数据RAM的寄存器间接寻址5)相对寻址,寻址范围是相应的程序存储空间6)变址寻址,只能对程序存储器进行寻址。7)位寻址,寻址范围:内部RAM中的位寻址区,专用寄存器中的可寻址位。3.若(50H)=60H,写出执行下面程序段后累加器A、寄存器R0,以及内部RAM的60H、61H、62H单元中的内容。MOVA,50HMOVR0,AMOVA,#00HMOV@R0,AMOVA,3BHMOV61H,#60HMOV62H,A程序执行后,累加器A中的值为60H,寄存器R0中的值为00H,内部RAM的(60H)=00H,(61H)=60H;(62H)=(3BH)4.一个16位数的高字节存放在30H单元,低字节存放在31H单元,另一个16位数据的高字节存放在32H单元,低字节存放在33H单元,试编写程序完成这两个16位数据的减法运算,差的高8位放在40H,低8位放在41H单元。答:CLRCMOVA,30HSUBBA,(32H)MOV41H,AMOVA,31HSUBBA,(33H)MOV42H,A5.编写一段程序,查找存档在30H-50H单元中是否有数据34H,若有则将F0置1,否则,将F0清0.答:L0:MOVR0,#50HMOVA,#34HCLRCSUBBA,@R0JZL1DECR0MOVA,#30H2CLRCSUBBA,R0JNZL0CLRD5L1:SETD56.编写程序,求出片内40H单元内容中所有“0”的个数,结果存入60H单元中答:MOVR0,#00HMOVR1,#8MOVA,40HL0:RRCAMOVR2,AMOVA,R0ADDCA,#0MOVR0,AMOVA,R2DJNZR1,L0MOVA,#8CLRCSUBBA,R0MOVR0,ARET7.在内部RAM单元从30H开始的5个单元中,存放着5个压缩BCD码,编写一段程序,将他们转换为ASCII码,并存放到40H开始的单元中。答:MOVR10,#30HMOVR1,#5MOVR2.#40HLOOP:MOVA,R0ANLA,#0FHADDCA,#30HINCR2MOV@R2,AMOVA,#F0HMOVB,#16MOVA,BADDCA,#30HANCR2MOV@R2,AINCR0DJNZR1,LOOPRET8.编写求出内部RAM中从30H开始的连续20个单元中的内容的平均值,并存入60H单元中答:MOVR0,#20H3MOVA,30HMOVR1,#31HMOVR2,#0MOVR3,#OLOOP:MOVA,R3ADDA,@R1MOVR3,AMOVA,#00HADDCA,R2MOVR2,ACLRCMOVA,@R1INCR1DECR0JNZLOOPMOVB,R2MOVA,#10HMULABMOVR1,AANLR3,#F0HMOVA,R3MOVB,#10HDIVABADDA,R1MOVB,#20HDIVABLOOP1:MOVR0,#4RLADJNZR0,LOOP1MOVR1,AMOVA,10HMULABANLR3,#0FHADDA,R3MOVB,#20DIVABMOVR2,AMOVA,R1ADDCA,R2MOVA,R1ADDCA,R2MOVR2,AMOVA,#60HMOVA,R2
本文标题:单片机第三章
链接地址:https://www.777doc.com/doc-7212607 .html