MCS-51单片机指令系统及编程举例

更新时间:2023-06-10 16:26:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

微机原理及应用

对于任何一台计算机,必须有软件(程 序)的支持,才能工作。但是市场上所售 的单片机是裸机,在使用之前要现对它编 程,将程序固化在芯片内,才能使用。 指令系统是一种CPU所能直接执行的所 有命令的集合,CPU的主要功能是由它的 指令系统来体现的。任何计算机语言编写 的任何程序,都必须转换为指令系统中相 应指令代码的有序集合,CPU才能执行 。 单片机的指令系统是单片机能够识别 并执行的所有指令的集合。

3.1指令系统简介 每一种CPU都有其独立的指令系统。 MCS-51系列单片机指令系统共有111 条指令,其中有49条单字节指令,45条双 字节指令和17条三字节指令。 MCS-51指令系统的功能十分强大,它 把体现单片机的各种功能的寄存器组织在 统一的地址空间中,MCS-51指令系统在其 存储空间、时间的利用率及工作效率方面 都是较高的。

1. 指令格式 MCS-51指令系统中的每一条指令都有 两级指令格式: CPU可直接识别并执行的机器语言指令 (机器语言)。 汇编语言指令(简称汇编指令)。 符号说明:见书上.P.34

MCS-51汇编语言指令格式,由以下几个部分组成:

[标号:] 操作码 [目的操作数] [,源操作数] [;注释]

例:LOOP:MOV A,R1;A R1MOV A,R1

INCNOP

A

3.2 寻址方式 所谓寻址方式就是寻找或获得操作数的

方式。指令的一个重要组成部分是操作数。由 寻址方式指定参与运算的操作数或操作数 所在单元的地址。

MCS-51指令系统的寻址方式有以下7种: 1. 立即寻址 2. 直接寻址 3. 寄存器寻址 4. 寄存器间接寻址 5. 变址寻址 6. 相对寻址 7. 位寻址

立即寻址:操作数直接出现在指令中,可以 是8位,也可是16位。该方式寻址中的操作数 称为立即数,用“#”表示。 例:MOV A,#30H ;A 30H 执行结果:A=30H 例:MOV DPTR,#1000H;DPTR 1000H 执行结果: DPTR=1000H, 注意:只有MOV DPTR,#date16指令的立即 数为16位,DPTR分为DPH和DPL,在上述 例子中, DPH=10H, DPL=00H

直接寻址:操作数的地址直接出现在指令

中。这类寻址方式的操作数只能是存放在内部RAM和SFR中。见.P.23

(1)SFR 例:MOV A,P1 执行结果:将P1口的内容送到A中。

若P1的内容为78H,执行该指令后,A=78H

(2)内部RAM的低128字节 例:MOV A,76H

执行结果:将76H单元的内容送到A中。 若(76H)=3FH,执行该指令后,A=3FH注意:若要表示某个单元的内容,将该单元用括号扩起 来,如(43H)、(76H)、(R0)等。

寄存器寻址:操作数为寄存器的内容。 此处的寄存器指的是工作寄存器 R0~R7

、累加器A、通用寄存器B、数据 指针寄存器DPTR和位累加器C(即进位 位C)。 例 :MOV A,R0 执行结果:将R0的内容送入A中。 若R0的内容(R0)=5AH,则A=5AH

寄存器间接寻址:将指定寄存器中的内容

作为地址,该地址对应的内容才是操作数,用@表示。

例:MOV A,@R0执行结果:将R0的内容作为地址,再将该

地址对应的内容送入A中。若(R0)=46H,(46H)=2FH,则:

A=((R0))=(46H)=2FH

例:MOV @R1 , 76H执行结果: ((R1)) (76H) 。

若(76H)=0FH, (R1)=23H,则:(23H)=0FH

变址寻址:以程序指针PC或数据指针DPTR为基址,以累加器A作为变址,两者

内容相加(即基址+偏移量)形成16位地址。

例: 地址 目标代码 汇编指令 2100 7406 MOV A,#06H 2102 83 MOVC A,@A+PC 2103 00 NOP 2104 00 NOP … … … 2109 32 DB 32H 执行结果分析:当执行到MOVC A,@A+PC 时,PC=2103H(基址),A=06H(偏移量),因 此@A+PC所示的地址=2103H+06H=2109H, (2109H)=32H,所以A=32H

例:

TABLE:

MOV A,#01H MOV DPTR,#TABLE MOVC A,@A+DPTR DB 41H DB 42H

… … 执行结果分析:基址的首地址= TABLE 偏移量= 01H, 程序执行到MOVC A,@A+DPTR时, @A+DPTR所指的地址= TABLE +01H,因此,该指令执行后A=42H

相对寻址:以PC的当前值为基址,与指令 中的第二字节给出的偏移量rel(8位有符号 数)相加,所得之和为程序的转移地址。 转移范围为+127~-128字节之间。 例:SJMP 08H;双字节指令 分析:若PC=2000H为该条指令的地址,则 转移目标地址=2000H+02H+08H=200AH

位寻址:对片内RAM的20H~2FH字节地址中

的所有位和部分SFR的位进行寻址。 区分指令中是位地址还是存储器单元地址不太

容易,主要是由另一个操作数来区分。 例:SETB EX0 ;EX0 1,位寻址

MOVMOV MOV

C,07H ;C (07H) ,位寻址A,20H ;A (20H) ,直接寻址 C,20H ;C (20H) ,位寻址

3.3 指令系统 指令分类:MCS-51指令系统共有111条指 令,分成5大类: (1)数据传送类 (2)算术运算类 (3)逻辑运算类 (4)控制程序转移类 (5)布尔变量操作(位操作类)

3.4 汇编语言程序设计基础用汇编 语言编 写的源 程序

汇编程序

目标程序

汇编语言是一种采用助记符表示的机器语 言,即用助记符号来代表指令的操作码和 操作数,用标号或符号代表地址、常数或 变量。而助记符一般都是英文单词的缩写, 因此使用方便。这种用助记符编写的程序 称为源程序。

本文来源:https://www.bwwdw.com/article/fg51.html

Top