单片机----汇编语言入门知识点

这篇具有很好参考价值的文章主要介绍了单片机----汇编语言入门知识点。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

汇编语句的格式

汇编语句的两个基本语句

子程序的调用

查表程序设计

1.x和y均为单字节数的查表程序设计

2.x为单字节数y为双字节数的查表程序设计

3.x和y均为双字节数的查表程序设计

分支转移程序设计

1.单分支选择结构

2.多分支选择结构

循环程序设计

(1) 计数循环控制结构

(2) 条件控制结构


高级语言--->汇编语言---->机器语言

一条高级语言可能对应多条汇编语言,但是汇编语言指令与机器语言是一一对应的关系

机器语言与汇编语言合称为机器级代码

“汇编”:汇编语言源程序需转换(翻译)成为二进制代码表示的机器语言程序,才能识别和执行。
完成“翻译”的程序称为汇编程序。经汇编程序“汇编”得到的以“0”“1”代码形式表示的机器语言程序称为目标程序。
优点:

用汇编语言编写程序效率高,占用存储空间小,运行速度快,能编写出最优化的程序。
缺点:

可读性差,离不开具体的硬件,是面向“硬件”的语言通用性差。

汇编语句的格式

单片机 汇编语言,单片机,单片机,嵌入式硬件,汇编语言,笔记

标号字段操作码字段之间要有冒号“:”分隔;

操作码字段操作数字段间的分界符是空格;

双操作数之间用逗号相隔;

操作数字段注释字段之间的分界符用分号”;“

任何语句都必须有操作码字段,其余各段为任选项。

单片机 汇编语言,单片机,单片机,嵌入式硬件,汇编语言,笔记

特别说明:

1.标号
语句所在地址的标志符号,才能被访问。如标号“START”和“LOP”等。有关标号规定如下:
(1) 标号后必须跟冒号”:“

(2)标号由1~8个ASCII码字符组成,第一个字符必须是字母

(3) 同一标号在一个程序中只能定义一次,不能重复定义。

(4)不能使用汇编语言已经定义的符号作为标号,如指令助记符、伪指令以及寄存器的符号名称等。
5)标号的有无,取决于本程序中的其他语句是否访问该条语句。如无其他语句访问,则该语句前不需标号。

2.操作数

(1) 十六进制、二进制和十进制形式的操作数表示

•操作数或操作数地址若是采用十六进制形式来表示的。则需加后缀“H”

•在某些特殊场合用二进制表示,需加后缀“B”

•若操作数采用十进制形式,则需加后缀“D”也可省略

•若十六进制操作数以字符A~F开头,需在它前面加一个 “0”,以便汇编时把它和字符A~F区别开。

(2) 工作寄存器和特殊功能寄存器的表示
当操作数为工作寄存器或特殊功能寄存器时,允许用工作寄存器和特殊功能寄存器的代号表示。
例如,工作寄存器用R7~R0,累加器用A(或Acc)表示。另外,工作寄存器和特殊功能寄存器也可用其地址来表示,如累加器A可用其地址EOH来表示

汇编语句的两个基本语句

指令语句:

每一指令语句在汇编时都产生一个指令代码(机器代码)执行该指令代码对应着机器的一种操作。

伪指令语句:

是控制汇编(翻译)过程的一些控制命令。在汇编时没有机器代码与之对应。

1.ORG

单片机 汇编语言,单片机,单片机,嵌入式硬件,汇编语言,笔记

单片机 汇编语言,单片机,单片机,嵌入式硬件,汇编语言,笔记

2.END(END of Assembly)

源程序结束标志,终止源程序的汇编工作。整个源程序中只能有一条END命令,且位于程序的最后。如果END出现在程序中间,其后的源程序将不进行汇编处理。

3.DATA数据地址赋值伪指令

格式:(字符名称)DATA(表达式)

如:AT Data 05H,表示将05H这个地址赋给AT

功能:将数据地址活代码地址赋予规定的字符名称

4.EQU(EQUate)标号赋值命令

用于给标号赋值。赋值后,标号值在整个程序有效
例如: TEST:EQU 2000H,表示TEST=2000H,汇编时,凡是遇到TEST时,均以2000H来代替

5.DB(Define Byte)定义数据字节命令

单片机 汇编语言,单片机,单片机,嵌入式硬件,汇编语言,笔记

DB功能是从指定单元开始定义(存储)若干字节,十进制自然转换成十六进制,字母按ASCLL码进行存储。

6.DW (Define Word) 定义数据字 (双字节) 命令

该命令用于从指定的地址开始,在程序存储器的连续单元中定义16位的数据字。例如:单片机 汇编语言,单片机,单片机,嵌入式硬件,汇编语言,笔记

单片机 汇编语言,单片机,单片机,嵌入式硬件,汇编语言,笔记

