栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言复习:标志寄存器+指令

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言复习:标志寄存器+指令

标志寄存器(EFLAGSJI)

1、定义

标志寄存器又称程序状态字(外语缩写:PSW、外语全称:Program Status Word)。

是一个16位的存放条件标志、控制标志寄存器,主要用于反映处理器的状态和ALU运算结果的某些特征及控制指令的执行。

2、符号意义(来自百度)

标志位(外语缩写)

标志位名称及外语全称

=1

=0

CF

进位标志/Carry Flag

CY/Carry/进位

NC/No Carry/无进位

PF

奇偶标志/Parity Flag

PE/Parity Even/偶

PO/Parity Odd/奇

AF

辅助进位标志/Auxiliary Carry Flag

AC/Auxiliary Carry/进位

NA/No Auxiliary Carry/无进位

ZF

零标志/Zero Flag

ZR/Zero/等于零

NZ/Not Zero/不等于零

SF

符号标志/Sign Flag

NG/Negative/负

PL/Positive/非负

TF

跟踪标志/Trace Flag

IF

中断标志/Interrupt Flag

EI/Enable Interrupt/允许

DI/Disable Interrupt/禁止

DF

方向标志/Direction Flag

DN/Down/减少

UP/增加

OF

溢出标志/Overflow Flag

OV/Overflow/溢出

NV/Not Overflow/未溢出

对于EFLAGSJI寄存器:位置顺序OF DF IF TF SF ZF 0 AF 0 PF CF(cf占零位)

进位标志CF:如果运算结果的最高位产生了一个进位(+)或借位(-),那么,其值为1,否则其值为0。

奇偶标志PF:奇偶标志PF用于反映运算结果中“1”的个数的奇偶性。如果“1”的个数为偶数,则PF的值为1,否则其值为0。Attention:1是指数字转化为二进制之后的1的个数。

辅助进位标志AF:

    在发生下列情况时,辅助进位标志AF的值被置为1,否则其值为0:

    (1)、在字(word)操作时,发生低字节向高字节进位或借位时;

 (2)、在字节(byte)操作时,发生低4位向高4位进位或借位时

零标志ZF:零标志ZF用来反映运算结果是否为0。

如果运算结果为0,则其值为1,否则其值为0。在判断运算结果是否为0时,可使用此标志位。

符号标志SF:符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同。

溢出标志OF:溢出标志OF用于反映有符号数加减运算所得结果是否溢出。

CMP指令

在微型计算机的汇编语言中,CMP(compare)是其中一条指令,叫做比较指令。cmp的功能相当于减法指令,只是对操作数之间运算比较,不保存结果。cmp指令执行后,将对标志寄存器产生影响。

格式

CMP OPR1 , OPR2.

执行操作

(OPR1)-(OPR2)

功能

该指令与SUB指令一样执行减法的操作,但它并不保存运算结果,只是根据结果设置相关的条件标志位(SF、ZF、CF、OF)。CMP指令后往往跟着条件转移指令,实现根据比较的结果产生不同的程序分支的功能。

TEST指令

  • test指令用于检查条件是否成立,如果条件为真,则返回一个0,如果条件不为真,则返回一个大于 0 的值,它可以进行数值、字符和文件三个方面的检查。
  • test指令也可以简写为[], []和test是等价的

Test对两个参数(目标,源)执行AND逻辑操作,并根据结果设置标志寄存器,结果本身不会保存。

TEST AX,BX 与 AND AX,BX 命令有相同效果,只是Test指令不改变AX和BX的内容,而AND指令会把结果保存到AX中。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/836597.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号