汇编语言基础

发布者:书卷气息最新更新时间:2013-05-04 来源: 21IC关键字:汇编语言  80C51  指令系统 手机看文章 扫描二维码
随时随地手机看文章

通过前面的学习,我们对单片机的硬件结构已有了一定的了解,下面,我们将与大家一起来学习单片机的汇编指令系统。

所谓指令,就是规定计算机进行某种操作的命令。计算机按程序一条一条地依次执行指令,从而完成指定任务。一条指令只能完成有限的功能,为使计算机完成一定的或者复杂的功能,就需要一系列指令。

一般来说,一台计算机的指令越丰富,寻址方式越多,且每条指令的执行速度越快,则它的总体功能就越强。

程序设计语言:机器语言,汇编语言,高级语言

我们学习的80C51单片机共有111条指令,这111条指令共有七种寻址方式。其中:

数据传送类指令 29条

算术运算类指令 24条

逻辑运算及移位类指令 24条

控制转移类指令 17条

位操作指令 17条

这111条指令的具体功能我们在后面的课程中将会逐条的与大家进行分析。

由于计算机只能识别二进制数,所以计算机的指令均由二进制代码组成。为了阅读和书写的方便,常把它写成十六进制形式,通常称这样的指令为机器指令。现在一般的计算机都有几十甚至几百种指令。显然即便用十六进制去书写和记忆也是不容易的,为了便于记忆和使用的方便,制造厂家对指令系统的每一条指令都给出了助记符。

助记符是根据机器指令不同的功能和操作对象来描述指令的符号。由于助记符是用英文缩写来描述指令的特征,因此它不但便于记忆,也便于理解和分类。这种用助记符形式来表示的机器指令称为汇编语言指令。汇编语言有如下特点:

① 助记符指令和机器指令一一对应,所以用汇编语言编写的程序效率高,占用存储空间小,运行速度快,因此汇编语言能编写出最优化的程序。

② 使用汇编语言编程比使用高级语言困难。因为汇编语言是面向计算机的,汇编语言的程序设计人员必须对计算机硬件有相当深入的了解。

③ 汇编语言能直接访问存储器及接口电路,也能处理中断,因此汇编语言程序能直接管理和控制硬件设备。④ 汇编语言缺乏通用性,程序不易移植,各种计算机都有自己的汇编语言,不同计算机的汇编语言之间不能通用。

汇编指令的格式MCS-51汇编语言的语句格式表示如下:

〔<标号>〕:<操作码>〔<操作数>〕;〔<注释>〕

即一条汇编语句是由标号、操作码、操作数和注释四个部分所组成,其中方括号括起来的是可选择部分,可有可无,视需要而定。

指令通常两部份组成:操作码、操作数

操作码:是由助记符表示的字符串,操作码其实就是告诉我们这条指令是起什么样的一个功能,是加?减?传送?还是控制?等等。

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

注释:为了便于我们阅读程序,通常我们在指令的后面都会加上注释。

标号:用来表示子程序名称或程序执行条件跳转时的程序跳转地址,实际上是表示一个地址值。

在80C51指令系统中,操作数可以是1、2、3个,也可以没有。不同功能的指令,操作数作用也不同。

例如,传送类指令多数有两个操作数,写在左面的称为目的操作数(表示操作结果存放的单元地址),写在右面的称为源操作数(指出操作数的来源)。[page]

操作码与操作数之间必须用空格分开,操作数与操作数之间必须用逗号“,”分开。带方括号的项可有可无,称为可选项。

由指令格式可见,操作码是指令的核心,不可缺少。例如一条传送指令的书写格式如为:MOV A,3AH ;(3AH)A它表示将3AH存储单元的内容送到累加器A中。

指令的长度所谓指令的长度,就是描述一条指令所需要的字节数,用一个字节能描述的指令我们叫1字节指令,同理,用两个字节描述的叫2字节指令,用三个字节描述的指令就叫3字节指令。

在这里我们对80C51的111条指令进行了分类:1字节指令共有49条,2字节指令共有45条,3字节指令共有17条,到底哪条指令是1字节、2字节或者3字节指令,在我们后面的指令表中都可以查阅到的。这里有一个问题请大家引起注意,在前面的课程中,我们学习过指令计数器PC,PC是一个16位的计数器,那么这个指令计数器是怎样来计数的呢?

