天天看点

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

可访问3 种地址空间

(1)内部RAM低128单元: 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)
STC51从入门到精通(汇编)----第四讲:80C51单片机的指令系统(二)寻址方式

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

         指令功能是把直接地址30H单元的内容送累加器A,  即(30H)--->(A)如图所示。

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

例:   MOV   DPTR , #1234h 

            (DPH)=12H

            (DPL)=34H

注意: 立即数前加 " # "号,以区别直接地址

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

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

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

MOV  A   , RO

MOV  R0 , #01001111B          

                  |  |

STC51从入门到精通(汇编)----第四讲:80C51单片机的指令系统(二)寻址方式
RS1 RSO  寄存器组 片内RA M地址 寄存器
第0 组 00H ~07H  R0--R7
1 第1 组 08H~ 0FH R0--R7
1 第2 组 10H~17H R0--R7
1 1 第3 组 18H~1FH R0--R7

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

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

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

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

4、寄存器间接寻址:

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

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

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

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

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

例如:  MOV  A,      @R1   ;机器码 E7H

设 (R1)  =60H  ,    (60H) =50H ,  执行结果

(A)=50H,  该指令执行过程如图4-5所示。

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

5、变址寻址:

  • 基址寄存器+变址寄存器的tB]接寻址方式

DPTR/PC      ,        A

MOVC   A,   @ A+DPTR

            (A)<---((DPTR) + (A))

MOVC   A,   @ A+PC

             (A)<---( (PC )+ (A))

JMP @ A + DPTR

              (PC)=(A)+(DPTR)

MOVC  A,@A+DPTR ;(A)←((A)+(DPTR))

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

6、相对寻址

       是以程序计数器PC的当前值为基地址, 加上指令中给出的偏移量rel作为转移目的地址。转移目的地址=下一条指令地址+rel

【例4-12】 JC 80H

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

7、位寻址 bit

       位寻址是指对一些内部RAM和特殊功能寄存器进行位操作时的寻址方式。

位寻址范围:

(1) 内部RAM的位寻址区, 共16个单元的128位, 单元地址为20H  2FH ,  位地址为00H~7FH。可用直接位地址或字节地址加位的表示方法。

例如:    MOV    C,    7AH    

或           MOV    C,    2FH.    2

(2)特殊功能寄存器SFR可供位寻址的专用寄存器共11个,实有位地址位83 位。位地址有4 种表达方式 。

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

     1)   直接使用位地址       3 )   单元地址加位的表示法

MOV   C,    0D6H                 MOV   C,    0D0H.6

     2)   位名称表示法           4 )   专用寄存器符号加位的表示法

MOV    C ,     AC                  MOV   C,     PSW.6

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

特点1: 内部数据存储器与内部I/O口统一编址

1、内部数据存储器的寻址方式

1)00H~1FH               寄存器寻址 4 组R0~R7     : Rn

                                     直接寻址    direct

                                     寄存器间接寻址 @R0,@R 1

例: (01H)--->(02H)

MOV     02H,01H    ;源寻址和目的寻址均为直接寻址

MOV C  R2 ,01H    ;源寻址为直接寻址,目的寻址为寄存器寻址

MOV    R0,#01 H

MOV  02H,@R0     ; 源寻址为寄存器间接寻址,

                                 目的寻址为直接寻址

2)20H~2FH             可位寻址区的寻址方式

字节寻址方式: 直接寻址 direct

                           寄存器间接寻址@R0,@R1

位寻址: bit        直接寻址

例: MOV     26H,C;            位寻址       (26H)       1位

        MOV      26H,A;           字节寻址    (26 H)     8 位

3)30H~7FH             数据缓冲区的寻址方式

字节寻址方式: 直接寻址 direct

                           寄存器间接寻址@R0,@R1

例: MOV     56H,A;            字节寻址 ( 56H ) 8位

        MOV      R0,#66H

        MOV      @R0,#56H

可以将用户堆栈设在该区内, 堆栈指针SP

2、SFR及I/O口的操作---只能直接寻址

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

3、关于A累加器有两种寻址方式:

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

4、可做片内RAM的指针有:

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

特点2: 片外数据存储区和外部扩展的I/O口的寻址方式

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