51
This presentation is the property of its rightful owner.
Sponsored Links
1 / 20

51 单片机指令格式及指令系统 PowerPoint PPT Presentation


  • 71 Views
  • Uploaded on
  • Presentation posted in: General

6. 51 单片机指令格式及指令系统. 本讲主要内容:. 6-1. 51 单片机汇编语言的指令格式 6-2. 指令表的查阅方法和指令功能的描述 6-3. 几种不同的寻址方法. 6-1. 51 单片机汇编语言的指令格式. 一个简单的彩灯设计 下图中的 8 个发光二极管代表 8 组彩灯,让它们按你的想法显示吧. 图 3-1 彩灯电路. 6-1. 51 单片机汇编语言的指令格式. 程序是如何进单片机的?. 开发软件. 编程器. 汇编语言程序. 6-1. 51 单片机汇编语言的指令格式. 51 单片机指令格式.

Download Presentation

51 单片机指令格式及指令系统

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


51

6

51单片机指令格式及指令系统


51

本讲主要内容:

6-1. 51单片机汇编语言的指令格式

6-2. 指令表的查阅方法和指令功能的描述

6-3. 几种不同的寻址方法

SiChuan Engineering Technical College-1959


6 1 51

6-1. 51单片机汇编语言的指令格式

  • 一个简单的彩灯设计

    下图中的8个发光二极管代表8组彩灯,让它们按你的想法显示吧

图3-1 彩灯电路

SiChuan Engineering Technical College-1959


6 1 511

6-1. 51单片机汇编语言的指令格式

程序是如何进单片机的?

开发软件

编程器

  • 汇编语言程序

SiChuan Engineering Technical College-1959


6 1 512

6-1. 51单片机汇编语言的指令格式

  • 51单片机指令格式

SiChuan Engineering Technical College-1959


6 1 513

6-1. 51单片机汇编语言的指令格式

  • 汇编语言指令格式

    [标号]: 操作码 [操作数] ;[注释]

    ↓ ↓ ↙ ↘ ↓

    WAIT0 : JC TI, WAIT0 ;发送完一个字节吗?

    • 标号 又称为指令地址符号。对标号有如下规定:

      • 一般由1~8个ASCII字符组成,以字母开头,其余字符可以是字母、数字和其他特定字符。

      • 不能使用助记符、伪指令或者寄存器的符号名称做标号。

      • 与操作码之间用冒号分开,带方括号表示为可选项。

      • 一个标号只能在程序中出现一次,不能重复出现。

    • 操作码 是由助记符表示的字符串,它规定了指令要完成的具体操作。

    • 操作数 是指参加操作的数据或数据的地址。

    • 注 释 是为该条指令所做的说明,以便于阅读,中英文不限 ,用“;”和指令分开。

SiChuan Engineering Technical College-1959


6 1 514

6-1. 51单片机汇编语言的指令格式

分类方法

按指令占用的ROM 空间

按指令功能

按指令执行的时间

位操作类指令

数据传送类指令

算术运算类指令

逻辑运算类指令

控制转移类指令

单周期指令

单字节指令

双周期指令

双字节指令

三字节指令

四周期指令

  • 51单片机汇编语言指令分类

SiChuan Engineering Technical College-1959


6 1 515

6-1. 51单片机汇编语言的指令格式

  • 汇编指令及其注释中常用的符号

    • Rn(n=0~7)------当前选中的工作寄存器组中的寄存器R0~R7之一

    • Ri(i=0,1)------当前选中的工作寄存器组中的寄存器R0或R1

    • @ ---------------间址寄存器前缀

    • #data ------------8位立即数

    • #data16-----------16位立即数

    • direct------------片内低128个RAM单元地址及SFR地址(可用符号名称表示)

    • addr11------------11位目的地址

    • addr16------------16位目的地址

    • rel---------------补码形式表示的8位地址偏移量,值在-128~+127范围内

    • bit---------------片内RAM位地址、SFR的位地址(可用符号或名称表示)

    • /-----------------位操作数的取反操作前缀

    • (×)------------表示 × 地址单元或寄存器中的内容

    • ((×))--------表示以 × 单元或寄存器内容为地址单元的内容

