51单片机指令系统简析

2014-09-02 09:25汤定德
江科学术研究 2014年3期
关键词:算术初学者存储器

汤定德

(江西科技学院 机械工程学院,江西 南昌 330098)

51单片机指令系统简析

汤定德

(江西科技学院 机械工程学院,江西 南昌 330098)

鉴于单片机指令系统的相对复杂及初学者苦于难以记忆,本文特分类介绍识记51单片机指令的一些基本原则,以便激起初学者对单片机课程的学习兴趣,从而进行更深入的研究。通过教学实践证明,这些识记原则在学生学习中起到了很好的效果。

单片机;指令系统;初学者;原则

1 引言

在科技快速发展的今天,任何设备和产品的自动化、数字化和智能化都离不开单片机[1]。因此,各大高校与电有关的专业都开设了单片机课程,且目前使用最多的是8位51系列单片机[1],其内部逻辑结构相对复杂(如图1所示),但指令系统中的111条指令可按功能大致分为5类:数据传送类指令(29条)、算术运算类指令(24条)、逻辑运算及移位类指令(24条)、控制转移类指令(17条)和位操作类指令(17条)[2]。

在单片机指令系统中,除存储器读/写指令(MOVX、MOVC)涉及单片机外部存储单元外,其余指令所涉及的存储单元均在单片机内部。考虑到单片机指令系统的相对复杂及初学者苦于难以记忆,以致于因此失去对本门课程的学习兴趣(兴趣是最好的老师)而被动学习,本文特分类介绍识记51单片机指令的一些基本原则。

2 数据传送类指令的特点

2.1 基本传送类指令

该指令的助记符为MOV,其基本格式为MOV〈目的操作数〉,〈源操作数〉,对这一格式的传送指令需掌握如下3个原则:

1、只能在内部数据存储器中传送;

2、目的操作数一定是非立即数;

3、两操作数的位数必须相同即对等原则。

2.2 较特殊的传送指令

1、外部数据存储器读写指令

该指令必须包含3个元素,即MOVX、A以及@Ri或@DPTR,且A在前为“读数据”进来,A在后为“写数据”出去。

2、程序存储器读指令

该指令只有两条,即MOVC A,@A+DPTR和MOVC A,@A+PC(必须是将数据读到A中),且对内外程序存储器均一样。

图1 51单片机内部逻辑结构图

3、数据交换指令(XCH、XCHD、SWAP)

该指令中必定是A处于目的操作数位置,且必须是A同内部RAM单元(绝不能是立即数)之间(或A的高、低4位之间)进行内容交换,这与C语言中进行交换必须借助中间变量略有不同,主要是因为单片机内部的“暂存器2”相当于隐形的中间变量,这一点可从图1中看出。

4、堆栈操作指令

该指令只有两个,即“PUSH direct”(进栈)和“POP direct”(出栈),其中的8位直接地址direct(因专用寄存器只能使用直接寻址方式,故在用到时也可以是ACC或其它专用寄存器符号,下同)对应着内RAM单元(如80C51的内部RAM 00H-FFH单元)。

3 运算类指令的特点

图1中算术运算逻辑单元ALU和可位寻址的专用寄存器(累加器ACC、B寄存器、程序状态字PSW),以及两个暂存器(TMP1、TMP2)组成了“运算中心”,而其它寄存器不能直接参与(但可通过暂存器)算术逻辑运算。另外,从图1中各寄存器的相对位置可知,单字节“位运算(移位和逻辑运算)”只会涉及ACC和PSW而B不会参加。

3.1 算术运算类指令的识记

算术运算指令主要指加(ADD、ADDC、INC)减(SUBB、DEC)乘(MUL AB)除(DIV AB)及十进制调整(DA A)指令,其操作数为内RAM单元或立即数,且可分为单操作数类算术运算指令(INC、DEC、“DA A”)和二操作数类算术运算指令(ADD、ADDC、“MUL AB”、“DIV AB”)两种。

1、单操作数类算术运算指令

因“DA A”指令只能对加减法结果(存于A中)进行十进制调整而为固定格式,而INC和DEC后的操作数(因是单操作数运算,故A不一定参加)只要是对应内RAM的单元即可,但无DEC DPTR指令,这是习惯用法。

