STC51从入门到精通(汇编)----第四讲:80C51单片机的指令系统(二)寻址方式

版权声明: https://blog.csdn.net/qq_38351824/article/details/90144714

4.2.1  指令系统中使用的常用符号:

Rn:    当前寄存器工作区中的寄存器, 其中, n=0 -- 7;

direct:    内部数据存储器地址可指定一个内部RAM单元(0-- 127)或一个专用寄存器(128-- 255);

@Ri:    通过R1R0间接寻址指定数据存储器RAM中的一个单(0-- 255);

#data:    在指令中指明8位常数

#data16:    在指令中指明16位常数

addr11:    11位目的地址用在ACALLAJMP指令中表示调用或转移地址寻址范围为2KB;

addr16:    16位目的地址用在LCALLLJ MP指令中表示调用或转换地址, 寻址范围为64KB;

rel:   8位偏移量, 用补码表示, 用在SJMP等转移指令中, 寻址范围为 - 128-- + 127;

bit:   表示位寻址空间中的位地址, 8 位, 寻址范围为0-- FFH

4.2.2   80C51单片机指令系统的寻址方式:

1、立即寻址---是指操作数在指令操作数域直接给出:

2、直接寻址---是指操作数的地址直接在指令操作数域给出:

可访问3 种地址空间

(1)内部RAM128单元00H-7F

  •   MOV   A,    3CH    ; (A)<---(3CH)

(2)殊功能寄存器SFR, 唯 一方式80H-0FFH

  • MOV    A,     P1       ;  (A) <---(P1口)
  • MOV    A,     90H

​​​​​​​(3)211个位地址空间

  • MOV   C,   30H      ; (Cy)<---(30H)
  • MOV   A,   30H      ;  A <---(30H)

例: MOV   A  ,   30H;   机器码为E530H

         指接地30H容送累加器A,  (30H)--->(A)如图所示。

例:   MOV   DPTR , #1234h 

            (DPH)=12H

            (DPL)=34H

立即数前加 " # ",以区地址

例如:  MOV    A,         #30H         ; (A)<--- 30H

             MOV    A,           30H         ; (A)<---(30H)

3、寄存器寻址---操作数存放在寄存器中:

MOV  A   , RO

MOV  R0 , #01001111B          

                  |  |

RS1

RSO 

寄存器组

片内RA M地址

寄存器

0 0 0 00H ~07H  R0--R7

0

1

1

08H~ 0FH

R0--R7

1

0

2

10H~17H

R0--R7

1

1

3

18H~1FH

R0--R7

【例4-9】 MOV AR1   ;(A)<---(R1)

例如: MOV   A,   R3   ;机器码为 0EBH     指令功能是把当前R3操作数送累加器A指令执行示意图如图3-6( R3) =12H

4、寄存器间接寻址:

  • 是指寄存器中存放的是操作数的地址,而操作数在存储器中,通过寄存器可间接得到。
  • 寄存器间接寻址用符号''@"表示

​​​​​​​       寄存器间接寻址可寻址范围如下:

(1)内部RAM128单元, 地址范围00H~7FH,用Ri(i=0,1)SP作为间址寄存器

(2)与P2口配合使用Ri8位地址可寻址片外数据存储器或I/O口的64kB7\区域;

(3)DPTR间接寻址寄存器, 可寻址片外程序存储器或数据存储器包括1/0 口的各自的64kB 区域。

猜你喜欢

转载自blog.csdn.net/qq_38351824/article/details/90144714