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指令不改变AXBX的内容,而AND指令会把结果保存到AX中。

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值