2、二操作数类算术运算指令

除“MUL AB与DIV AB”为固定格式外,其它指令只要A为目的操作数即可,如ADDC A,#38H。

3.2 逻辑运算及移位类指令的识记

这类指令中的操作数同样为内RAM单元或立即数,其中只有A的单操作数指令包括所有移位指令(RL、RR、RLC、RRC)和整字节清零(CLR A)及取反指令(CPL A)。因它们都相当于“位运算”,故在指令中只能是A,而对于其它逻辑运算指令(ANL、ORL、XRL)中的二操作数使用原则同前述“基本传送类指令”(图1中提示的TMP2的数据来源不一定是A,指的就是二操作数逻辑运算)。

4 控制转移类指令的特点

控制转移类指令包括无条件转移指令和条件转移指令,而真正意义上的无条件转移指令助记符应该包括LJMP、AJMP、SJMP、JMP、ACALL和LCALL,其中除“JMP@A+DPTR”为固定格式外,其余的指令助记符后均跟不同位数的地址,但在编程使用中都是以标号代替。

条件转移指令可分为单操作数指令(JZ/JNZ rel)、二操作数指令(DJNZ Rn/direct,rel)和三操作数指令(“CJNE A/Rn/@Ri,#data,rel”和“CJNE A,direct,rel”),且其中的“相对地址rel”在编程使用中均以标号代替(下同)。

5 位操作类指令的特点

这类指令中的操作数除转移类指令中的“相对地址rel”外,一定是内RAM中可位寻址单元中的某一位,因“位运算”的结果主要存在PSW中(如图1所示),故位操作类指令中只能出现C和位地址“bit”。具体如下:

1、位传送指令(MOV C,bit和MOV bit,C)

该指令中必须得出现C。

2、位“置1”(SETB C/bit)、“清0”(CLR C/bit)和“取反”(CPL C/bit)指令

均为单操作数指令。

3、二操作数位逻辑运算指令(ANL/ORL C,bit)

该指令的目的操作数须为C且格式固定。

4、位控制转移指令

分单操作数指令(JC/JNC rel)和双操作数指令(JB/JBC/JNB bit,rel),其中的“JBC bit,rel”指令比较特殊且使用较多(查询用),即程序发生转移的同时使“bit”对应位内容清零。

6 结论

本文介绍了51单片机(以80C51为例)各类指令的显著特点,以便初学者识记并灵活应用,从而激起对单片机课程的学习兴趣并进行深入研究。教学实践证明,指令系统的基本原则对学生效果明显,相信能为智能化时代的尽早到来创造可能。

[1]李广弟.单片机基础(第3版)[M].北京:北京航空航天大学出版社,2007.

[2]李勋,等.单片机实用教程(第2版)[M].北京:北京航空航天大学出版社,2006.

[3]何立民.单片机高级教程:应用与设计(第2版)[M].北京:北京航空航天大学出版社,2007.

[4]胡锦,等.单片机技术实用教程[M].北京:高等教育出版社,2003.

(责任编辑:陈 辉)

A Brief Analysis of the 51 Single-chip Microcomputer System

TANG Ding-de
(Mechanic Engineering School,Jiangxi University of Technology,Nanchang 330098,China)

In view of the relatively complex instruction system of the single-chip Microcomputer(SCM),the beginners are hard to memorize it.This article introduces the classification of some basic principles to memorize the instructions of 51SCM.It aims to arouse the beginners'interests to learn the SCM course,and do some further studies.It has been proved through the practice of teaching that these principles of memorizing have a good effect on students'learning.

single-chip microcomputer;instruction system;beginner;principles

TP36

A

123(2014)03-0058-03

2014-01-15

汤定德(1977-),男,江西万年人,江西科技学院机械工程学院,讲师,硕士。研究方向:电力电子技术。

猜你喜欢
算术初学者存储器
静态随机存储器在轨自检算法
初学者,赶紧看过来
算算术
浅谈如何提高初学者的钢琴演奏能力
学算术
初学者如何临写《九成宫醴泉路》
小狗算算术
做算术(外一则)
给会计初学者的几点实用性建议
存储器——安格尔(墨西哥)▲