汇编语言与寻址方式

文章目录

    • 汇编语言与寻址方式
  • 汇编语言
    • 指令和程序设计语言
    • 指令格式
  • 寻址方式
    • 寄存器寻址(工作寄存器R0~R7、A、B、C、DPTR)
    • 直接寻址(片内RAM低128B、特殊功能寄存器)
    • 立即数寻址(程序存储器ROM)
    • 寄存器间接寻址(片内RAM低128B、片外RAM)
    • 变址寻址(程序存储器(@A+PC,@A+DPTR))
    • 相对寻址(程序存储器256B范围(PC+偏移量))
    • 位寻址(片内RAM的20H~2FH字节地址、部分SFR)
  • 符号
  • 89C51指令系统
  • 总结

汇编语言

指令和程序设计语言

指令:是CPU根据人的意图来执行某种操作的命令
程序设计语言:实现人机交换信息的基本工具,分为机器语言、汇编语言和高级语言

  • 机器语言:用二进制编码表示每条指令,是计算机能直接识别和执行的语言
  • 汇编语言:是用助记符、符号和数字等来表示指令的程序设计语言。它与机器语言指令是一一对应的

指令格式

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

汇编语言指令对应的二进制代码格式

  • 单字节指令
  • 双字节指令
  • 三字节指令

寻址方式

寄存器寻址(工作寄存器R0~R7、A、B、C、DPTR)

指令指出寄存器组R0~R7中某一个或其他寄存器(A、B、DPTR等)的内容作为操作数

MOV A,R0;    (R0)→A
MOV P1,A;   (A)→P1口
ADD A,R0;   (A)+(R0)→A

直接寻址(片内RAM低128B、特殊功能寄存器)

在指令中直接给出操作数所在的存储单元的地址,指令在操作数部分是操作数所在的地址
直接寻址方式可以访问片内RAM的128个单元以及所有的SFR。对于SFR,既可以使用它的地址,也可以使用你它的名字

MOV A,3AH;   (3AH)→A
MOV A,P1;   (P1口)→A或MOV A,90H;  90H是P1口的地址

立即数寻址(程序存储器ROM)

指令操作码后紧跟的是一字节或者两字节操作数。用“#”表示,以区别直接地址

MOV A,3AH;   (3AH)→A
MOV A,#3AH; 3AH→A

寄存器间接寻址(片内RAM低128B、片外RAM)

操作数事先存放在某个寄存器中,寄存器间接寻址是把指定寄存器的的内容作为地址,由该地址所指的单元格作为操作数

变址寻址(程序存储器(@A+PC,@A+DPTR))

以某个寄存器的内容为基地址,在这个及地址的基础上加上地址偏移量形成真正的操作数地址。用变址寻址的方式只能访问程序存储器

相对寻址(程序存储器256B范围(PC+偏移量))

以当前的PC值加上指令中规定的偏移量rel而形成实际的转移地址。

 目的地址=源地址+2(相对转移指令字节数)+rel

位寻址(片内RAM的20H~2FH字节地址、部分SFR)

采用位寻址方式的指令操作数是8位二进制中的某一位,指令中给出的是位置。位地址在指令中用bit表示

CLR bit

位地址的两种表示方法

  • 直接使用位地址,如D3H
  • 直接使用给寄存器名字加位数,如PSW.3

位寻址区域被:片内RAM的20H-2返回的16个单元中的128位;字节地址能被8整除的SFR

符号

  • Rn(n=0~7):当前选中的工作寄存器组R0 ~ R7
  • Ri(i=0,1):作为地址指针的两个工作寄存器R0,R1
  • #data:即8位立即数
  • #data:即16位立即数
  • direct:8位片内RAM单元(包括SFR)的直接地址
  • addr11:11位目的地址,用于ACALL和AJMP指令中
  • addr16:16位目的地址,用于ACALL和AJMP指令中
  • rel:补码中表示的8位地址偏移量。范围:-128~+127D
  • bit:片内RAM或SFR的直接寻址位地址
  • @:间接寄存器的符号
  • /:位操作指令中对该位取反再参与操作,不影响原值
  • (X):X中的内容
  • ((X)):X指出的地址单元中的内容
  • →:指令操作流程方向

89C51指令系统

89C51指令系统由111条指令组成。其中单字节指令49条,双字节指令45条,三字节指令17条。从指令执行时间看,单周期指令64条,双周期指令45条,中有乘除指令为4个周期。


总结

