首页 > 编程知识 正文

cpsr寄存器标志位,寄存器定义方法

时间:2023-05-05 04:23:31 阅读:120284 作者:4172

文章目录0x01一般操作命令0x02标志寄存器1、ZF标志2、PF标志3、SF标志4、CF标志5、OF标志6、DF标志位和串行传输命令

0x01一般操作命令

在CISC中,对标志寄存器存在一些指令对标志寄存器的操作,常见的有LAHF、SAHF、PUSHF、POPF。

LAHF:

指令可将标志寄存器的低8位发送入AH,即,将标志寄存器中的SF、ZF、AF、PF、CF这五个标志位转发至AH上的相应位置。

标志寄存器的位置如下

SAHF:

与LAHF对应,向标志寄存器的低8位写入寄存器AH值。

PUSHF:

将标志寄存器的值放入堆栈。

POPF:

将堆栈的值存储在标志寄存器中。

PUSHF和POPF可以成对使用,用于防止运算中的结果影响标志位寄存器。

0x02标志寄存器1和ZF标志flag的第六位是ZF和零标志位。 执行相关命令后,记录结果是否为0。 结果为0时,ZF=1; 相反,ZF=0。

二、PF标志flag的第二位是PF、奇偶标志位。 执行相关命令后,记录生成的所有位中的1个是否为偶数。 的个数为偶数时,pf=1,奇数时,pf=0。

三.科幻标志flag的第7位是科幻、符号标志位。 执行相关命令后,记录其结果是否为负。 结果为负时,sf=1; 如果不为负,则sf=0。

SF标志只对带符号运算有意义,无符号运算可以改变其值,但对无符号运算没有意义。

四. CF标志flag的第0位是CF,是进位标志的位。 一般来说,在进行无符号数的运算时,记录有运算结果的从最高位到最高位的进位值、或从最高位开始的借位值。

五. OF标志flag的第11位是OF,溢出标志位。 一般来说,OF记录的是有符号数运算的结果是否溢出。 发生溢出时,OF=1; 没有时,OF=0。

请注意CF和OF的区别。 CF是对无符号运算有意义的标志位,OF是对有符号运算有意义的标志位。

六. DF标志位和串行传输指令flag的第10位是DF,方向标志位。 在串行处理命令中,控制每个操作的si、di的增减。

每次df=0操作,si、di都增加

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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。