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

article/2025/10/11 18:24:56

汇编语言入门

在这里插入图片描述

概述

  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. 调试与修改



http://chatgpt.dhexx.cn/article/jmdkKNBY.shtml

相关文章

关于汇编语言入门的几个案例

哈喽&#xff0c;大家好呀~这篇呢我们来看看汇编语言的几个入门小案例。 &#x1f947;个人主页&#xff1a;个人主页 &#x1f948;系列专栏&#xff1a;日常解决的问题 &#x1f949;与这篇汇编相关的文章&#xff1a; …

什么是汇编语言

汇编语言&#xff08;assembly language&#xff09;是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言&#xff0c;亦称为符号语言。在汇编语言中&#xff0c;用助记符&#xff08;Mnemonics&#xff09;代替机器指令的操作码&#xff0c;用地址符号&#…

汇编语言系列教程之基础入门 (一)

汇编语言系列教程之基础入门 &#xff08;一&#xff09; http://www.cnblogs.com/flyor/p/7208948.html 机器字长 机器字长是指CPU一次运算所能处理的数据的位数&#xff0c;一般来说这个数的和CPU的通用寄存器长度、数据总线的宽度等相等&#xff0c;在8086中为16bit。由于历…

快速入门汇编语言

这篇是我在先后学习了《汇编原理》、《CSAPP》第三章和《x86 data sheet》&#xff0c;以及经历了大量google后写出的总结性文档&#xff0c;用于自查和复习。若能有所助益&#xff0c;不胜荣幸。如有错漏&#xff0c;烦请不吝赐教。 1. 从C到汇编 在初学C语言时&#xff0c;…

汇编语言(一)

一、编程语言 1&#xff09;机器语言 机器语言是机器指令的集合。在计算机中是一串0、1二进制数&#xff0c;计算机转变为高低电平&#xff0c;器件受到震动&#xff0c;进行运算。由于硬件设计和内部结构的不同&#xff0c;需要不同的电平脉冲来控制使它工作&#xff0c;所以…

汇编语言程序设计入门

前言&#xff1a;公号 「编程有料」后台回复 “大礼包” 即可获取近1000本助力你编程之路的电子书 汇编语言程序设计 一&#xff0c;汇编语言程序设计概述1&#xff0c;程序设计语言2&#xff0c;汇编语言源程序3&#xff0c;汇编语言程序开发过程 二&#xff0c;汇编语言基本语…

手把手教你学习汇编语言——从入门到起飞

专接本交流群&#xff1a;1051749714 &#xff08;有什么问题欢迎进群讨论&#xff09; 关于这篇博客&#xff0c;笔者会尽量用最简单的方式教会大家汇编语言以便应付各种考试 有什么不足的忘大佬评论或私信指出。 汇编环境安装 汇编运行调试 汇编指令 希望大家看完这些找一些…

小白的入门之——汇编语言程序设计教程

目录 第一章 基础知识 1.1汇编语言的特点 1.2计算机中数据表示的特点 【BCD码表示法&#xff08;Binary Coded Decimal&#xff09;】 【定点数】 —原码表示法— —反码表示法— —补码表示法— 浮点数 1.3 ​​​​​​计算机的数据存储 寄存器 存储器 数据在主…

汇编入门基础

1.什么是汇编语言&#xff1f; 汇编语言就是低级语言&#xff0c;直接描述/控制 CPU 的运行&#xff0c;我们知道&#xff0c;CPU 只负责计算&#xff0c;本身不具备智能。你输入一条指令&#xff08;instruction&#xff09;&#xff0c;它就运行一次&#xff0c;然后停下来&…

汇编语言入门教程

一、汇编语言是什么 ​ 汇编语言是二进制指令&#xff08;操作码&#xff09;的文本形式&#xff0c;与指令是一一对应的关系。比如加法指令00000011写成汇编语言就是ADD 二、前置知识——寄存器 ​ 1、寄存器不依靠地址区分&#xff0c;而依靠名称&#xff0c;CPU通过名字去…

南邮《汇编语言程序设计》期末复习 CH3: 汇编语言指令集