单片机学习笔记(五)相关推荐

  1. 【C51单片机学习笔记--DS1302时钟芯片蜂鸣器I2C总线AT24C02存储器】

    C51单片机学习笔记–DS1302时钟芯片&&蜂鸣器&&I2C总线&&AT24C02存储器 文章目录 一.DS1302时钟芯片介绍 二.DS1302时钟 ...

  2. 单片机学习笔记 —— 按键消抖

      按键是我们学习单片机时一个重要的器件,我们在按下按键时,难免会一位手抖动或者接触不稳定,但如果不消抖,按键按下的瞬间将会产生成百上千次按键有效的结果,最终的现象不可预料,所以有必要进行消抖. 一. ...

  3. ESP32 单片机学习笔记 - 05 - AP/Smart Config

    ESP32 单片机学习笔记 - 05 - AP/Smart Config 终于把感觉必要的基础外设学完了,开始学esp32的主要特色功能--物联网~~?(大概) 一.WIFI热点 AP模式 编程指南: ...

  4. python函数是一段具有特定功能的语句组_Python学习笔记(五)函数和代码复用

    本文将为您描述Python学习笔记(五)函数和代码复用,具体完成步骤: 函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Pyth ...

  5. Ethernet/IP 学习笔记五

    Ethernet/IP 学习笔记五 Accessing data within a device using a non-time critical message (an explicit mess ...

  6. StackExchange.Redis学习笔记(五) 发布和订阅

    StackExchange.Redis学习笔记(五) 发布和订阅 原文:StackExchange.Redis学习笔记(五) 发布和订阅 Redis命令中的Pub/Sub Redis在 2.0之后的版 ...

  7. 吴恩达《机器学习》学习笔记五——逻辑回归

    吴恩达<机器学习>学习笔记五--逻辑回归 一. 分类(classification) 1.定义 2.阈值 二. 逻辑(logistic)回归假设函数 1.假设的表达式 2.假设表达式的意义 ...

  8. 好程序员教程分析Vue学习笔记五

    好程序员教程分析Vue学习笔记五,上次我们学习了Vue的组件,这次我们来学习一下路由的使用.在Vue中,所谓的路由其实跟其他的框架中的路由的概念差不多,即指跳转的路径. 注意:在Vue中,要使用路由, ...

  9. 【AngularJs学习笔记五】AngularJS从构建项目开始

    为什么80%的码农都做不了架构师?>>>    #0 系列目录# AngularJs学习笔记 [AngularJs学习笔记一]Bower解决js的依赖管理 [AngularJs学习笔 ...

  10. ROS学习笔记五:理解ROS topics

    ROS学习笔记五:理解ROS topics 本节主要介绍ROS topics并且使用rostopic和rqt_plot命令行工具. 例子展示 roscore 首先运行roscore系列服务,这是使用R ...

最新文章

  1. matlab fig格式图片转化为png格式
  2. HTTP请求中的缓存(cache)机制
  3. 成功解决ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any(
  4. 分形之龙形曲线(Dragon Curve)
  5. Python进阶(5)_进程与线程之协程、I/O模型
  6. 我总结的几种简单的调用Com组件的方法
  7. 如何修复XML内存“泄漏”
  8. HTML5 Canvas中绘制贝塞尔曲线
  9. 在线编辑ewebeditor
  10. 使用“Grafeas”元数据API和“Kritis”部署授权管理软件供应链
  11. 深度学习2.0-15.随机梯度下降之梯度下降简介
  12. linux内核安全模块,对Linux内核的修改 - Linux 安全模块(LSM)简介_Linux安全_Linux公社-Linux系统门户网站...
  13. Stm32 固件库移植
  14. 教你用手机制作二寸证件照,操作简单,一学就会!
  15. linux audit 源码分析,audit初探
  16. 解析 Github 的默认头像
  17. 新数据时代的挑战与机遇 傲腾生态填补产业鸿沟
  18. 副业新风口:TikTok(海外抖音)搬运视频,1天1小时!一月3W!(可批量操作)...
  19. MyEclipse 优化
  20. ObjectARX编程(六) ------块和属性

热门文章

  1. 3DLC系列之:2D 曲线面板
  2. 查看kms服务器信息,查看kms服务器地址
  3. CFDA发布GMP《计算机化系统和确认与验证》两个附录
  4. 白硕:人工智能的诗与远方,一文读懂NLP起源、流派和技术
  5. C语言全局变量,局部变量,静态局部变量的区分
  6. Qt 信号与槽机制及实战案例
  7. SpringBoot-Bean作用域
  8. -未来世界的幸存者- 读后感(现实篇和职业篇)
  9. ionic3 m3u8在线播放工具,在线播放
  10. 数据分析流程——业务需求分析