我正在使用emu8086学习8086汇编,我在玩一些旋转指令,至于我的问题,我知道对于超过1个位移/旋转,溢出标志OF的行为是未定义的。 但是当我尝试以下代码时 结果是 BH 寄存器中的 27H,对于标志,进位和溢出标志设置为 1,即使 OF 不应该设置,因为它是未定义的。 有人可以解释一下OF是如 ...
我对OF在以下说明中设置imul感到困惑 但不在以下说明中 ...
在 x86 英特尔参考手册中说: “仅当使用指令的单班次 forms 时才会设置溢出标志。[...]” 但是当我遇到以下情况时: 这里答案的高位与进位结果不一样,即cf = 1 ,没有设置溢出标志。 我不明白为什么这是正确的行为。 为什么仅在使用单班时设置溢出标志? ...
我想使用 x86 指令模拟 8051。 在 32 位模式下,我必须向左旋转才能获得进位标志。 获取溢出标志的步骤更多。 你知道如何对 AL、BL、CL、DL 进行算术运算和更新标志吗? ...
在过去的几天里,我一直在努力解决试图获得 EFLAGS 状态的奇怪行为。 为此,我编写了以下代码:#include <stdio.h> int flags_state() { int flags = 0; __asm__ __volatile__("pushfq"); ...
执行以下两条指令后: 我得到奇偶校验标志 = 1(表示偶数个) 但是,递减值的二进制表示是: 1111 1101 0101 0000 它有 9 个(即奇数个)。 此外,在此之后执行NEG BX会导致 PF = 0。但是,2 的补码是: 0000 0010 1011 0000有偶数个。 所以我希望P ...
在 EMU8086 上进行测试,代码片段如下: 模拟器显示AF为0 手动减法时,我们得到 7 - 4 = 3,这里没问题。 然后 2 - 4,然后我们必须从下一个半字节借用。 所以根据我的理解,AF应该是1。 ...
例如,如果我有以下代码: 零标志的默认值是否未定义? ...
我正在为英特尔 80386 处理器编写 NASM 中的程序,我需要在 GPR(通用寄存器)中的特定位中设置进位标志的值,而不更改寄存器中的其他位。 是否有可能在不使用任何形式的轮班/轮换的情况下这样做? ...
假设有一段代码: 在这种情况下,CF = 0 标志,但在我看来它应该等于 1,因为减法运算是在加法运算上实现的,而处理器不知道我们将其作为输入,是有符号的还是无符号的数字,它只是完成它的工作。 也就是说,上面的代码等价于以下内容: 在al寄存器中输入值12,即0000 1100 在bl寄存 ...
据我了解,在现代故障 CPU 上,最昂贵的东西之一是 state,因为必须在多个版本中跟踪 state,在许多指令中保持最新等。 一些指令集,如 x86 和 ARM 广泛使用标志,这些标志是在成本 model 不是今天的成本时引入的,标志只需要几个逻辑门。 诸如每条算术指令设置标志以检测零、进位和 ...
如果部分汇编代码如下: 这个 jle 是否意味着它会在 (%ebx ^ %ebp == 0) 时跳转,因为这会将 ZF 设置为 1? ...
我正在尝试为我的 x86 程序集 class 回答教科书中的一个问题。 其中一个示例要求解释为什么 over 标志会帮助您确定在这种情况下 al 的最终值是否在有效的有符号范围内。 我最初的想法是应该调用溢出标志,因为 -1 + 130 = 129,它超出了有符号 8 位 integer 的范围, ...
因为 −x = not(x)+1 意味着 ab = a+not(b)+1,所以 相当于 某些寄存器在哪里 temp 被认为是易失性的? 换句话说,后者是否以完全相同的方式影响 EFLAGS? 如果不是,怎么能被迫? ...
我在emu 80x86 IDE中尝试了以下代码: 在 output 中,它显示在模拟器al=FF中,我确实理解它,但我不明白为什么在标志部分cf=1 ...
使用 Intel x86 / emu8086 仿真器,当出现具有以下值的字节溢出时: 为什么CF是0,OF也是0? 谢谢 ...
我的书和大多数资料显示,当进位标志从 0 更改为 1 时,但我不明白为什么 EFL 寄存器会以更大的增量更改值,如下所示:我将注释显示为寄存器值的更改。 就像从 0 到 1 回到 0 到 -1 时一样。 ...
在VS2013中调试x86汇编代码时,需要查看FLAGS寄存器的内容。 但是,当我在寄存器 Window 中启用“标志”时,我得到: OV = 0 上 = 0 EI = 1 PL = 1 ZR = 0 AC = 1 PE = 0 CY = 1 就我而言,我想检查 PL 符号值的状态。 那么多久更 ...
在再次处理 x86 程序集时,我遇到了一种情况,我试图了解如何解释 cpu 的行为。 当使用cmp命令比较两个无符号整数时,进位的 state 和零标志反映了两个整数的关系。 因为cmp的行为类似于sub命令,但没有将减法的结果写入最终寄存器,所以进位标志占据了借位标志的一部分。 此外,减法只不过 ...