单片机原理及应用第三章--河海大学--考试自用

3.1汇编语言概述

汇编语言Assembly Language——助记()代替操作码,用地址符号代替地址码的一种面向机器的程序设计语言

3.1.1 汇编语言指令格式

3.1.2 描述操作数的简记符号

---------------------------------------------------------------------------------------------------------------------------------

3.2 MCS-51指令系统简介

3.2.1 寻址方式     

CPU取得操作数的方法称为寻址方法  

51单片机共有七种寻址方式:立即寻址、寄存器寻址、直接寻址、寄存器间接寻址、变址寻址、相对寻址、位寻址。
寻址方式是对操作数存在规律的归纳,一条指令究竟属于哪种寻址方式往往并不重要,也不会影响
它的使用,因而不必过意追究

3.2.2 数据传送与交换类指令

  • RAM:相当于电脑的内存,用于临时存储数据,掉电丢失。

  • ROM:相当于电脑的硬盘,用于永久存储程序和不变量,掉电不丢失。

寄存器寻址


寄存器间接寻址


变址寻址


3.2.3 算术运算类指令

算术运算类指令——可实现加、减、乘、除和增1、减1等运算功能 (21条)

立即寻址

直接寻址


3.2.4 逻辑运算及移位类指令

逻辑运算及移位类指令——可实现与、或、异或、求反、置1、清0、移位等功能34条)

字节运算以A为目的操作数(#datadirect的运算例外),位运算以C为目的操作数。

所有位(1位) 运算指令都把进位标志C作为结果的存放位置

大多数字节(8位) 运算指令都把累加器A作为结果的存放位置。


3.2.5 控制转移类指令

控制转移类指令 ——通过改变程序计数器PC,实现程序转移功能 (22条)

无条件转移

51单片机中不同跳转指令所能寻址的地址范围。这里的"位"指的是指令中用于表示目标地址的二进制位数/这些"位"数决定了该跳转指令能跳多远(寻址范围)

1. LJMP - 16位地址

  • 含义:使用完整的16位地址

  • 寻址范围:0000H ~ FFFFH(整个64KB程序空间)

  • 特点:可以跳转到程序存储器的任何地方

  • 示例

    assembly

    LJMP 1234H    ; 无条件跳转到地址1234H
    LJMP MAIN     ; 跳转到MAIN标号处(无论MAIN在哪里)

    2. SJMP - 8位地址

  • 含义:使用8位偏移量(有符号数)

  • 寻址范围:相对当前PC的-128 ~ +127字节

  • 特点:短距离跳转,常用于循环和条件分支

  • 示例

    assembly

    LOOP:
        MOV A, #55H
        DJNZ R0, LOOP    ; 循环跳转(短距离)
        
        SJMP $           ; 原地跳转($表示当前地址)

相对寻址


rel 指的是相对偏移量,它用于相对转移指令中,表示跳转的相对距离

rel 是一个8位有符号数,表示从下一条指令地址目标地址的偏移量。

取值范围:十进制:-128 ~ +127  十六进制:80H ~ 7FH

跳转地址计算:目标地址 = 当前PC值 + 指令字节数 + rel

其中:

  • 当前PC值:当前指令的地址

  • 指令字节数:当前指令占用的字节数

  • rel:相对偏移量


  1. direct = 直接地址:指定要操作的具体内存位置

  2. 地址范围:00H~FFH(片内RAM和SFR)

  3. 与立即数的区别:没有#号,表示地址而非常数


位寻址


条件转移指令

条件转移指令主要分为以下几类:

  1. 判零转移(JZ, JNZ)     Jump if Zero

  2.  比较转移(CJNE)      Compare and Jump if Not Equal

  3. 循环转移(DJNZ)          Decrement and Jump if Not Zero

  4. 位条件转移(JC, JNC, JB, JNB, JBC等)

1. 基于累加器A的判零转移     Jump if Zero

2. 比较转移指令 CJNE   Compare and Jump if Not Equal
CY应该为隐藏设置,不显现
3. 循环控制指令 DJNZ   Decrement and Jump if Not Zero ( Decrement 减一)


 4. 基于进位标志CY的转移 Jump on Carry

5. 位条件转移


3.2.6 伪指令

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值