cpu-关于8086CPU标志寄存器溢出的问题

问题描述

关于8086CPU标志寄存器溢出的问题
文章说,对于溢出只是针对于有符号数,但是对于无符号数,比如8为寄存器,表示的
范围是0~255,如果两个正数相加超过了255,不叫溢出了吗?为什么这里只讨论的是有
符号的数

解决方案

手头没有8086的文档,模糊记得eflags里面有CF和OF两个标记,你说的“溢出”应该对应CF,即产生了进位。OF对于有符号数。

The status flags (bits 0 2 4 6 7 and 11) of the EFLAGS register indicate the results of arithmetic instructions
such as the ADD SUB MUL and DIV instructions. The status flag functions are:
CF (bit 0) Carry flag — Set if an arithmetic operation generates a carry or a borrow out of the mostsignificant
bit of the result; cleared otherwise. This flag indicates an overflow condition for
unsigned-integer arithmetic.
OF (bit 11) Overflow flag — Set if the integer result is too large a positive number or too small a negative
number (excluding the sign-bit) to fit in the destination operand; cleared otherwise. This
flag indicates an overflow condition for signed-integer (two’s complement) arithmetic.

时间: 2024-09-17 11:24:21

cpu-关于8086CPU标志寄存器溢出的问题的相关文章

汇编基础:标志寄存器

Intel 8086/8088CPU设置了一个16位的标志寄存器,用来反映微处理器的当前状态和某些控制,标志寄存器中有9个标志位,分为两大类:状态标志(CF, PF, AF, ZF, SF, OF)和控制标志(TF, IF, DF),状态标志由CPU根据运算结果自动设置,用来反映CPU的执行单元EU执行算术运算或逻辑运算后的结果特征,这些特征常用来影响或者是控制某些后续指令的执行,控制标志由系统程序或者用户程序用指令来设置或者是清除,用来控制CPU的某些操作. 1).状态标志 (1)进位位CF

计组-gdb 可以查看标志寄存器OF吗/(ㄒoㄒ)/~~

问题描述 gdb 可以查看标志寄存器OF吗/(ㄒoㄒ)/~~ HELP/(ㄒoㄒ)/~~ (gdb) info reg调试出来的 efalgs[PF SF IF RF ]是什么啊,是condition code吗? cs ss ds --又都是什么啊? 解决方案 建议你用一个好一点的调试器,比如ollydbg. 解决方案二: gdb查看内存区和寄存器i

C语言CPU与寄存器的简单介绍

一.CPU的组成 CPU分为 4大组件,分别为: 寄存器 控制器 运算器 时钟 可以暂存一些值,存储数据(相当于CPU中的内存) 控制寄存器的读写和更换等操作 辅助单元,是协调者 时钟就是决定CPU运算速度的 在这四个组件中,我们程序员日后使用最多的就是寄存器了,所以接下来会重点放在寄存器上. 二.寄存器 现代计算机的CPU的寄存器大致会有以下几种类型,还是用一个表格来表示 累加器 标志寄存器 程序计数器 基址寄存器 做累加运算最快 用32位空间来记录CPU的各种状态,如第四位 ZERO 的标志

32位寄存器

32位寄存器     EBP和ESP是32位的SP,BP   ESP是堆栈指针   EBP是基址指针   ESP与SP的关系就像AX与AL,AH的关系 32位CPU所含有的寄存器有: 4个数据寄存器(EAX.EBX.ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES.CS.SS.DS.FS和GS) 1个指令指针寄存器(EIP) 1个标志寄存器(EFlags) 1.数据寄存器 数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作

cpu学习简介1

1.cpu的基本结构: cpu的基本部分由运算器,cache(缓存)和控制器 三大部分组成.一般情况下为了处理异常情况和特殊请求,还必须有中断系统: cpu要完成取指令操作,必须要有存储器来存放当前指令的地址:要分析指令,必须要有存放当前指令的寄存器和对指令译码的部件:要执行指令,必须要有一个能发出各种命令序列的控制部件CU:要完成算数运算和逻辑运算,必须要有存放操作数的寄存器和进行运算的ALU:为了处理特殊情况还应该有中断系统. 因此cpu一般可由寄存器,控制单元(control unit),

软考考点---CPU

软考考点---CPU         中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit).      组成:        功能: 读取指令 解释指令 读取数据 处理数据 保存数据        详解:       1. 寄存器组分为两大类:         用户可见的寄存器,有通用寄存器.数据寄存器.地址寄存器.标志寄存器等:         状态寄存器,包括程序计数器PC.指

13 种在 Linux 系统上检测 CPU 信息的工具

13 种在 Linux 系统上检测 CPU 信息的工具 问题: 我想要了解我的电脑关于CPU处理器的详细信息,查看CPU信息比较有效地方法是什么? 根据你的需要,有各种各样的关于你的CPU处理器信息你需要了解,比如CPU供应商名.模型名.时钟频率.插槽/内核的数量, L1/L2/L3缓存配置.可用的处理器能力(比如:硬件虚拟化.AES, MMX, SSE)等等.在Linux中,有许多命令行或基于GUI的工具就能来展示你的CPU硬件的相关具体信息. 1. /proc/cpuinfo 最简单的方法就

CPU Instruction Pointer

CPU Instruction Pointer eryar@163.com 1.Introduction CPU对存储器的读写通过总线Bus来完成,总线又分为地址总线(Address Bus).数据总线(Data Bus).控制总线(Control Bus).地址总线AB决定了CPU的寻址能力,即可以访问的存储空间的大小.数据总线DB决定了CPU的一次操作中可以处理的数据的大小,16位CPU一次可以加载两个字节,32位CPU一次可以加载4个字节.当然CPU的主频越大,那么在相同的时间内,处理的次

ARM处理器的寄存器组织

   一,ARM状态下的寄存器组织     ARM处理器有37个寄存器,包括31个通用寄存器(含PC)和6个状态寄存器.如图:          1,状态寄存器                   状态寄存器公有6个,其中除了公用的CPSR之外,还有分组的SPSR,程序状态寄存器的格式为:           其中,条件标志码为N,Z,C,V,Q; 分别为符号标志位,全0标志位,进借位标志,溢出标志,增强的DSP运算指令是否标志.      控制位为I,F,T,M4-M0; 其中I,F为控制中断