汇编语言入门教程

article/2025/10/11 21:44:56

一、汇编语言是什么

​ 汇编语言是二进制指令(操作码)的文本形式,与指令是一一对应的关系。比如加法指令00000011写成汇编语言就是ADD

二、前置知识——寄存器

​ 1、寄存器不依靠地址区分,而依靠名称,CPU通过名字去具体的寄存器拿数据。
在这里插入图片描述

​ 2、寄存器的种类

​ 分为通用和专用寄存区

  • EAX
  • EBX
  • ECX
  • EDX
  • EDI
  • ESI
  • EBP 栈的基地址,不发生改变
  • ESP 用来保存当前栈的地址(栈指针的位置,值会随着压栈、弹栈发生变化)

三、前置知识——Heap(堆)

​ 由用户主动请求而划分出来的内存区域,叫做Heap。

  • 由低位地址向高位地址增长
  • 不会自动释放,必须手动释放,或者由垃圾回收机制来回收

四、前置知识——Stack(栈)

​ 1、帧的概念

系统会在栈中为每一个函数建立一个帧(frame),所以调用栈有多少层(递归),就有多少帧;函数运行结束,帧就被回收。

​ 2、出栈(pop)和入栈(push)

​ Stack 是由内存区域的结束地址开始,从高位(地址)向低位(地址)分配。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gqzLyl2h-1648713555012)(images/汇编语言入门/bg2018012215-16487116800653.png)]

五、CPU指令

​ 一个CPU指令可以有零个到多个运算子

根据一个例子来学习

_add_a_and_b:push   %ebxmov    %eax, [%esp+8] mov    %ebx, [%esp+12]add    %eax, %ebx pop    %ebx ret  _main:push   3push   2call   _add_a_and_b add    %esp, 8ret

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AmwfOiMb-1648713555013)(images/汇编语言入门/bg2018012216.png)]

1、push指令

push 3

这个push操作涉及到下面几个步骤

  • 取出ESP寄存器里的地址
  • 减去4个字节(int类型,向下生长)
  • 新地址写入ESP
  • 3被写入这个地址开始的四个字节

注意:esp始终指的是栈顶

2、call指令

​ 调用函数指令,程序会去找对应函数名的标签,建立一个新的栈帧(绿色部分)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1Z4lAMT9-1648713555013)(images/汇编语言入门/image-20220331155813906.png)]

3、move指令

将一个值写入某个寄存器

mov    %eax, [%esp+8] 

esp + 8这个地址指向的值放入eax

4、add指令

两个运算子相加,并把结果放进前一个寄存器

add    %eax, %ebx

结果保存在eax寄存器里

5、pop指令

取出Stack最近一个写入的值(即最低位地址的值),放入运算子指定位置

pop    %ebx

注意:pop会将esp寄存器里的地址加4,即回收4个字节

6、ret指令

ret指令用于终止当前函数的执行,将运行权交还给上层函数。也就是,当前函数的帧将被回收。

该指令没有运算子


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

相关文章

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

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

汇编语言程序格式

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

汇编常用指令

通用寄存器及使用 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&…

log4j的ConversionPattern

log4j的ConversionPattern参数的意义 http://lizhou.iteye.com/blog/939154 博客分类&#xff1a; java log4j 多线程 Apache Tomcat F# &#xff0d;X: X信息输出时左对齐 %p: 输出日志信息优先级&#xff0c;即DEBUG&#xff0c;INFO&#xff0c;WARN&#xff0c;ERROR&am…

log4j的ConversionPattern参数的意义

1、常用标志&#xff1a; &#xff0d;X: X信息输出时左对齐 %p: 输出日志信息优先级&#xff0c;即DEBUG&#xff0c;INFO&#xff0c;WARN&#xff0c;ERROR&#xff0c;FATAL, %d: 输出日志时间点的日期或时间&#xff0c;默认格式为ISO8601&#xff0c;也可以在其后指定…

conversionpattern(conversionpattern 自定义字段)

请教以下log4j 日志文件不会弄啊。 直接在Myeclipse中编辑properties 文件的时候不能使用中文的。你可以下载个插件&#xff0c;或者干脆在外边编辑~~你用一个类去读&#xff0c;然后在里面用logger去执行&#xff0c;在log4j的配置文件里面针对这个类配置一个把日志写到文件里…

log4j的配置ConversionPattern详细讲解

原文来自https://blog.csdn.net/reserved_person/article/details/52849505感谢大佬 先写下我一直没找到的ConversionPattern里面参数代表的详细含义 参数说明例子%c列出logger名字空间的全称&#xff0c;如果加上{<层数>}表示列出从最内层算起的指定层数的名字空间log…

零阶保持器(ZOH)与一阶低通滤波器频率特性分析

1.零阶保持器&#xff08;ZOH&#xff09;频率特性分析 零阶保持器传递函数&#xff1a; 画 Bode 图进行频率分析&#xff1a; stf(s); T0.0002; %采样周期0.0002s G(1-exp(-T*s))/s; bode(G); 从图中可以看出&#xff1a;随着频率 ω 的的增加&#xff0c;当 ω 在 10000 附…

一阶低通滤波器、功能触发、周期性触发的simulink模型

01--概述 主要简单叙述在基于模型的过程中比较常用的一些算法&#xff0c;一个是一阶低通滤波器&#xff0c;一个是功能触发&#xff0c;另外一个是周期性触发。会简单介绍下这些算法的应用。 02--一阶低通滤波器 其计算公式为&#xff1a;Y(n) A*X(n) (1−A)*Y(n-1) A滤…

一阶低通滤波器的传递函数分析

一、无源一阶低通滤波器分析 由图可以知道&#xff0c;输入信号为Vi,输出函数为Vo&#xff0c; 电阻R的阻抗为R&#xff0c;C电容C阻抗为1/jwC&#xff0c;Vo实际上是Vi在电容C上的分压&#xff0c;则有&#xff1a; 则有&#xff1a; 将jwS变换得到&#xff1a; 再令Vo/Vin 表…

数字 一阶低通滤波器 详细分析 冰三点水

数字 一阶低通滤波器 详细分析 作者&#xff1a;冰三点水 原创内容&#xff0c;转帖请注明出处&#xff1a; http://blog.csdn.net/u013608300/article/details/78814693 微信公众号&#xff1a;工程师看海 事件的起因是下图1&#xff0c;朋友偶然说到一阶低通滤波器&#x…

一阶低通滤波器的数字实现

关于一阶低通滤波器这里就不再赘述了&#xff0c;讲的帖子也挺多&#xff0c;这里记录一下一阶低通滤波器的传递函数与数字实现之间的系数转换。 一阶低通滤波器的传递函数常见为&#xff1a; 其中Tf为RC&#xff0c;并且有&#xff1a; 其中fwres为截止频率。 常用的数字滤波…