汇编语言是如何区分有符号运算和无符号运算的???

①有符号数+有符号数②有符号数+无符号数③无符号数+无符号数这几组怎么区分的???那么代码是如何影响SF标志位的呢???... ①有符号数+有符号数 ②有符号数+无符号数 ③无符号数+无符号数
这几组怎么区分的???
那么代码是如何影响SF标志位的呢???
展开
 我来答
游驰皓Wk
2018-12-08 · TA获得超过325个赞
知道小有建树答主
回答量:370
采纳率:65%
帮助的人:56.9万
展开全部
对于加法和减法,有符号和无符号的指令是通用的,所以只能通过源码或者是其他的标记来判断是有符号还是无符号
比如如果一个变量是这样定义的话:
a db -1
那如果有add或者sub引用了这个变量的话,那这个就有可能是有符号的运算了,由于有的人习惯将0FFH或其他的所有二进制位全都为1的数定义成-1,所以不能确定,但如果是其他的负数的话,那么这个数是有符号数的概率就大多了.如果是个值为正数的有符号数的话,那就只能通过上下文来判断了
最精确的方法还是看进行加减运算前后的指令,比如:
mov ax,a
mov bx,b
sub a,b
js XXXX
用到的是和有符号数对应的条件转移指令的话,那这个就肯定是有符号的运算了
当然这只是其中的一种方法,具体的判断方法还要看具体的代码,这个一般不会出现太大的歧义,因为如果算法确定了的话,那么这个算法使用的变量的类型一般也就确定了.所以只要你能读懂代码,那这个运算的类型你也肯定能看出来
对于乘法和除法就简单了,直接从指令就能看出来,无符号的乘除是MUL和DIV,有符号的是IMUL和IDIV
浮点数的话全都是有符号数,没有无符号的
沙里波特
2019-12-02 · TA获得超过5243个赞
知道大有可为答主
回答量:1.1万
采纳率:100%
帮助的人:613万
展开全部

汇编语言是如何区分有符号运算和无符号运算的???

①有符号数+有符号数

②有符号数+无符号数

③无符号数+无符号数 

这几组怎么区分的???那么代码是如何影响SF标志位的呢???

--------

不论编程者怎么定义数据,CPU 都是按照普通的二进制来计算。

然后,给出结果,以及标志:CF、OF、ZF、SF。

那么,编程者,对数据,应该怎么定义呢?

这个,你可以随意的。

但是,你把有符号数、无符号数,放在一起相加,你想得出什么结果呢?

呵呵,你也太随意了吧?

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
流弊的名字
2020-11-11
知道答主
回答量:1
采纳率:0%
帮助的人:542
展开全部
声明:8086机器语言里只有加法运算。其他所有运算都是建立在加法之上。
我们理解中的有符号数/无符号数+有符号数/无符号数=得到的结果是一样的,这个结果同时影响着cf和of。
如果我们把它看成有符号数,那么对于8位寄存器,就把最高位看成符号位,具体数字取后七位,所以取值范围是-128~127。超出了就改变了of。
如果我们把它看成了无符号数,那么对于8位寄存器来说,没有符号位,8个位置就都是真实结果,并且一定是正数。所以取值范围是0~255。超出了就改变了cf。
所以你说的这三种情况,都是一样的运算过程,得到的结果同时作用于flag的所有位。当你把它看成这三种运算中的任意一种,都符合这种运算得到的结果
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
永恒pascal
2018-12-09 · TA获得超过4356个赞
知道大有可为答主
回答量:3902
采纳率:93%
帮助的人:638万
展开全部
加减运算指令并不分有无符号,完全在于编程者编程逻辑的把控。
有符号数之间相加、无符号数之间相加都好理解;有符号数和无符号数相加就不好理解了,你要么把它们都当有符号数,要么都看成无符号数进行计算。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式