7. DS ( Define Storage)定义存储区命令

单片机 汇编语言,单片机,单片机,嵌入式硬件,汇编语言,笔记

注意:DB,DW和DS命令只能对程序存储器有效,不能对数据存储器使用。

8.BIT位定义命令

用于给字符名称赋以位地址,位地址可以是绝对位地址,也可是符号地址。例如:

单片机 汇编语言,单片机,单片机,嵌入式硬件,汇编语言,笔记

子程序的调用

•子程序的入口地址,前必须有标号。
•主程序调用子程序,是通过调用指令来实现。有两条子程序调用指令

(1) 绝对调用指令ACALL addr11。双字节,addr11指出了调用的目的地址,PC中16位地址中的高5位不变,被调用的子程序的首地址与绝对调用扑令的下一条指令的高5位地址相同,即只能在同一个2KB区内。
(2) 长调用指令LCALL addr16。三字节,addr16为直接调用的目的地址子程序可放在64KB程序存储器区任意位置。

•子程序结构中必须用到堆栈,用来进行断点和现场的保护。
•子程序返回主程序时,最后一条指令必须是RET指令,功能是把堆栈中的断点地址弹出送入PC指针中,从而实现子程序返回后从主程序断点处继续执行主程序。
•子程序可以嵌套,即主程序可以调用子程序,子程序又可以调用另外的子程序。

例如:

单片机 汇编语言,单片机,单片机,嵌入式硬件,汇编语言,笔记

查表程序设计

查表程序是一种常用程序,避免复杂的运算或转换过程,可完成数据补偿修正、计算、转换等各种功能,具有程序简单、执行速度快等优点。
查表是根据自变量x,在表格寻找y,使y =f()。单片机中,数据表格存放于程序存储器内,在执行查表指令时,发出读程序存储器选通脉冲 。两条极为有用的查表指令如下:

(1)MOVC A,@A+DPTR

(2)MOVC A,@A+PC

两条指令的功能完全相同,具体使用有差别。
指令“MOVC A,@AYDPTR”:把A中内容与DPTR中的内容相加,结果为某程序存储单元的地址,然后把该地址单元的内容送到A中。
指令“MOVC A,@A+PC”,PC的内容与A的内容相加后所得的数作为某程序存储器单元的地址,根据地址取出程序存储器相应单元中的内容送到累加器A,指令执行后,PC的内容不发生变化,仍指向该查表指令的下条指令。

优点:在于预处理较少且不影响其他特殊功能寄存器的值,不必保护其他特殊功能寄存器

缺点:在于该表格只能存放在这条指令的地址X3X2X1X0以下00H~FFH之中,即只能存放在地址范围X3X2X1X0+1~X3X2X1X0+100H中,这就使得表格所在的程序空间受到了限制。
 

查表程序示例:

1.x和y均为单字节数的查表程序设计

设计一子程序,功能是根据累加器A中的数x(0~9之间)查x的平方表,根据x的值查出相应的平方。本例中的x和为单字节数。

单片机 汇编语言,单片机,单片机,嵌入式硬件,汇编语言,笔记

第一条指令“ADD A,#01H”的作用是A中的内容加上“01H”,“01H为查表的偏移量,即查表指令与平方表之间的所有指令所占的字节数。这里的指令为“RET”,为单字节指令。加上“01H”后,可保证PC指向表首累加器A中原来的内容反映的仅是从表首开始向下查找多少个单元。
在进入程序前,A的内容在00~09H之间,如A中的内容为02H,它的平方为04H,可根据A的内容查出x的平方

由于“MOVC A,@A+DPTR”不必计算偏移量,一般情况下,大多使用该指令。不必计算偏移量,优点是表格可以设在64KB程序存储器空间内的任何地方,而不像“MOVC A,@A+PC”那样只设在PC下面的256个单元中所以使用较方便。

注:如果DPTR已被使用,则在查表前必须保护DPTR,且结束后恢复DPTR。

单片机 汇编语言,单片机,单片机,嵌入式硬件,汇编语言,笔记

2.x为单字节数y为双字节数的查表程序设计

单字节一查双多字节的地址确定:
设单字节长度X,双字节长度Y
TAB为表首地址。
存储单元的地址与X有关,为:
第一个字节: TAB+2x
第二个字节: TAB+2x+1

单片机 汇编语言,单片机,单片机,嵌入式硬件,汇编语言,笔记

3.x和y均为双字节数的查表程序设计

双字节一查双多字节的地址确定:设双字节长度X,双字节长度Y,TAB为表首地址。存储单元的地址与X有关,为:第一个字节: TAB+2x        第二个字节: TAB+2x+1

单片机 汇编语言,单片机,单片机,嵌入式硬件,汇编语言,笔记

