【汇编语言】11-标志寄存器


公粽号「专注Linux」,专注Linux内核开发

本系列将讲解《汇编语言》一书,本节讲解**【汇编语言】11-标志寄存器**。


本节速览
1.什么是标志寄存器?
2.标志寄存器的作用是?
3.目前我们学的寄存器一共有多少个,分别是?
4.挨个指出标志寄存器的作用,并举例子说明?
5.adc、sbb指令含义?与标志寄存器关系是?
6.cmp指令是?用法是?
7.和cmp搭配的比较指令有哪些?什么作用?
8.j类跳转指令有那6类?分别作用是?
9.pushf和popf的作用?

导读:

call 和ret 指令都是转移指令,它们都修改IP,或同时修改CS和IP。它们经常被共同用来实现子程序的设计。这一章,我们讲解call和ret指令的原理以及规范子程序编写流程。

1.标志寄存器

标志寄存器是一个并不用于存储传统的数据,而是存储指令运行结果控制CPU执行相关指令工作方式特殊寄存器。

在本系列介绍的8086CPU中,标志寄存器(我们称为flag寄存器)结构图下:

flag寄存器的1、3、5、12、13、14、15位在8086CPU中没有使用,不具有任何含义。 0、2、4、6、7、8、9、10、11位都具有特殊的含义。

从上图可以看出,其他传统寄存器是具有整体存储的功能,按整体16位起作用,而这里的flag寄存器,按单个位起作用,这也是标志寄存器与传统寄存器的最大区别!

2.目前学的寄存器有多少个?

如下图所示,一共14个寄存器,其中,最后的红框里面的就是整体的标志寄存器的单个位的正负情况,这里代表标志寄存器。

BTW,有时间将这14个寄存器的作用单独做个介绍,这是CPU的基本读取单元,很重要

8086的所有寄存器

事实上,8086也就这些寄存器14个,最新的x86也就26个,x86的CPU架构也没这么难

3.标志寄存器作用大全

FLAG寄存器

作用如下:

reg 作用
CF 进位标志位。无符号运算时,记录运算结果最高有效位向更高位的进位(借位)值。
PF 奇偶寄存器,记录相关指令执行后,其结果的所有bit位中1的个数是不是偶数,是,PF=1,否,PF=0
ZF 零标志位,记录相关指令执行后,其结果是否为0,如果为0,ZF=1,否则为0
SF 符号标志位,记录相关指令执行后,其结果是否为负,是,SF=1,否,SF=0
OF 溢出寄存器。有符号运算时,结果是否发生了溢出,是,OF=1,否,OF=0
DF 方向标志位。串传送指令(例如movsb)中,控制每次操作后si、di的增减

CF 寄存器

CF寄存器假想的更高位

记住,在dosbox中,对于标志位的01,有自己的英文缩写,如下:

dosbox中的标志位缩写


DF寄存器

这里需要详细讲解一下DF相关功能及作用:

flag的第10位是DF,方向标志位。

在串处理指令中,控制每次操作后si、di的增减。

df=0,每次操作后si、di递增

df=1,每次操作后si、di递减

movsb指令

串传送指令:movsb

功能:执行movsb指令相当于进行下面几步操作。

用汇编语法描述movsb的功能如下:

可以看出,movsb的功能是将ds:si指向的内存单元中的字节送入es:di中,然后根据标志寄存器df位的值,将sidi 递增递减

movsw指令

当然了movsb是传送一个字节,也可以传送一个字,这就是movsw,二者唯一的区别就是si和di的变化是2,而不是1.

rep指令

movsbmovsw进行的是串传送操作中的一个步骤,一般来说,movsb和movsw都和rep配合使用,格式如下:`

rep movsb

等价于汇编:

s:movsb 
  loop s

可见,rep的作用是根据cx的值,重复执行后面的串传送指令。由于每执行一次 movsb 指令 sidi都会递增或递减指向后一个单元或前一个单元,则rep movsb就可以循环实现(cx)个字符的

MATLAB主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性内容概要:本文主要介绍了一种在MATLAB环境下实现的主动噪声和振动控制算法,该算法针对较大的次级路径变化具有较强的鲁棒性。文中详细阐述了算法的设计原理与实现方法,重点解决了传统控制系统中因次级路径动态变化导致性能下降的问题。通过引入自适应机制和鲁棒控制策略,提升了系统在复杂环境下的稳定性和控制精度,适用于需要高精度噪声与振动抑制的实际工程场景。此外,文档还列举了多个MATLAB仿真实例及相关科研技术服务内容,涵盖信号处理、智能优化、机器学习等多个交叉领域。; 适合人群:具备一定MATLAB编程基础和控制系统理论知识的科研人员及工程技术人员,尤其适合从事噪声与振动控制、信号处理、自动化等相关领域的研究生和工程师。; 使用场景及目标:①应用于汽车、航空航天、精密仪器等对噪声和振动敏感的工业领域;②用于提升现有主动控制系统对参数变化的适应能力;③为相关科研项目提供算法验证与仿真平台支持; 阅读建议:建议读者结合提供的MATLAB代码进行仿真实验,深入理解算法在不同次级路径条件下的响应特性,并可通过调整控制参数进一步探究其鲁棒性边界。同时可参考文档中列出的相关技术案例拓展应用场景。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值