本文转载自厉害的 孔姐姐 的 博客 。 由一只孔姐姐的小迷弟负责排版和整理~ 一、基本概念 1.指令&#xff1a;单个的 CPU 操作&#xff0c;通知 CPU 执行某种操作的 “命令” 指令集&#xff1a;所有指令的集合 机器指令&#xff1a;用二进制序列&#xff08;0、1&#xff09…

汇编语言程序格式

1 逻辑段 汇编语言源程序由一个或多个逻辑段组成。 ❖ 一个程序中可以有几个同一类型的逻辑段。 ❖ 必须至少有一个代码段。 &#xff3b;注&#xff3d;源程序分段的目的在于程序结构清晰、便 于内存分配&#xff0c;寻址方便&#xff0c;一个源程序需要设置 几个段应根据具体…

汇编常用指令

通用寄存器及使用 IA-32系列有8个32位通用寄存器&#xff0c;名称分别为&#xff1a;EAX,EBX,ECX,EDX,ESP,EBP,ESI,EDI&#xff0c;如图&#xff1a; 简单传送指令 指令中文名格式解释备注MOV传送指令MOV DEST,SRCDEST<SRCXCHG交换指令XCHG OPER1,OPER2把操作数oper1的内容…

第一章 汇编语言和汇编指令

【用最少的指令来实现功能】 自用 文章基于《计算机体系结构新讲》&#xff08;中国地质大学出版社&#xff09; 目录 一、汇编指令 &#xff08;1&#xff09;MIPS汇编指令示例解析 &#xff08;2&#xff09;MIPS指令集 二、汇编指令中的操作数 &#xff08;1&#xff0…

pic单片机汇编 c语言,PIC单片机汇编语言指令详解

PIC单片机汇编语言指令详解 pic单片机为最常用单片机之一&#xff0c;许多程序均基于pic单片机进行开发。因此&#xff0c;熟练pic单片机编程尤为重要。为保证大家能准确、熟练掌握pic单片机的使用&#xff0c;本文特带来pic单片机的各种汇编语言指令的讲解。 一、pic的指令系统…

汇编:汇编指令分类

文章目录 一、指令分类二、伪指令1、assume2、segment、ends3、end 三、汇编指令1、退出程序指令2、中断2.1、概念2.2、中断的分类2.3、本质2.4、中断指令 3、call、ret 四、指令处理的数据长度 使用汇编语言编写一个完整的程序&#xff0c;步骤大致如下&#xff1a; 1、编写源…

汇编语言指令及七种寻址方式指令实现

指令讲解 进入debug模式后&#xff1a;&#xff08;进入debug模式之前的讲解 可以参考我的另一篇博文&#xff1a;masm5.0运行 -u::显示机器指令和汇编指令 -d:显示的具体数据 内存单元内容查看 -r:查看寄存器内容 -r&#xff1a;修改寄存器的内容 如修改ax寄存器的值为12…

微机原理之汇编语言指令集

汇编语言指令集 1.1 概述1.1.1 指令集体系结构、机器指令和符号指令1.1.2 符号指令的书写格式 1.2 操作数1.2.1 通用寄存器中的操作数1.2.2 段寄存器和指令指针寄存器1.2.3 标志寄存器 1.3 寻址方式1.3.1 立即寻址1.3.2 寄存器寻址1.3.3存储器操作数寻址1.3.3.1 直接寻址1.3.3.…

MIPS汇编语言指令

MIPS汇编语言指令 寄存器指令集指令格式R型指令I型指令J型指令 寄存器 寄存器在MIPS体系结构中有32个通用寄存器&#xff0c;在汇编程序中可以用编号表示&#xff0c;$0~31 &#xff0c; 也 可 以 用 名 称 表 示 &#xff0c; 如31&#xff0c;也可以用名称表示&#xff0c;如…

汇编常见指令

文章目录 常见的运算类汇编指令add指令sub指令mul乘法指令div除法指令inc&#xff08;自增&#xff09;&#xff08;即C语言&#xff09;dec&#xff08;自减&#xff09;&#xff08;即–&#xff09;push&#xff08;入栈&#xff09;pop&#xff08;出栈&#xff09;and&…