分支转移程序设计

分为无条件转移和有条件转移
无条件分支转移程序很简单,不讨论。有条件分支转移程序按结构类型来分,又分为单分支选择结构和多分支选择结构。


1.单分支选择结构

仅有两个出口,两者选一。一般根据运算结果的状态标志,用条件判跳指令来选择并转移。
[例3-17] 求单字节有符号数的二进制补码
正数补码是其本身,负数补码是其反码加1。因此,应首先判被转换数的符号,负数进行转换,正数本身即为补码。

单片机 汇编语言,单片机,单片机,嵌入式硬件,汇编语言,笔记

程序如下:

单片机 汇编语言,单片机,单片机,嵌入式硬件,汇编语言,笔记

单分支选择结构还有以下几种形式

单片机 汇编语言,单片机,单片机,嵌入式硬件,汇编语言,笔记

2.多分支选择结构

当程序的判别部分有两个以上的出口时,为多分支选择结构。

单片机 汇编语言,单片机,单片机,嵌入式硬件,汇编语言,笔记

指令系统中的两种多分支选择指令:

单片机 汇编语言,单片机,单片机,嵌入式硬件,汇编语言,笔记

多分支语句的示例:

单片机 汇编语言,单片机,单片机,嵌入式硬件,汇编语言,笔记

单片机 汇编语言,单片机,单片机,嵌入式硬件,汇编语言,笔记

根据寄存器R2的内容,转向各个处理程序PRGX(X=0~n)

单片机 汇编语言,单片机,单片机,嵌入式硬件,汇编语言,笔记

单片机 汇编语言,单片机,单片机,嵌入式硬件,汇编语言,笔记

注:R2中的分支转移参量乘3是由于长跳转指令LJMP要占3个单元

循环程序设计

