Abstract:
-
直接寻址:
- 储物柜格子有固定编号,你只能通过编号直接访问。
MOV P1, A
:直接访问特殊功能寄存器P1。
-
立即寻址:
- 购物清单直接写着“20个苹果”。
MOV A, #20H
:立即数20H直接加载到A。
-
寄存器间接寻址:
- 朋友知道冰箱里食物的位置,你让朋友去拿。
MOVX A, @DPTR
:通过DPTR间接访问地址1234H的数据。
1. 特殊功能寄存器只能采用直接寻址
类比:
想象你在家里有一个固定的储物柜,每个储物柜的格子都标有固定的编号。你只能通过这些编号直接访问每个格子的内容。
实际例子:
在MCS-51单片机中,特殊功能寄存器(SFR)就像这个固定的储物柜,它们位于特定的内存地址(80H到FFH)。要访问这些寄存器,你必须直接使用它们的地址。
MOV P1, A ; 将累加器A的值直接存储到P1端口寄存器(特殊功能寄存器)中
2. MOV A, #20H
指令的立即寻址
类比:
你有一个购物清单,上面直接写着你需要买的东西,例如“买20个苹果”。你不需要去哪里查找,这个数值(20个苹果)已经明确给出。
实际例子:
在这条指令中,立即数20H直接写在指令中,所以称为立即寻址。
MOV A, #20H ; 将立即数20H直接加载到累加器A中
3. MOVX A, @DPTR
指令的寄存器间接寻址
类比:
你有一个朋友(DPTR)知道你家冰箱里食物的位置(内存地址)。你告诉他:“帮我从冰箱里拿出食物”,他就会根据自己知道的位置(间接地址)找到食物并给你。
实际例子:
在这条指令中,DPTR寄存器指向一个内存地址,指令通过DPTR间接访问这个地址的内容,然后把数据存储到累加器A中。
MOV DPTR, #1234H ; 将地址1234H加载到数据指针寄存器DPTR中
MOVX A, @DPTR ; 从由DPTR指向的外部RAM地址读取数据到累加器A中