【学习笔记】汇编语言入门

汇编语言入门

在这里插入图片描述

概述

  1. 指令格式(最多包含4个区段):各区段之间用规定的分隔符分开

    [标号:]		操作码		[操作数]		[;注释]
    
    • 标号区段(当前指令行的符号地址)
    • 操作码区段(指令的操作行为,由操作助记符表征):42个操作码助记符(51单片机)(不区分大小写)
    • 操作数区段(指令的操作对象)
    • 注释区段(对指令的解释性说明):以英文分号开始,无须结束符号
    • 标识符:标号或汇编符号(由英文字母开头的1~6个字符组成)
    • 16进制地址:若存储单元地址的最高位>9时,应加前缀“0”以区别于标识符
    • 立即数:出现在指令中的额常数(应加前缀“#”以区别于地址)
  2. 简记符号(有明确的取值范围,不可越限使用)


指令系统

  1. 指令(CPU用于智慧功能部件完成某一指定动作的指令和命令):数据传输与交换类、算术运算类、逻辑运算及移位类、控制转移类

  2. 数据传送与交换类指令(31条):可实现RAM、SFR和ROM之间的数据传送和交换

    • 基本通式:<transfer> <dest>,<src>
      ;将元操作数(src)内容传送给目的操作数(dest),传送后源操作数的内容不变

    • 8种操作码助记符

      • MOV用于访问片内RAM
      • MOVX用于访问片外RAM
      • MOVC用于访问程序存储器
      • XCH和XCHD用于字节交换
      • SWAP用于A内半字节交换
      • PUSH和POP用于堆栈操作
    • 学习传送与交换类指令的关键在于掌握数据传送的目的和源

      • 立即数和ROM地址只能作为源操作数(单向箭头)
      • 内外ROM与A的数据传送只能用MOVC操作码助记符
      • 片外RAM与A的数据传送只能用MOVX操作码助记符
      • PUSH和POP只能对direct进行操作
      • 位数据传送只能在C(Cy标志位)与bit间进行
    • 寻址方式

      • 寄存器寻址:利用通用寄存器查找操作数的方法(通用寄存器:Rn、A、B、CY和DPTR)
      • 寄存器间接寻址:利用寄存器作为地址指针间接查找操作数的做法(间址寄存器:R0、R1和DPTR)
      • 变址寻址:利用两个寄存器内容之和进行间接查找操作数的做法(基址寄存器:DPTR、PC;变址寄存器:A)
  3. 算术运算类指令(24条):对程序状态字寄存器PSW中的CY、AC、OV和P有影响

    • 8种操作码助记符

      • ADD和ADDC用于加法运算

      • SUBB用于减法运算

      • MUL和DIV用于乘法和除法运算

      • INC和DEC用于增1和减1

      • DA用于十进制数加法调整

    • 7个节点表示算术运算指令共涉及7类操作数(@Ri、A、Rn、#data、B、direct和DPTR)

      • 除INC和DEC操作码外,算术运算都以A为目标操作数(A必须参与算术并存放运算结果)
    • 立即寻址:以指令中存在的立即数(#data或#data16)作为操作数的做法

  4. 逻辑运算及移位类指令(34条):可实现二进制逻辑操作

    • 逻辑运算指令中不以累加器A为目标寄存器的指令均不影响PSW中然和标志位,带进位的移位指令影响CY位

    • 10种操作码助记符

      • ANL、ORL和XRL分别用于逻辑与、逻辑或和逻辑异或运算
      • CPL用于求反运算
      • SETB和CLR用于置位和清零运算
      • RL、RLC、RR和RRC用于循环移位
    • 逻辑运算指令共涉及5种操作数(@Ri、A、Rn、#data、direct)

      • 除direct与#data的逻辑关系外,其余逻辑运算都与A有关,且几乎都以A为目的操作数
      • 位运算都以C为目的操作数
    • 循环移位指令可以实现A单独或C的闭环移位功能

    • 直接寻址:以指令中存在的片内RAM地址(direct)作为操作数地址的做法

  5. 控制转移类指令(22条):通过改变程序计数器PC的内容,进而实现程序转移功能
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YMsZFf0k-1651414304264)(/Users/jermy/Library/Application Support/typora-user-images/截屏2022-05-01 20.49.35.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tQkXlVNk-1651414304265)(/Users/jermy/Library/Application Support/typora-user-images/截屏2022-05-01 20.50.09.png)]

    • 18种操作码助记符

      • LJMP、AJMP、SJMP、JMP是无条件转移指令
      • JZ、JNZ、JC、JNC、JB、JNB、JBC、CJNE、DJNZ是条件转移指令
      • LCALL、ACALL、RET、RETI是子程序调用及返回指令
      • NOP是空操作指令
    • 条件转移指令快捷记忆法

      • direct和Rn都可实现“减一非零转移”
      • @Ri、A、Rn分别与#data、A与direct都可实现“比较不等转移”
      • A可实现为零或非零转移
      • 所有条件转移只能是在rel的范围内进行(-128~+127)
    • 相对寻址:利用偏移量rel修正转移目标地址的做法

    • 位寻址:利用位地址bit作为指令操作数的做法

  6. 寻址方法(CPU取的操作数的方法):寻址方式越多,计算机功能越强

    • 直接寻址:指令中包含direct形式操作数的寻址方式
    • 寄存器寻址:指令中包含通用寄存器形式操作数的寻址方式
    • 寄存器间接寻址:指令中包含“@间址寄存器”形式才作数的寻址方式
    • 立即寻址:指令中包含#data或#data16形式操作数的寻址方式
    • 变址寻址:指令中包含“@A+基址寄存器”形式的寻址方式(基址寄存器只能由DPTR或PC兼任)
    • 位寻址:指令中包含bit形式操作数的寻址方式
    • 相对寻址:指令中包含rel形式操作数的寻址方式
  7. 伪指令(汇编系统控制译码指令或指示性指令):一般不产生机器代码


程序设计步骤

  1. 分析问题,确定算法或解题思路

  2. 画流程图(程序框图):直观地表示出程序的执行过程或解题步骤和方法

  3. 编写程序:用汇编指令对流程图中的各部分加以具体实现

  4. 调试与修改


  • 7
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Benjamin Chen.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值