SiChuan Engineering Technical College-1959


51

6-2. 指令表的查阅

  • 从指令表中可以得到的信息

    • 指令名称——指令的书写规范

    • 机器代码——指令在单片机中的存储内容

    • 指令功能——指令的执行效果

    • 指令的字节数——指令的长度(所占存储单元的个数)

    • 指令周期——指令的执行时间(以机器周期为单位)

SiChuan Engineering Technical College-1959


51

6-2. 指令表的查阅

  • 指令表的作用

    • 用于修改指令中的语法错误。

      例如:查找指令MOV R8,#30中的语法错误。

      语法错误一般会出现在标号处(标号过长、标号名称重复)、操作码处(操作码使用不当、书写错误)、操作数处(操作数使用不当、书写错误)、符号错误等处。

      本条指令中操作数R8是错误的,在指令表中词条指令的格式为:

      MOV Rn,#data,其中Rn代表R0~R7,并没有R8。

SiChuan Engineering Technical College-1959


51

6-2. 指令表的查阅

  • 用于了解指令功能

    例如:若CY=1,(A)=30H,(55H)=70H,问以下两条指令的执行效果一样吗?

    a)ADD A,55H;

    b)ADDC A,55H;

    答:查阅指令表后可知:

    a)指令的功能为A (A)+(55H)

    b)指令的功能为A (A)+(55H)+CY

    可见指令a为两个数相加,而指令b为三个数相加,而此时CY=1,故执行的效果不一样。

(A)=0A0H

(A)=0A1H

SiChuan Engineering Technical College-1959


51

6-2. 指令表的查阅

64H ××H 03H

42H 4500H

PC (PC)+3,SP ( SP)+1,(SP) (PC)7~0,

SP (SP)+1,(SP) (PC)8~15,PC addr16

例如:若(SP)=62H,问以下程序段中

4200H: LCALL DISPLAY

4203H: MOV 41H,#33

…………

4500H: DISPLAY:MOV 40H,A

…………

LCALL指令执行后

( SP)= (62H)= (63H)=

(64H)= (PC)=

查阅指令表后可知LCALL指令为子程序调用指令,其功能为:

此时,会将LCALL指令的下一条指令的首地址(4203H)放入堆栈中保存,以便子程序执行后返回正确的位置,然后程序转向DISPLAY(4500H)处执行。

SiChuan Engineering Technical College-1959


51

6-3. 寻址方式

  • 立即寻址

    例:

    MOV 30H,#00H;将立即数00H送给30H单元,即

    30H←00H

    在上面这条指令中,带下划线的操作数(在传送指令中称源

    操作数)是一个立即数,即一个指定的常数,这种寻址方式

    就称为立即寻址。

    注意:立即数的前面必有“#”标志。

    比如:

    ADD A,#0AFH ;A←(A)+AFH

SiChuan Engineering Technical College-1959


51

6-3. 寻址方式

  • 直接寻址

    例:

    MOV A,30H;将内部RAM中30H单元内的数据

    ;送给累加器A,即 A←(30H)

    在上面这条指令中,带下划线的操作数(源操作数)是直接给出内部RAM中某个单元的地址或名称(特殊功能寄存器),这种寻址方式称为直接寻址。

    比如:

    MOV 40H,A; 40H←(A)

    SUBB A,60H; A←(A)-(60H)-CY

SiChuan Engineering Technical College-1959


51

6-3. 寻址方式

  • 寄存器寻址

    例:

    MOV A,R7;将通用寄存器R7中的数据送给A,即A←(R7)

    在上面这条指令中,带下划线的操作数(源操作数)是当前工作寄存器组中某个寄存器,这种寻址方式称为寄存器寻址。

    比如:

    XCH A,R1;累加器A和寄存器R1中的数互换

