单片机中的寻址就是单片机指令中提供的操作数的形式。也就是寻找操作数或操作数所在地址的方式。
在51系列单片机中,存放数据的存储器空间有4种:内部RAM、特殊功能寄存器SFR、外部RAM和程序存储器ROM。其中,内部RAM和SFR统一编址,外部RAM和程序存储器是分开编址的。为了区别指令中操作数所处的地址空间,对于不同存存储器的数据操作,采用不同的寻址方式。
扩展资料
寻址方式
1、立即数寻址
立即数寻址又称立即寻址,即指令中直接给出操作数的寻址方式称为立即数寻址。在51系列单片机指令系统中,立即数用前面加“#”号的8位数表示(#data,如#30H)或16位数(#data16,如#2052H)表示。举例说明立即数寻址方式,以传送指令为例。
2、直接寻址
指令中直接给出操作数地址(dir)的寻址方式称为直接寻址。寻址对象为:1 内部数据存储器,在指令中以直接地址表示;2特殊功能寄存器SFR,在指令中用寄存器名称表示。
3、寄存器寻址
以通用寄存器的内容为操作数的寻址方式称为寄存器寻址。通用寄存器包括:A、B、DPTR、R0~R7。其中B寄存器仅在乘法、除法指令中为寄存器寻址,在其它指令中为直接寻址。A寄存器可以寄存器寻址,又可以直接寻址(此时写作ACC)。
直接寻址和寄存器寻址的差别在于,直接寻址是操作数所在的字节地址(占一个字节),寄存器寻址是寄存器编码出现在指令码中。寄存器寻址速度比直接寻址要快。除上面所指的几个寄存器外,其它特殊功能寄存器一律为直接寻址。
参考资料来源:百度百科-51系列单片机寻址方式
MOV A,30H;直接寻址,把地址(编号)30H对应的寄存器单元中的数据传递给A寄存器。
MOV A,#30H;立即寻址,把A寄存器直接写入数据30H。
MOV A,@R0;寄存器间接寻址,功能同“直接寻址”,只是R0可以改变,实现自动改变地址取数据的功能。
带“#”的数字是立即数,由计算机在执行当前立即寻址时产生,它不是由内存单元取出的,用完就没有了,所以叫“立即”,如果所有的操作都是内存单元到内存单元的操作,那内存单元怎么置数呢?所以就要用到立即数了。
不带任何符号的数字是地址,在命令当中根据此地址寻找地址所对应的内存单元中的数进行操作。
1.寄存器寻址 操作数在寄存器中
2.直接寻址 操作数在RAM中
3.立即数寻址 操作数是指令的一部分存放在
ROM中
4.寄存器间接寻址 操作数的地址存放在寄存
器中
5.变址寻址 相对寻址 位寻址 要复杂一点,但都是把操作数换了个地方存起来,以便用在不同的场合