主要由以下四部分组成。
(1 循环初始化
完成循环前的准备工作。例如,循环控制计数初值的设置、地址指针的起始地址的设置、为变量预置初值等。
(2) 循环处理
完成实际的处理工作,反复循环执行的部分,故又称循环体。
(3) 循环控制
在重复执行循环体的过程中,不断修改循环控制变量,直到符合结束条件就结束循环程序的执行。

循环结束控制方法分为循环计数控制法和条件控制法
(4) 循环结束
这部分是对循环程序执行的结果进行分析、处理和存放

单片机 汇编语言,单片机,单片机,嵌入式硬件,汇编语言,笔记

(1) 计数循环控制结构

依据计数器的值来决定循环次数,一般为减1计数器,计数器减到“0”时结束循环。计数器初值在初始化设定。
MCS-51指令系统提供了功能极强的循环控制指令:
DJNZ Rn, rel ; 以工作寄存器作控制计数器
DJNZ direct, rel ; 以直接寻址单元作控制计数器

单片机 汇编语言,单片机,单片机,嵌入式硬件,汇编语言,笔记

单片机 汇编语言,单片机,单片机,嵌入式硬件,汇编语言,笔记

用寄存器R2作为计数控制变量,R0作为变址单元,用它来寻址xi。一般来说,循环工作部分中的数据应该用间接方式来寻址,如这里用:   ADD A,@RO
计数控制只有在循环次数已知的情况下才适用。循环次数未知,不能用循环次数来控制,往往需要根据某种条件来判断是否应该终止循环

(2) 条件控制结构

循环控制中,设置一个条件,判是否满足该条件,如满足,则循环结束。如不满足该条件则循环继续。

单片机 汇编语言,单片机,单片机,嵌入式硬件,汇编语言,笔记

采用逐个字符依次与“0AH”比较(设置的条件)的方法。设置一个累计字符串长度的长度计数器和一个用于指定字符串指针。

如果字符与“OAH”不等,则长度计数器和字符串指针都加1:如果比较相等则表示该字符为“0AH”,字符串结束,计数器值就是字符串的长度。

单片机 汇编语言,单片机,单片机,嵌入式硬件,汇编语言,笔记

上面两例都是在一个循环程序中不再包含其他循环程序,则称该循环程序为单循环程序。如果一个循环程序中包含了其他循环程序,则称为多重循环程序


最常见的多重循环是由DJNZ指令构成的软件延时程序,是常用程序之一。

[例] 50ms延时程序。

软件延时程序与指令执行时间有很大的关系。在使用12MHz晶振时,一个机器周期为1μs,执行一条DJNZ指令的时间为2us。可用双重循环方法的延时50ms程序:

单片机 汇编语言,单片机,单片机,嵌入式硬件,汇编语言,笔记

以上延时程序不是太精确,如把所有指令的执行时间计算在内,它的延时时间为
[1+ (1+250+2) X 200+2]us=50.603ms
如要求比较精确的延时,应对上述程序进行修改,才能达到较为精确的延时时间。但要注意,用软件实现延时程序,不允许有中断,否则将严重影响定时的准确性。
对于延时更长的时间,可采用多重的循环,如1s延时,可用三重循环文章来源地址https://www.toymoban.com/news/detail-861395.html

到了这里,关于单片机----汇编语言入门知识点的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 单片机 STM32启动文件详解(汇编语言解析)

    以前讲了固件库,从ST官网下载的固件库里面,有许多的启动文件(汇编语言写的.s文件) 启动文件 说明 startup_stm32f10x_ld.s Low Density 小容量 startup_stm32f10x_md.s Medium Density 中容量 startup_stm32f10x_hd.s High Density 高容量 startup_stm32f10x_xl.s Extra Large Density 超大容量 startup_stm32f10x_cl.s Con

    2023年04月25日
    浏览(16)
  • 汇编语言实现C51单片机点亮流水灯

    P0作输出口,接8只发光二极管,编写程序实现二极管循环点亮 二极管为共阳极连接时,即二极管正极已接通电源,单片机输出接阴极,所以单片机输出为低电平有效。 所以为实现二极管轮流点亮,单片机的输出应为:0FEH,0FDH,0FBH,....0FEH,每输出一种状态,需要延时0.1us. 最后在

    2024年02月06日
    浏览(16)
  • 51单片机8位数码管计时器(汇编语言)

    使用8位数码管实现时间的显示,进位等操作 使用汇编语言完成作业 寻址 汇编语言的一些基本寻址操作 需要理解用法和含义 中断 实现计时器需要使用中断来完成延时 如果使用循环延迟的话,在计时过程中处理器不能进行其他操作 位码 设置具体的显示位,如 00H 是数码管的第一

    2023年04月08日
    浏览(14)
  • 8086 汇编语言知识点梳理

    机器语言是机器指令的集合 机器指令是一台机器可以正确执行的命令 机器指令由一串二进制数表示 汇编语言的主体是汇编指令 汇编指令是机器指令便于记忆的书写格式 汇编指令是机器指令的 助记符 汇编指令:机器码的助记符,有对应的机器码 伪指令::没有对应的机器

    2024年02月08日
    浏览(13)
  • 汇编三、51单片机汇编指令1

    (1)举例:将立即数0x30送入累加器A               MOV       A,              #0x30 标号       操作码      目标地址,数据源                  ;注解 (2)标号,注解可选项,不一定有。 (1)指令执行时间为指令周期,一条指令需要1~4个机器周期。 (2)指令存储空间:指令转

    2024年02月03日
    浏览(16)
  • 汇编十四、51单片机汇编代码规范

    (1)提高源程序的质量和可维护性,从而提高生产力。 (1)常量C;  (2)变量R;  (3)位变量B; (4)标号L; (5)子程序F;  (6)表T;  (7)中断T; (8)函数F... 举例:F_UartSendByte (1)ORG (2)END (3)EQU (4)BIT (5)DS (1)寄存器不能嵌套使用 (2)中断服务程序切换寄存器区(RS0,RS1),这样保护现场就不用保

    2024年02月07日
    浏览(37)
  • 单片机指令合集(汇编)

    (1)数据传送类指令(7种助记符)         MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送;         MOVC(Move Code)读取程序存储器数据表格的数据传送;         MOVX (Move External RAM) 对外部RAM的数据传送;         XCH (Exchange) 字节

    2024年02月04日
    浏览(16)
  • 单片机汇编延时程序算法详解

    在单片机编程中,延时程序是一项常见的任务。它用于控制程序在执行期间暂停一段时间,以实现特定的时间延迟。延时程序在许多应用中都非常有用,例如控制LED的闪烁频率、定时器的计时等。本文将详细介绍单片机汇编语言中延时程序的算法,并提供相应的源代码。 延时

    2024年02月04日
    浏览(16)
  • 51单片机定时器实验(汇编)

    基于AT89C51的定时器实验,汇编语言,分享出来是希望各位能共同学习。附上注释希望能认真研究,若有错误请指出,谢谢。 一、实验目的 掌握单片机定时器的使用方法。 掌握中断的使用方法。 二、实验内容 采用中断方式控制定时器。使得单片机P1.0引脚产生周期为1S的方波

    2024年02月11日
    浏览(20)
  • MSP430单片机C语言编程与实践(入门篇)之一 ----MSP430单片机简介和LaunchPad开发板

    1.1  MSP430单片机的架构        单片机是一个综合的模拟和数字系统,根据其丰富的片上资源,再添加一些外围电路,通过软件编程后就可以完成检测、控制等任务,形成一个实用的电子装置或设备。 MSP430 是美国德州仪器公司(TI,Texas Instruments)推出的系列单片机,因其超

    2024年03月18日
    浏览(17)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包