assembly - 进位标志值

标签 assembly x86 masm

如果我执行以下操作(其中 cx 在移位之前有 0b1011 或十进制 11):

 shl cx, 1

shl之后,应该设置进位标志。因为 shl 会将 0b1011 移动到 0b0110,而 1 将位于 CF 中。

我的问题是:如何访问进位标志中的值?假设我想将它附加到寄存器 bx 中,显然 mov bx, cf 不起作用,那么你会如何做呢?

最佳答案

这就是“add-with-carry”的用途:

adc bx, 0   ; adds "0" plus the value of CF to bx

如果您想设置一个(字节)寄存器完全等于进位标志的值,请使用“set-if-carry”:

setc bl     ; BL = CF ? 1 : 0

关于assembly - 进位标志值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21865660/

相关文章:

assembly - ASM 空间优化 : EAX vs EBX

c - x86 过程调用内存分配

linux - 我不明白 "and ax, 1111111100000000b"指令在做什么

汇编-x86调用指令和内存地址?

assembly - x86,BYTE 和 BYTE PTR 的区别

c - 什么时候使用 CORDIC 或多项式近似更有效?

c++ - 在 C++ 中调用汇编

c++11 - C++ 中的数据竞争

windows - assembly :将某些东西打印到屏幕(到命令行)的最佳方法是什么

gcc - 为什么 GCC 不将 a*a*a*a*a*a 优化为 (a*a*a)*(a*a*a)?