gpt4 book ai didi

assembly - 如何计算 assembly 中的负数

转载 作者:行者123 更新时间:2023-12-04 23:09:24 27 4
gpt4 key购买 nike

我是组装新手,我有一个关于如何表示负数的问题
我有三个 DWORDS 变量,比如说:

result DWORD 0
i DWORD 3
j DWORD 5

我想计算这个公式:result = i - j + 8
但是,当我做 i-j 时,由于符号的原因,结果将是一个非常高的数字
那么我最终如何使结果正常呢?

最佳答案

对于 32 位 DWORD,整数范围是从 –2147483648 到 2147483647 或十六进制 -0x80000000 到 0x7FFFFFFF。

所以数字 -1 就像 0xFFFFFFFF 一样存在。 (如计数器下溢)

如果设置了高 (31) 位,则该数字为负数。要将负数(否定)变成正数,您必须对数字进行补码并加 1。

示例:

    0xFFFFFFFE   //-2
xor 0xFFFFFFFF //binary complement
---------------
0x00000001 //result of complement
+ 0x00000001 //add 1
---------------
0x00000002 //Result of negation is 2

关于assembly - 如何计算 assembly 中的负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4259949/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com