SiChuan Engineering Technical College-1959


51

6-3. 寻址方式

  • 寄存器间接寻址

    例:

    MOV R0,#3FH ;R0←3FH,立即寻址方式

    MOV A,@R0;A←((R0)),即:A←(3FH)

    在上面的第2条指令中,带下划线的操作数不是R0,而是以(R0)为地址,间接找到内部RAM中的3FH单元,将(3FH)送给A,这种寻址方式称为寄存器间接寻址。

    可用R0、R1和DPTR作间址寄存器,访问片内RAM或片外64KB的RAM地址空间。

    比如:

    MOV DPTR,#0CFA0H ;将十六位地址CFA0H赋给数据指针DPTR

    MOVX A,@DPTR;将片外RAM(CFA0H)单元内的数送给A

SiChuan Engineering Technical College-1959


51

6-3. 寻址方式

  • 变址寻址

    例:

    MOVC A,@A+DPTR;将地址为(A)+(DPTR) 的ROM

    ;单元中的数送给A

    在上面这条指令中,带下划线的操作数是以(DPTR)为基址,(A)为变址,将两者之和作为地址,找出该地址对应的ROM单元,再将该单元的数送给A,这种寻址方式称为变址寻址方式。MCS-51单片机中还有两条变址寻址指令:

    MOVC A,@A+PC

    JMP @A+DPTR

SiChuan Engineering Technical College-1959


51

6-3. 寻址方式

  • 相对寻址

    例:

    CJNE A,#80H,BUDENG;如(A)≠80H,跳转到BUDENG

    JNC DAYU;如(A)>80H,跳转到DAYU

    ……

    BUDENG: SETB FLAG0 ;置位标志位FLAG0

    ……

    DAYU: SETB FLAG1 ;置位标志位FLAG1

    ……

    在上面这个程序片段中,带下划线的操作数指明了程序跳转的目的位置,这个目的位置的PC相对于下一条程序语句的PC不得超出-128~+127字节的范围。

SiChuan Engineering Technical College-1959


51

6-3. 寻址方式

  • 位寻址

    例:

    MOV C,30H;将地址为30H的位的状态赋给进位位Cy

    SETB P1.0;将P1口(对应特殊功能寄存器P1) 的P1.0位置1

    在上面这两条指令中,带下划线的操作数不是某个字节地址或某个数,而是内部RAM中某个可直接寻址位的地址或名称,是针对位(bit)进行的操作,这种寻址方式称为位寻址。在指令表中,凡用bit和C做操作数的指令都属此类,它主要用在位操作指令和部分条件转移指令中。

    比如:

    ANL C,OV ;位C和溢出位OV相与,结果再赋给C,即

    ;C←C∧OV

    CLR RI ;将串口接收中断位RI清0

SiChuan Engineering Technical College-1959


51

思考题

寻址方式:

位寻址

寻址方式:

相对寻址

寻址方式:

寄存器间接寻址

寻址方式:

立即寻址

寻址方式:

寄存器寻址

操作数错误,类型不匹配可改为:

MOV A,30H 或

MOV 20H,C

操作数错误,可改为:

MOV A,Rn;Rn:R0~R7

操作数错误,可改为:

MOVC A,@A+PC

操作数错误,可改为:

MOVX A,@R0

操作数错误,寄存器之间不可赋值,可改为:

MOV A,R5

MOV R6,A

  • 结合指令表,观察以下几条指令,看看是否有语法错误,如有请改正,如无,请说明它属于哪种寻址方式:

MOV A,R0

MOV A,C

MOV A,@R1

ADD A,R8

MOVC A,@A+R0

CJNE A,50H,0FH

MOV R6,R5

MOV A , #1FH

MOVX A,@R2

MOV C,P1.0

SiChuan Engineering Technical College-1959


  • Login