您当前的位置:《单片机技术》听课笔记:10
《单片机技术》听课笔记:10

第十讲 

外部RAM传送 举例

例1. 设工作寄存器R0的内容为12H,R1的内容为34H,片外RAM34H单元的内容为56H。执行指令:

MOVX A, @R1   ;(34H)=56H—>A

MOVX @R0  A   ;(A)=56H—>片外12H单元中

执行结果为片外RAM的(34H)=56H, (12H)=56H

例2:某应用程序外扩了8k字节RAM,要求把内部RAM的20H单元内容发送到外部RAM的800H单元中。

MOV DPTR,800H ;外部数据存储器地址指针

MOV R0, #20H     ;内部数据存储器的地址指针

MOV A, @R0       ;取内部数据存储器20H单元内容

MOVX A, @DPTR   ;外部数据存储器800H单元

程序存储器传送指令(查表指令)

MOVC A, @A+PC    ;(A)<—((A)+(PC))

MOVC A, @A+DPTR ;(A)<—((A)+(DPTR))

.功能:从程序存储器中读取数据(如表格、常数等)

.特点:执行过程相同,基址不同,适用范围不同。

累加器A为变址寄存器,PC、DPTR为基址寄存器。

DPTR为基址寄存器时,允许数表存放在程序存储器的任意单元,称为远程查表,编程比较直观;

      而PC为基址存储器时,数据表中只能放在该指令单元往下的256个单元中,称为近程查表。编程时需计算A值与数表首址的编程量。

    查表指令 举例

例1.求平方数(远程查表法),(A)=i ,i=0-9

    MOV DPTR, #TABLE   ;指向表址

    MOVC A,  @A+DPTR   ;查表得到平方数

    MOV 20H, A                 ;存平方数

    HERE:SJMP HERE

    TABLE:DB 00H, 01H, 04H, 09H;平方表0^2-9^2

                  DB 16H, 25H, 36H

                  DB49H, 64H, 81H

    注:rel=TABLE—(查表指令地址+1)

           MOVC指令为单字节

          字节交换指令

.XCH  A,  Rn     ;(A)<---->(Rn),(direct)、((Ri))

 XCH A,  direct

 XCH A,  @Ri

.功能:将累加器A与源操作数的字节内容互换。

 .源操作器有寄存器寻址、直接寻址和寄存器间寻址等寻址方式。

        例:设(R0)=30H,(A)=3FH, 片内(30H)=3FH

       执行指令 XCH A,@R0

       执行结果(A)=BBH,(30H)=3FH

       3.3.2 算术运算类指令

.算术运算类指令都是通过算术逻辑运算单元ALU进行数据运算处理的指令,包括加、减、乘除四则运算。

. 使用的助记符为ADD,ADDC,INC,DA,SUBB,DEC,MUL,DIV等八种。

. 执行结果影响进位标志(CY),辅助进位(AC),溢出标志(OV)及奇偶标志(P).

 .加1和减1指令不影响这些标志。

ADD A, Rn   ;(A)+(Rn)-->(A)

ADD A, drect  ;(A)+(direct)-->(A)

ADD A, @Ri ;(A)+(Ri)-->(A)

ADD A, #data  ;(A)+data-->(A)

 . 源操作数:R你,direct、@Ri或立即数

.目的操作数:累加器A

. 功能:将工作寄存器Rn,片内RAM单元中选择的内容,间接地址存储器中的8位无符号二进制数及立即数与累加器A中的内容相加,想家的结果仍存放在A中。

收藏状态
收藏本课程的同学
相关课程