通用寄存器与标志位寄存器OF/DF/IF/TF/SF/ZF/AF/PF
文章目录
- 1 通用寄存器
- 2 标志寄存器
- 2.1 CF 进位标志位
- 2.2 ZF 零标志位
- 2.3 SF 符号标志位
- 2.4 OF 溢出标志位
- 2.5 PF 奇偶标志位
- 2.6 AF 辅助进位标志
- 2.7 TF 跟踪标志
- 2.8 DF 方向标志
- 2.8 IF 中断标志
1 通用寄存器
这些的寄存器是程序执行代码最最常用,也最最基础的寄存器,程序执行过程中,绝大部分时间都是在操作这些寄存器来实现指令功能。
所谓通用,即这些寄存器CPU没有特殊的用途,交给应用程序“随意”使用。注意,对于有些寄存器,CPU有一些潜规则,用的时候要注意。
eax
:通常用来执行加法,函数调用的返回值一般也放在这里面
ecx
:通常用来作为计数器,比如for循环
edx
:读写I/O端口时,edx用来存放端口号
esp
:栈顶指针,指向栈的顶部
ebp
:栈底指针,指向栈的底部,通常用ebp+偏移量的形式来定位函数存放在栈中的局部变量
esi
:字符串操作时,用于存放数据源的地址
edi
:字符串操作时,用于存放目的地址的,和esi两个经常搭配一起使用,执行字符串的复制等操作
eip
:指向CPU当前指向的指令
ebx
: 数据存取
2 标志寄存器
CPU内部的寄存器中,有一种特殊的寄存器(对于不同的处理机,个数和结构都可能)具有以下3中作用。
- 用来存储相关指令的某些执行结果。
- 用来为CPU执行相关指令提供行为依据。
- 用来控制CPU的相关工作方式。
8086CPU的flag寄存器的结构如图下所示
D15 | D14 | D13 | D12 | D11 | D10 | D9 | D8 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
OF | DF | IF | TF | SF | ZF | AF | PF | CF | |||||||
空出来的说明在8086CPU中没有使用,布局有任何含义。 | |||||||||||||||
它反映了CPU运算的状态特征并且存放某些控制标志 |
2.1 CF 进位标志位
定义:当执行一个加法(减法)运算时,最高位产生进位(或借位)时,CF为1,否则为0。
实例:
1. 修改 eax:FFFFFFFF
2. 写指令
add eax,0x13.结果:
eax:00000000
C: 1
A:1
2.2 ZF 零标志位
定义:若当前的运算结果为零,则ZF为1,否则为0。
- flag的第6位是ZF,0标志位。
- 记录相关指令执行后,其结果是否为0,
if = 0; zf = 1
if != 0; zf = 0
eg.mov ax,1 sub ax,1 执行后,结果为0,则zf=1
mov ax,1 add ax,0 执行后,结果为0,则zf=1,表示“结果是0”
mov ax,1 or ax,0 执行后,结果不为0,则zf=0,表示“结果非0”
2.3 SF 符号标志位
定义:该标志位与运算结果的最高位相同。即运算结果为负,则SF为1,否则为0。
2.4 OF 溢出标志位
若运算结果超出机器能搞表示的范围称为溢出,此时OF为1,否则为0。
2.5 PF 奇偶标志位
定义:当运算结果的最低16位中含1的个数位偶数,则PF为1,否则为0。
flag的第2位是PF,奇偶标志位。
记录相关指令执行后,其结果的所有bit位中
1
的个数
是否为偶数
,
if 偶数 则 pf = 1
if 奇数 则 pf = 0
eg.mov al,1 add al,10 执行后,结果为00001011B,其中3(奇数)个1,则 pf = 0;
mov al,1 or al,2 执行后,结果为00000011B,其中有2(偶数)个1,则 pf = 1;
sub al,al 执行后,结果为00000000B,其中有0(偶数)个1,则 pf = 1;
2.6 AF 辅助进位标志
定义:一个加法(减法)运算结果的低4位想高4位有进位(或借位)时,则AF=1,反之AF=0。
2.7 TF 跟踪标志
定义:该标志位为方便程序调试而设置。若TF=1,8086/8088 CPU处于单步工作方式,即在每条指令执行结束后,产生中断。
2.8 DF 方向标志
定义:该标志位用来控制处理指令的处理方向,若DF=1,则串处理过程中地址自动递减,否则自动递增。
2.8 IF 中断标志
等等
通用寄存器与标志位寄存器OF/DF/IF/TF/SF/ZF/AF/PF相关推荐
- 汇编语言中常用指令对标志位寄存器的影响
参考了<汇编语言 基于x86处理器>第七版 转载请注明出处 如果有错误的地方请指正,谢谢. 文章目录 算术运算(ADD/SUB)影响标志位 ADD指令 SUB指令 NEG指令 INC/DE ...
- 微型计算机DEC影响零标志位吗,汇编语言中常用指令对标志位寄存器的影响
参考了<汇编语言 基于x86处理器>第七版 转载请注明出处 如果有错误的地方请指正,谢谢. 文章目录 算术运算(ADD/SUB)影响标志位 ADD指令 SUB指令 NEG指令 INC/DE ...
- OD-标志寄存器判断语句对照表(汇编标志位寄存器对照表)
- 汇编标志位及操作讲解
参考网上的资料.整理了我认为比较常用的标志位知识点. 一.SF,CF,ZF,OF,PF,ZF 讲解 SF=0(最高位是什么,ZF就是什么) CF=1(最高位有进位或借位就置1) ZF=0(结果为0,Z ...
- Ollydbg中C标志位P标志位A标志位Z标志位以及S,T,D,0标志位含义详解
转载自https://www.cnblogs.com/whzym111/p/6374855.html 知识点: l 标志位 置位相关指令 l 标志寄存器PSW 标志寄存器PSW(程序状态字寄存器P ...
- 汇编语言标志位 含义 NV UP EI NG NZ AC PE CY
缩写原意:<?xml:namespace prefix = o /> Overflow of = OV NV [No Overflow] Direction df = DN (decrem ...
- debug 标志位说明
of df if sf zf af pf cf 标志位为1 ov dn ei ng zr ac pe cy 标志位为0 nv up di pl nz ...
- DOSBox debug中查看标志位
debug中的标志位显示顺序 OF DF IF SF ZF AF PF CF OF 标志位(溢出) OF = 1, 显示为OV OF = 0, 显示为NV DF 标志位(方向) DF = 0, ...
- Win32汇编:数组与标志位测试总结
整理复习汇编语言的知识点,以前在学习<Intel汇编语言程序设计 - 第五版>时没有很认真的整理笔记,主要因为当时是以学习理解为目的没有整理的很详细,这次是我第三次阅读此书,每一次阅读都会 ...
最新文章
- GAN的理解与TF的实现
- wp7上MD5加密类
- 2021年第一天,腾讯给青年科学家的300万大红包又来了
- java (10) 集合类
- 据说这是全世界最最最权威、最准的爱情测试
- 用筛选法求100以内的素数(数组)
- C++数据结构之链式结构
- python datetime计算时间差_用datetime计算时间差
- MFC中创建线程实例
- mysql取消操作系统_Linux下的MySQL简单操作(服务启动与关闭、启动与关闭、查看版本)...
- recycleview 自动循环滚动_滚动真空包装机包装东北冷面和400真空机包装东北冷面的比较...
- 计算机浏览器应用程序,基于浏览器的应用程序
- cuda11+pytorch安装
- spark 稀疏矩阵存储详细解读
- c语言出100道计算题,C语言例题100道
- 手机号归属地数据库;根据手机号查找对应的归属地;
- ffmpeg 反复推流_FFmpeg 推流问题记录
- Ubuntu查看联想笔记本无线网卡内核并安装驱动
- Shopee菲律宾站如何选品?听Shopee Man本土多店管理系统告诉你
- (2017.03.12更新)CnCrypt文件保险箱1.19,兼容TrueCrypt加密卷
热门文章
- OpenCV 视频人数统计研究
- @keyup.enter.native不生效问题解决
- “夏邑女首富”刘敏创建的敏涵控股被质疑:坚持做难而正确的事
- Android Process 'command 'C:\Users\Win\AppData\Local\Android\Sdk\build-t non-zero exit value 1错误解决方案
- cocos2d-x ui::Button 的setEnabled 和 setVisible 的区别,setEnabled后按钮却不见了
- 注释(单行注释、多行注释、文档注释)
- Ubuntu更改密码及hostname步骤
- 网络劫持是什么?网页被篡改劫持怎么修复(终级方案)网页劫持如何修复?
- 只用div+CSS做淘宝手机端首页
- 如何防止破解?MCU加密技术揭秘