单片机-求解答如何判断OF标志位

问题描述

求解答如何判断OF标志位

1,两个负数相与如何判断?
2,两个同号的数相加如何判断?
3,两个异号的数相加如何判断?

解决方案

简单来说,比如8位数表示范围是-128~127
不管什么数相加还是相减,你先把二进制转换为10进制,然后人为计算,结果在这个范围之外,OF=1,否则OF=0
注意,负数转换为十进制,前面加上负号,符号位以外取反+1

解决方案二:

先要理解负数在内存中是2'补码存储的,也就是正数的二进位码取反加1得到。举个栗子:

8-bit数值+8,和 -8相加:

+8  0000 1000
- 8  1111 1000 <= +1<1111 0111<=+8取反
+---------------
=    0000 0000

参考《VirtualNES虚拟红白机》The force: Forth 语言部分 http://blog.csdn.net/winsenjiansbomber/article/details/50747947

负数和正数的运算都是加法器的运算,这种情况下,如果P>|N|就会产生溢出。

两个同号的数相加如果值超出范围OF=1。

两个负数相与就是两个的与运算,如果结果为0那么 ZF=0。

解决方案三:

先要理解负数在内存中是2'补码存储的,也就是正数的二进位码取反加1得到。举个栗子:

8-bit数值+8,和 -8相加:

+8  0000 1000
-8  1111 1000 <= +1<1111 0111<=+8取反
+---------------
=   0000 0000

参考《VirtualNES虚拟红白机》The force: Forth 语言部分 http://blog.csdn.net/winsenjiansbomber/article/details/50747947

负数和正数的运算都是加法器的运算,这种情况下,如果P>|N|就会产生溢出。

两个同号的数相加如果值超出范围OF=1。

两个负数相与就是两个的与运算,如果结果为0那么 ZF=0。

解决方案四:

“负数和正数的运算都是加法器的运算,这种情况下,如果P>|N|就会产生溢出。”这个描述有问题,进位不等于于溢出,负数与正数相加是典型的情况,经常出现高位有进位,却没有溢出。

解决方案五:

谢谢解答,我查到的答案,OR、AND指令影响标志位PF、SF、ZF,使CF=0、OF=0

时间: 2024-09-18 01:47:40

单片机-求解答如何判断OF标志位的相关文章

汇编语言 单片机-求解答用8253产生方波的问题

问题描述 求解答用8253产生方波的问题 8253的三个计数器有三个计数器,和6种工作方式,在产生方波信号时,需要用方式2.3分频实现,此时选择哪个计数器和对应的工作方式,实在有点混乱,求大神理顺一下 解决方案 http://wenku.baidu.com/link?url=sjgBxUBQ1KMiQQThnDCK15butBKphFUXxrDcKdg7rOiLucoWxyt8fG3sWZxi47t4xHOvjDwa2MUrZpzWXJ6FG8VH00srs5akqsWN7g-Bkgi

html-HTML javascript脚本对数据校验,判断框没出现直接跳转了,求解答!

问题描述 HTML javascript脚本对数据校验,判断框没出现直接跳转了,求解答! HTML javascript脚本对数据校验,判断框没出现直接跳转了,求解答!代码查了好几遍,实在找不出哪错了! <html> <head> <title>注册</title> <script language="JavaScript" type="text/javascript"> function custChec

我编了一个单片机的时钟程序,想要实现串口改变时间,可是不知道应该怎么编入串口求解答

问题描述 我编了一个单片机的时钟程序,想要实现串口改变时间,可是不知道应该怎么编入串口求解答 这是我编的,其中串口的引入是错误的求改正 #include#define uint unsigned int#define uchar unsigned char uchar hour,min,sec,temp;uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void delay(uint z);void d

有关位运算和缓冲区的 问题,求解答

问题描述 有关位运算和缓冲区的 问题,求解答 在利用哈夫曼树进行压缩时,建立好哈夫曼树,得到得到每个叶子节点中的字符编码之后,**_如何使用位运算将编码中的每个位(BIT)设置到一个char类型的位缓冲中,可能多个编码才能填满一个位缓冲,每填满一次,将位缓冲区以单个字节的形式写入文件._** 解决方案 建议先把需求用个例子说明一下. 解决方案二: char cBit=0:cBit= CBit|0x01;cBit= CBit|0x02;cBit= CBit|0x04;cBit= CBit|0x08

代码-求解答谢谢,有关C语言的问题,请哪位大神解答。谢谢

问题描述 求解答谢谢,有关C语言的问题,请哪位大神解答.谢谢 假设有4个有序表A,B,C和D,它们分别含有的元素个数为17,28,36,67,各个表的元素已按照升序排列,如何用Huffman树,通过两两合并并合成有序表,要求在最坏的情况下比较次数达到最小,说明你的合并过程!!! 请问这个怎么合并啊,方便的话给个代码可以吗,谢谢 解决方案 求大神帮解答javaEE这个问题,谢谢了liunx 串口通信问题,跪求各位大神解答 解决方案二: 霍夫曼树构造思想就是依次选择当前最短的两个表进行合并,每次合并

设计-课设课题,涉及传感器 单片机 测控电路 PLC 问题,详细要求如下,求解答,急急急!!!!!!

问题描述 课设课题,涉及传感器 单片机 测控电路 PLC 问题,详细要求如下,求解答,急急急!!!!!! 课设题目:数字式温度控制仪 要求:设计一个数字式温度控制仪,通过温度传感器采集烧水炉当中的当前温度,并在LED数码管上显示烧水炉内的温度,设计键盘设定,通过案件给定要控制的烧水炉中的目标温度,该温度值也可显示在LED数码管上与测量值轮流显示:设计控制电路对烧水炉的通断状态进行自动控制,采用通断控制电路控制占空比,实现PWM控制算法,使烧水炉的温度稳定在设定值. 基本要求:完成相应的硬件系统整

怎么判断验证码之前已经生成过??求解答

问题描述 怎么判断验证码之前已经生成过??求解答 不要使用将已经生成的验证码和刚刷新出来的验证码进行匹配,这方法不是很好,有没有其他方法解决,确保之前没有生成过一样的验证码 解决方案 除非你把生成过的记录下来,或者按照顺序生成,否则没法判断.但是验证码没有必要这么做,只要是充分随机的就可以. 解决方案二: 这个验证码就是为了防止恶意注册的,其实第一次或者第多少次都一样也是没有关系的.而且已经生成的验证码和刚刷出来的验证码是一样的概率是很小很小的. 解决方案三: 将新生成的和记录下来的比对即可,但

软件更新 编程-有哪位大神用过linux下的libghttp-1.0.9的吗求解答

问题描述 有哪位大神用过linux下的libghttp-1.0.9的吗求解答 就是请求指定url会给客户端返回值,如何获得这个返回值呢,有类似于get_body的函数吗,我在头文件里没看见,没办法英语是硬伤啊

bigbluebutton-哪位大神了解bigbulebutton,小弟遇到一个难题求解答

问题描述 哪位大神了解bigbulebutton,小弟遇到一个难题求解答 小弟最近碰到一个问题,有个客户自己在ubuntu14.04上安装的bigbluebutton总是报webrtc echo test failed,因为客户那边用的是mac,所以一开始以为是浏览器不支持,但换了别的浏览器以后一样报错,错误代码还根据不同的浏览器会变化.请问这种问题如何解决? 解决方案 http://docs.bigbluebutton.org/install/install.html 看下后面的排错部分