鱼C论坛

 找回密码
 立即注册
查看: 3244|回复: 10

[已解决]关于标志寄存器OF,debug调试是NV ,是不是已经溢出了,应该是OV

[复制链接]
发表于 2017-11-14 17:47:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
assume        cs:code

code         segment
start:        mov ax,0
                mov ax,0ffffh
                add ax,88h
                mov ax,4c00h
                int 21h
code        ends
end  start
最佳答案
2017-11-14 21:54:26
不可以的,这是设计之初就定好的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-14 18:32:09 | 显示全部楼层
of 只管有符号的数的运算是否会超过那个数的范围, 所以mov ax,0ffffh 相当于 ax = -1  , add ax,88h  情况下,ax = 87h, 而NV[Not Overflow]表示没有溢出,所以结果是对的,NV表示没有溢出。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-14 20:03:51 | 显示全部楼层
cpu怎么知道寄存器ax=-1  如何让CPU把寄存器ax相当于ax=ffffh
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-14 20:12:22 | 显示全部楼层
3-3 发表于 2017-11-14 18:32
of 只管有符号的数的运算是否会超过那个数的范围, 所以mov ax,0ffffh 相当于 ax = -1  , add ax,88h  情况 ...


cpu怎么知道寄存器ax=-1  如何让CPU把寄存器ax相当于ax=ffffh
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-14 20:23:19 | 显示全部楼层
本帖最后由 3-3 于 2017-11-14 20:24 编辑

对于CPU来说,它只是一堆数据。 关键在于人怎么看,标志位是人们观察数据的工具,of 只管有符号的数的运算,而cf只管无符号的。在观察of时,数据就是有符号的,在观察cf时,数据就是无符号的。  一定要记住,数据就是数据,它的意义主要取决于人怎么看。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-14 21:14:33 | 显示全部楼层
3-3 发表于 2017-11-14 20:23
对于CPU来说,它只是一堆数据。 关键在于人怎么看,标志位是人们观察数据的工具,of 只管有符号的数的运算 ...

assume        cs:code

code         segment
start:        mov ax,0
                mov ax,0ffffh
                add ax,88h
                mov ax,4c00h
                int 21h
code        ends
end  start
怎么改动下程序,使得ax=65535  然后执行add ax,88h  标志位of 变成OV  非常感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-14 21:23:44 | 显示全部楼层
本帖最后由 3-3 于 2017-11-14 21:26 编辑

在有符号的情况下,整数范围为-32768~32767,最高位为符号位;无符号整数范围为0~65535,最高位仍为数值位。
所以在有符号的情况下,ax=65535 是不可能的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-14 21:44:58 | 显示全部楼层
3-3 发表于 2017-11-14 21:23
在有符号的情况下,整数范围为-32768~32767,最高位为符号位;无符号整数范围为0~65535,最高位仍为数值位 ...

怎样定义MOV ax,0ffffh为无符号  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-14 21:51:44 | 显示全部楼层
3-3 发表于 2017-11-14 20:23
对于CPU来说,它只是一堆数据。 关键在于人怎么看,标志位是人们观察数据的工具,of 只管有符号的数的运算 ...

它只是一堆数据,关键在于你怎么对待它。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-14 21:51:48 | 显示全部楼层
LoveFish- 发表于 2017-11-14 21:44
怎样定义MOV ax,0ffffh为无符号

在8086cpu通用寄存器ax默认都是有符号的吗?可不可以定义通用寄存器ax为无符号FFFFh 相当于 ax=65535而不是ax=-1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-14 21:54:26 | 显示全部楼层    本楼为最佳答案   
不可以的,这是设计之初就定好的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 22:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表