我们的指令有1字节、2字节、3字节指令。是不是每执行一个字节,这个指令计数器PC就自动加1?答案是错误的!!实际上,PC始终是跟踪着指令的,并不是以字节数来相加。在我们存放程序的ROM中,是一个字节一个字节的向后执行,但程序计数器PC并不是每加一个字节就加1,它是对特定的某一条指令执行完了之后,相应的程序计数器PC才加1,那么这条指令可能是1个字节,也可能是2个或者3个字节。这个大家要引起重视。

在学习指令系统时,先要了解某些符号的意义,现说明如下:

Rn :当前选中的工作寄存器组R0-R7(n=0-7)。它在片内数据存储器中的地址由PSW中的RS1和RS0确定,可以是00H-07H(第0组)、08H-0FH(第1组)、10H-17H(第2组)、18H-1FH(第3组)。

Ri :当前选中的工作寄存器组中可作为地址指针的两个工作寄存器R0和R1(i=0或i=1)。它在片内数据存储器中的地址由RS0及RS1确字,分别为00H、01H;08H、09H;10H、11H;18H、19H。

Direct :8位片内RAM单元(包含SFR)的直接地址

#data :代表指令中8位的常量数据

#data16 :代表指令中16位的常量数据

addr16 :LCALL与LJMP所使用的16位目的地址

addr11 :ACALL与AJMP所使用的11位目的地址

rel :指程序遇条件跳跃时的相对地址,往前最多可以跳128个字节,往后最多可以跳127个字节。

bit :特殊目的寄存器或内部数据RAM中可直接寻址的位。

@ :间接寻址方式中,表示间址寄存器的符号

/ :位操作指令中,表示对该位先取反再参与操作,但不影响该位原值。

X :片内RAM的直接地址或寄存器

(X) :在址接寻址方式中,表示直接地址X中的内容;在间接寻址方式中,表示由间址寄存器X指出的地址单元中的内容。

→ :指令操作流程,将箭头左边的内容送入箭头右边的单元内。

← :指令操作流程,将箭头右边的内容送入箭头左边的单元内。

关键字:汇编语言  80C51  指令系统 引用地址:汇编语言基础

上一篇:一种高精度超声波测距系统研究
下一篇:MCS-51单片机引脚功能介绍

推荐阅读最新更新时间:2024-03-16 13:22

