汇编:汇编指令分类

article/2025/10/11 22:41:57

文章目录

  • 一、指令分类
  • 二、伪指令
    • 1、assume
    • 2、segment、ends
    • 3、end
  • 三、汇编指令
    • 1、退出程序指令
    • 2、中断
      • 2.1、概念
      • 2.2、中断的分类
      • 2.3、本质
      • 2.4、中断指令
    • 3、call、ret
  • 四、指令处理的数据长度

使用汇编语言编写一个完整的程序,步骤大致如下:

1、编写源代码,文件名拓展名为.asm
2、编译、链接(可以使用微软的MASM编译器)
3、调试、运行
在这里插入图片描述

这节我们来看下一个最简单的汇编代码包含哪些内容。下面是一段简单的汇编语言的代码:

assume cs:codecode segmentmov ax,1122hmov bx,3344hadd ax,bxmov ah,4chint 21h
code endsend

从上面的代码可以看出,汇编语言由两类指令组成:

1、汇编指令
2、伪指令

一、指令分类

1、汇编指令

如mov、add、sub等
有对应的机器指令,可以被编译为机器指令,最终被CPU执行

2、伪指令

如assume、 segment、ends、end等
没有对应的机器指令,由编译器解析,最终不被CPU执行

汇编注释,以分号开头,如下代码:

-------- 数据段 --------
data segmentstring db 'Hello World!$'
data ends

二、伪指令

这里取几个常用的来说明

1、assume

声明code段是代码段(cs段)。给程序员看的,也可以不声明。

2、segment、ends

其作用是定义一个段,segment代表一个段的开始,ends代表一个段的结束,使用格式为:

段名 segment......
段名 ends

一个有意义的汇编程序中,至少要有一个段作为代码段存放代码

3、end

编译器遇到end时,就结束对源程序的编译。

三、汇编指令

这里介绍几个常见汇编指令。

1、退出程序指令

实现一:

mov ah,4ch
int 21h

实现二:

mov ax, 4c00h
int 21h

2、中断

2.1、概念

中断是由于软件的或硬件的信号,使得CPU暂停当前的任务,转而去执行另一段子程序。
也就是说,在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止当前程序的执行转而处理这个新情况的过程就叫做中断。

2.2、中断的分类

1、硬中断(外中断):由外部设备(比如网卡、硬盘)随机引发的,比如当网卡收到数据包的时候,就会发出一个中断
2、软中断(内中断):由执行中断指令产生的,可以通过程序控制触发

2.3、本质

从本质上来讲,中断是一种电信号,当设备有某种事件发生时,它就会产生中断,通过总线把电信号发送给中断控制器。如果中断的线是激活的,中断控制器就把电信号发送给处理器的某个特定引脚。处理器于是立即停止自己正在做的事,跳到中断处理程序的入口点,进行中断处理。
在这里插入图片描述

2.4、中断指令

可以通过指令int n产生中断
n是中断码,内存中有一张中断向量表,用来存放中断码对应中断处理程序的入口地址。
CPU在接收到中断信号后,暂停当前正在执行的程序,跳转到中断码对应的中断向量表地址处,去执行中断处理程序。

常见中断:

int 10h:用于执行BIOS中断。
int 3:是“断点中断”,用于调试程序
int 21h:用于执行DOS系统功能调用,AH寄存器存储功能号
更多的中断指令,点击这里下载。

3、call、ret

call和ret联合使用的作用其实就是高级语言中的函数调用

1、call 标号:

1、将下一条指令的偏移地址入栈
2、转到标号处执行指令

2、ret 标号:将栈顶的值出栈,赋值给ip。

在使用的时候,考虑点比较多,主要有以下几个方面:

有无参数
有无返回值
现场保护
局部变量
堆栈平衡

四、指令处理的数据长度

1、8086指令能处理2种尺寸的数据:byte、word

2、mov [0], 20H指令是否正确?

1、mov byte ptr [0], 20H 将20H放入0位置内存的字节单元,占用1个字节
2、mov word ptr [0], 20H 将20H放入0位置内存的字单元,占用2个字节
3、很多指令都可以通过byte ptr或者word ptr来指明所需要操作内存的数据长度。

3、有些指令有默认的操作数据长度,比如push [0]、pop [0]的操作数据长度只能是2个字节。


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

相关文章

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

指令讲解 进入debug模式后:(进入debug模式之前的讲解 可以参考我的另一篇博文:masm5.0运行 -u::显示机器指令和汇编指令 -d:显示的具体数据 内存单元内容查看 -r:查看寄存器内容 -r:修改寄存器的内容 如修改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个通用寄存器,在汇编程序中可以用编号表示,$0~31 , 也 可 以 用 名 称 表 示 , 如31,也可以用名称表示,如…

汇编常见指令

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

log4j的ConversionPattern

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

log4j的ConversionPattern参数的意义

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

conversionpattern(conversionpattern 自定义字段)

请教以下log4j 日志文件不会弄啊。 直接在Myeclipse中编辑properties 文件的时候不能使用中文的。你可以下载个插件,或者干脆在外边编辑~~你用一个类去读,然后在里面用logger去执行,在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为截止频率。 常用的数字滤波…

了解一阶低通滤波器传递函数

自动控制原理的内容很高深要逐步地学习 一阶RC滤波器的算法实现&#xff08;低通和高通&#xff09; https://blog.csdn.net/qq_27158179/article/details/82661297 了解一阶低通滤波器传递函数 https://blog.csdn.net/qq_27334499/article/details/52186336 最近&#xf…

一阶低通滤波器在stm32中的简单应用

首先来看一个最简单的一阶低通滤波器的电路模型&#xff1a; 不难推出它的传递函数&#xff1a; Tf与滤波器截止频率有关&#xff0c;但是实际程序中会变成一个参数&#xff0c;此时我们可以忽略它。 然而&#xff01;我们的stm32接收到的信号是一串序列&#xff08;离散信号&a…

数字一阶低通滤波器simulink仿真

数字一阶低通滤波器simulink仿真 原理程序所用公式滤波系数计算方法 仿真根据公式搭建使用simulink自带模型 原理 程序所用公式 y(n) q*x(n) (1-q)*y(n-1) 其中&#xff0c;y(n)表示当前的输出&#xff0c;x(n)表示当前的输入&#xff0c;y(n-1)表示上一次的输出&#xff0…

滞后一秒钟的一阶低通滤波器

用于应对输入跳变到5.5V&#xff0c;让电源工作1s钟然后停机。

matlab中的低通freqs,matlab数字低通滤波器 MATLAB一阶低通滤波器的设计

matlab数字低通滤波器 MATLAB一阶低通滤波器的设计 截止频率50Hz,设计MATLAB低通滤波器的程序及注释,谢谢 %滤波前数据t = 0:0.01:10;f=5*sin(2*pi*20*t)+5*sin(2*pi*60*t);%滤波器设计Fpass = 1; % Passband FrequencyFstop = 50; % Stopband FrequencyApass = 1;% Passban…

一阶低通滤波器与高通滤波器的使用

文章目录 1. 一阶低通滤波器2. 一阶高通滤波器3. 互补滤波器4. Simulink仿真 1. 一阶低通滤波器 其传递函数为&#xff1a; Y U 1 1 R C ⋅ S \frac{Y}{U}\frac{1}{1R C \cdot S} UY​1RC⋅S1​ 其中&#xff0c;滤波器截止频率为 ω c 1 R C \omega_c\frac{1}{R C} ωc​RC…