×
单片机 > 单片机程序设计 > 详情

51单片机直接寻址方式与编程举例

发布时间:2020-08-24 发布时间:
|

直接寻址方式是指在指令中操作数直接以单元地址的形式给出,也就是在这种寻址方式中,操作数项给出的是参加运算的操作数的地址,而不是操作数。
例如:MOV  A,30H  
这条指令中操作数就在30H单元中,也就是30H是操作数的地址,并非操作数。 


在80C51单片机中,直接地址只能用来表示特殊功能寄存器、内部数据存储器以及位地址空间,具体的说就是:
1、内部数据存储器RAM低128单元。在指令中是以直接单元地址形式给出。
我们知道低128单元的地址是00H-7FH。在指令中直接以单元地址形式给出这句话的意思就是这0-127共128位的任何一位,例如0位是以00H这个单元地址形式给出、1位就是以01H单元地址给出、127位就是以7FH形式给出。 
2、位寻址区。20H-2FH地址单元。
3、特殊功能寄存器。专用寄存器除以单元地址形式给出外,还可以以寄存器符号形式给出。例如下面我们分析的一条指令 MOV  IE,#85H 前面的学习我们已知道,中断允许寄存器IE的地址是80H,那么也就是这条指令可以以MOV  IE,#85H 的形式表述,也可以MOV  80H,#85H的形式表述。


关于数据存储器RAM的内部情况,请查看我们课程的第十二课。


直接寻址是唯一能访问特殊功能寄存器的寻址方式!

大家来分析下面几条指令:
MOV  65H,A       ;将A的内容送入内部RAM的65H单元地址中
MOV  A,direct    ;将直接地址单元的内容送入A中
MOV  direct,direct;将直接地址单元的内容送直接地址单元
MOV  IE,#85H      ;将立即数85H送入中断允许寄存器IE


前面我们已学过,数据前面加了“#”的,表示后面的数是立即数(如#85H,就表示85H就是一个立即数),数据前面没有加“#”号的,就表示后面的是一个地址地址(如,MOV 65H,A这条指令的65H就是一个单元地址)。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
C51 特殊功能寄存器SFR的名称和地址