51单片机学习笔记——基于汇编语言(1)
该系列文章基于80C51单片机,Keil2(这个版本是比较古老,不过keil2和keil5其实区别不大) 1、80C51系列单片机硬件结构 在开始讲单片机之前,相信大家已经对进制转换与码值已经有了一定的了解,如果完全没学过,可以随便弄本C语言啥的书,一般应试教育的计算机入门类教材第一章都会讲这个2333。 学单片机我们就要先了解一下它的硬件结构 1.1 内部结构 单片机的硬件组成有 1、1个8bit的CPU 2、1个片内振荡器和时钟电路 3、程序存储器,4KB(其实我用的有64K,相信大部分人也是,4k估计是Intel原始设计)的掩膜ROM,用于存放程序、原始数据和表格 4、数据存储器 5、64KB总线扩展控制器(
[单片机]
51单片机学习笔记——基于<font color='red'>汇编语言</font>(1)
STM8与汇编语言(12)--EEPROM应用
在单片机的应用系统中,经常会用到EEPROM,用来保存一些掉电后仍然需要保存的数据。传统的方法是在单片机外再加一个EEPROM芯片,这种方法除了增加成本外,也降低了可靠性。现在,许多单片机芯片公司也都推出了集成有小容量EEPROM的单片机,降低了成本,提高了可靠性。 STM8单片机芯片内部也集成有EEPROM,容量从640字节到2K字节。最为关键的是,在STM8单片机中,访问EEPROM就向访问常规的内存一样,非常方便。EEPROM的地址空间与内存是统一编址的,地址从004000H开始,大小根据不同的芯片型号而定。 如果我们要读出EEPROM中的第一个单元的内容,则只要执行LD A,$4000这条指令,就可以将EEPROM
[单片机]
PIC单片机的各种汇编语言指令的用法解析
工作以来一直使用ST的单片机,其他的单片机虽大致了解但从未认真看过,近几日恰好无事,决定熟悉一下PIC的单片机,于是想将自己从网上或这书本上的东西转下来,予以同一样的初学者共同参考。 PIC的指令系统 PIC 8位单片机共有三个级别,有相对应的指令集。基本级PIC系列芯片共有指令33条,每条指令是12位字长;中级PIC系列芯片共有指令35条,每条指令是14位字长;高级PIC系列芯片共有指令58条,每条指令是16位字长。其指令向下兼容。 一、PIC汇编语言指令格式 PIC系列微控制器汇编语言指令与MCS-51系列单片机汇编语言一样,每条汇编语言指令由4个部分组成,其书写格式如下: 标号 操作码助记符 操作数1,操作数2;注释
[单片机]
PIC单片机的各种<font color='red'>汇编语言</font>指令的用法解析
c51与汇编语言的接口
1.c51与汇编语言的模块内接口 有时候,需要使用 汇编语言 来编写程序,比如对硬件进行操作或在一些对时钟要求很严格的场合,但又不希望用汇编语言来编写全部程序或调用汇编语言编写的函数,那么可以通 过预编译指令 asm',在C代码中插入汇编代码。 方法是用#pragma语句。具体结构是: #pragma asm 汇编行 #pragma endasm 这种方法是通过#pragma asm和#pragma endasm告诉c51编译器,中间行不用编译为汇编行。例如: 2.c51与汇编语言的模块间接口 C51模块与汇编语言模块的接口较简单,分别用C5l与A51对源文件进行编译,然后用L51连接obj文件即可。模块
[单片机]
AVR单片机高精度延时程序汇编语言 可以直接使用
波特率为7.3728MHZ 延时1ms,精度误差为10us ;******************************** delay_1ms: ldi r27,41 delay_11: ldi r28,35 delay_22: nop nop dec r28 brne delay_22 dec r27 brne delay_11 ret ;***************************
[单片机]
80c51是几位单片机 80c51单片机有几个中断源
  80c51是几位单片机   80C51是一种8位微处理器,也被称为8051,由Intel公司推出。它是最早的商用单片机之一,由于它的简单易用、灵活可靠,被广泛应用于许多嵌入式系统中。在80C51系列中,最常见的型号包括AT89C51和AT89S52等。   80c51单片机寻址范围有多少   80C51单片机的寻址范围取决于其具体的型号和存储器结构。在最常见的AT89C51和AT89S52型号中,其寻址范围如下:   内部RAM寻址范围:0x00-0x7F(128字节)   内部ROM寻址范围:0x0000-0xFFFF(64KB)   特殊功能寄存器(SFR)寻址范围:0x80-0xFF(128字节)   外部扩展RAM
[单片机]
采用汇编语言的BCH解码校验算法
在信号传输中,BCH码被广泛应用于动态的实时无线通信中,而底层的单片机级信号传输往往只采用奇偶校验等简单方法。本文结合一些测控系统和监控系统的开发,提出一种用汇编语言实现BCH解码校验的算法,该算法包括BCH码的差错检验、差错查找和差错纠正,并给出相关的主程序和子程序及说明。 关键词 汇编语言 BCH码 伽罗华域 解码校验   在信号传输中,BCH码以其独特的优点被广泛应用于微机级的通信中,但因其算法复杂,通常只用在动态实时的无线通信中,而对更底层的单片机级的信号传输纠错,往往只采用奇偶校验等简单的校验方法。本文结合一些测控系统和监控系统的开发,摸索出了在实时动态单片机中的BCH解码检纠方法,并通过汇编语言加以实现,取得了一
[工业控制]
采用<font color='red'>汇编语言</font>的BCH解码校验算法
51单片机汇编语言带借位减法指令(4条)
这组 指令 包含立即数、直接地址、间接地址及工作寄存器与累加器A连同借位位C内容相减,结果送回累加器A中。 这里我们对借位位C的状态作出说明,在进行减法运算中,CY=1表示有借位,CY=0则无借位。OV=1声明带符号数相减时,从一个正数减去一个负数结果为负数,或者从一个负数中减去一个正数结果为正数的错误情况。在进行减法运算前,如果不知道借位标志位C的状态,则应先对CY进行清零操作。 SUBB A,data ;(A)-(data) - (C)→(A) 累加器A中的内容与直接地址单元中的内容、连同借位位相减,结果存在A中 SUBB A,#data ;(A)-#data -(C)→(A) 累加器A中的内容与立即数、连同借位位相减
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved