资源描述:
《(寻址方式及传送指令)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、51单片机指令的寻址方式立即寻址直接寻址寄存器寻址寄存器间接寻址基址变址寻址相对寻址位寻址寻址方式:指令按地址获得操作数的方式七种寻址方式,一条指令可能含多种寻址方式立即寻址操作数直接就出现在指令中例:MOVA,#64H;(A)←立即数64HADDA,#05H;(A)←(A)+立即数05H注意:符号“#”表明其后跟的是立即数,立即数——就是数字量本身。直接寻址指令中直接给出了操作数所在单元的地址或名称例:MOVR1,1FH;R1←(1FH)MOV30H,4AH;30H←(4AH)在本单片机中规定:访问特殊功能寄存器SFR只能采用直接寻址方式。例如:MOVA,SP
2、;A)←(SP)MOVA,81H;(A)←(SP)MOVP1,#5AH;(P1)←(#5AH)MOV90H,#5AH;(P1)←(#5AH)MOVB,30H;(B)←(30H)相同相同寄存器寻址从寄存器中读取操作数或存放操作数进寄存器例:MOVA,B;(A)←(B)MOV30H,R0;(30H)←(R0)MOVA,R1;(A)←(R1)寄存器间接寻址寄存器中的内容是一个地址,由该地址单元寻址到所需的操作数注意:1)“间接”表示某寄存器中的“内容”只是一个“单元地址”,这个地址单元中存放的数据才是要找的“操作数”。2)符号“@”表示“在…”,其含义与读音皆同“at
3、”。例:[MOVR1,#30H;(R1)←立即数30H]MOVR1,#30H;(R1)←立即数30H]MOV@R1,#0FH;(30H)←立即数0FHMOVA,@R1;(A)←((30H))=#0FH在本单片机中访问特殊功能寄存器SFR只能采用直接寻址方式的原因:SFR分布在80H~0FFH范围内,而52系列单片机有256字节的片内RAM,其中的80H~0FFH的RAM与SFR所占地址重叠。MOVA,90H等效于MOVA,P1属直接寻址MOVA,@R0;[事先已知(R0)=#90H]执行的操作:A←(90H)属寄存器间接寻址,随意写的指令如:MOVA,85
4、H则是非法的!于是规定:80H~0FFH范围内的RAM只能用寄存器间接寻址方式,而SFR只能用直接寻址方式。从而解决了地址冲突的问题。例如:存储器配置(片内RAM)51片内RAM128字节(00H—7FH)52片内RAM256字节(00H—0FFH)00H20H2FH7FH1FH30H80HFFH52子系列才有的RAM区普通RAM区位寻址区工作寄存器区SFR分布在80H-FFH其中92个位可位寻址80HFFH51子系列128字节52子系列256字节只能直接寻址只能寄存器间接寻址基址加变址寻址以16位的地址指针寄存器DPTR或16位的PC寄存器为基址寄存器,以累加
5、器A为变址寄存器,两者中的“内容”形成一个16位的“地址”,该“地址”所指的存储单元中的内容才是操作数。例:[设:A中已存有#A4H,DPTR中已存有#1234H]MOVCA,@A+DPTR;(A)←((A)+(DPTR))操作:将A4H+1234H=12D8H单元中的数放进累加器A相对寻址当前PC值加上指令中规定的偏移量rel,构成实际的操作数地址例:SJMPrel操作:跳转到的目的地址=当前16位PC值+rel注意:1)“当前PC值”指程序中下一条指令所在的首地址,是一个16位数;2)符号“rel”表示“偏移量”,是一个带符号的单字节数,范围是:-128—+
6、127(80H—7FH),在实际编程中,“rel”通常用标号代替位寻址指令中直接给出了操作数所在的位地址。例:CLRP1.0;(P1.0)←0SETBACC.7;(ACC.7)←1CPLC;(C)←NOT(C)注意:1)位地址里的数据只可能是一个0或12)有的位地址十分明确,如P1.0,ACC.7等,有的位地址则“不太明确”,如:[MOVA,17H;(A)←(17H),17H是字节地址]MOVACC.0,17H;(ACC.0)←(17H),这里ACC.0是位地址所以该指令中的17H是22H单元的第7位片内RAM中有128个位可按位寻址的位,位地址:00H—7FH
7、分布在:20H—2FH单元;另外,在SFR中还有92个位可按位寻址00H20H2FH7FH1FH30H80HFFH52子系列才有的RAM区普通RAM区位寻址区工作寄存器区27H22H21H20H26H24H25H23H28H07060504030201000F0E0D0C0B0A090817161514131211101F1E1D1C1B1A191827262524232221202F2E2D2C2B2A292837363534333231303F3E3D3C3B3A393847464544434241402FH7F7E7D7C7B7A7978位地址总共128个
8、可按位寻址的位单元地址1