首页 > 其他分享 >标志寄存器

标志寄存器

时间:2024-09-26 16:05:45浏览次数:1  
标签:标志 MOV AL EAX CF 寄存器 进位

一、

 1、进位标志寄存器CF(Carry Flag):如果运算结果的最高位产生了一个进位或借位,那么其值为1,否则为0

MOV AL,0xEF                                                      MOV AL,0xFE

ADD AL,2                                                             ADD AL,2

先在EAX中放入5555FFFF再加1,EAX变成55560000,此时看EAX首位是5没有进位,所以CF是0

同理把EAX的后四位AL放上最大的数FF再加一,此时进位,CF为1

2、奇偶标志PF:用于反应运算结果中“1”的个数的奇偶性,若“1”的个数为偶数,则PF值为1,反之为0

MOV AL,3      EAX后两位由00变成03

 

ADD AL,3     在03基础上加3变06,06的二进制是0110,有2个1是偶数,所以PF为1

 

ADD AL,2    加2后由06变08,08二进制是1000,只有一个1,所以PF为0

 

3、辅助进位标志AF

 

(1)若是32位二进制转换成8位16进制:FFFFFFFF,则观察从前往后数第5位进不进位,进位则A位为1

输入32位的数55EEFFFF再加2变成55EF0001,第五位F已进位,则A位是1

(2)若是16位二进制转换成4位16进制:FFFF,则观察从前往后数第三位进不进位,进位则AF为1

 

5EFE加2变成5F00,已进位则A为1

 4、零标志ZF:

XOR EAX,EAX             EAX与EAX异或结果都是0,所以也是清零效果,运算结果为0,Z位为1

XOR EAX,EAX会影响标志位,与MOV EAX,0(也可以把EAX变成0)相比MOV指令不修改寄存器的值

5、符号标志SF:(要注意数据宽度,最高位由数据宽度决定,如EAX是32位二进制就有8位16进制,但是AL只有2位16进制只占最后两位,00000052看进位是看5的位置)

MOV AL,7F

ADD AL,2                7F的二进制是01111111,再加2要进位,首位(符号位)0会变成1,S位也会又0变成1(但是S位为1时只能说明最高位为1不能说明这个数一定是个负数)

(MOV指令不改变标志寄存器)

6、溢出标志OF:(与CF区别开,做无符号运算时关注的CF,有符号运算关注OF)

 

 

 根据上面的圆:

正加正超过7F就为负数了,若为负数此时溢出(若是无符号数看相加有没有超过FF,超过则溢出)

负加负超过FF为正,此时溢出

 

 

标签:标志,MOV,AL,EAX,CF,寄存器,进位
From: https://www.cnblogs.com/Lyjia-n/p/18408343

相关文章

  • java读取寄存器数据
    一:概述在嵌入式系统或硬件编程中,Java通常不是首选语言,因为它运行在虚拟机上,与硬件层面的交互不够直接。然而,随着Java技术的发展,以及JNA(JavaNativeAccess)等库的出现,使得Java也能进行一些底层操作,包括读取寄存器数据。本文将探讨几种在Java中读取寄存器数据的方法,并提供实际案例。......
  • java读取寄存器数据
    一:概述在嵌入式系统或硬件编程中,Java通常不是首选语言,因为它运行在虚拟机上,与硬件层面的交互不够直接。然而,随着Java技术的发展,以及JNA(JavaNativeAccess)等库的出现,使得Java也能进行一些底层操作,包括读取寄存器数据。本文将探讨几种在Java中读取寄存器数据的方法,并提供实际案例。......
  • 正点原子阿尔法ARM开发板-IMX6ULL(八)——串口通信(寄存器解释)(补:有源蜂鸣器)
    文章目录一、蜂鸣器(待,理解)1.1第一行1.2第二行1.3第三行二、串口原理2.1通信格式2.2UART寄存器一、蜂鸣器(待,理解)1.1第一行对于第一行,首先先到fsl_iomuxc文件里面寻找IOMUXC_SetPinMux这个函数其次确定了SNV_TAMPER1并且复用为GPIO模式之后查看,IM6ULL的参考手册,看到第32章......
  • CPU内部结构域寄存器
    CPU内部结构域寄存器64位和32位系统区别:寄存器是CPU内部最基本的存储单元。CPU对外是通过总线(地址、控制、数据)来和外部设备交互的,总线的宽度是8位,同时CPU的寄存器也是8位,那么这个CPU就叫8位CPU。如果总线是32位,寄存器也是32位的,那么这......
  • ①原装进口芯片一主多从RS485通讯转换器从站转地址波特率转校验位转寄存器转停止位mod
    一主多从RS485通讯转换器从站转地址波特率modbus协议转换中继器型号:485一主一从 MS-M1101      485一主二从 MS-M1201      485一主三从 MS-M1301      485一主四从 MS-M1401产品概述MS-M1X01系列一主多从RS485通讯转换器......
  • GPT对话知识库——将寄存器中的一位数据读到变量中需要什么步骤?&C语言中掩码的作用。
    目录1,问:1,答:1.确定目标寄存器地址2.定位目标位位操作的基本步骤:3.示例代码示例步骤:4.详细解释步骤5.举例6.常见用法总结注:C语言中掩码的作用:参考附件:提问模型:GPT-4o-miniFree提问时间:2024.09.131,问:将寄存器中的一位数据读到变量中需要什么步骤1,......
  • 速通汇编(七)BX、SI、DI寄存器,BP寄存器,直接寻址和间接寻址
    下文中出现的"idata",指的都是任意常量一,基于BX、SI、DI等寄存器的寻址形式在第五篇中曾介绍过DS寄存器的作用,简要复习一下->速通汇编(五)认识段地址与偏移地址,CS、IP寄存器和jmp指令,DS寄存器_arm汇编前两个地址是什么-CSDN博客可以如此说:汇编中出现的形如[偏移地址]形式的......
  • STM32寄存器,标准库和HAL库编程(浅谈)
    寄存器编程、标准库编程和HAL库编程在嵌入式系统开发中是三种常见的编程方式,它们主要区别在于抽象层次、灵活性和开发效率。以下是对这三种编程方式的详细比较:1.寄存器编程(Register-LevelProgramming)寄存器编程是指直接操作微控制器或处理器的硬件寄存器,以控制外设和执行......
  • 为什么寄存器需要建立时间和保持时间约束?——从门级角度理解
    目录1.建立时间与保持时间 2.从寄存器的内部结构理解建立时间与保持时间 2.1寄存器的结构 2.2主从锁存器构成的寄存器 2.3传输门构成的寄存器 3.查看寄存器的建立时间和保持时间  文章内容为博主学习记录,如有错误,欢迎在评论区指正。1.建立时间与保持......
  • stm32 Unix时间戳&BKP备份寄存器&RTC实时时钟(读写备份寄存器&实时时钟)
    理论1.Unix时间戳(1)Unix时间戳Unix时间戳(UnixTimestamp)定义为从UTC/GMT的1970年1月1日0时0分0秒开始所经过的秒数,不考虑闰秒时间戳存储在一个秒计数器中,秒计数器为32位/64位的整型变量世界上所有时区的秒计数器相同,不同时区通过添加偏移来得到当地时间 (2)UTC/GMTGM......