携带旗帜的价值

时间:2014-02-18 21:23:54

标签: assembly x86 masm

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

 shl cx, 1

shl之后,应设置进位标志。由于shl会将0b1011移至0b0110,而1将位于CF

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

2 个答案:

答案 0 :(得分:8)

这就是“附加携带”的含义:

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

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

setc bl     ; BL = CF ? 1 : 0

答案 1 :(得分:1)

您应该使用JCJNC条件分支指令来确定标志是否已设置。

还有PUSHFD条指令将整个EFLAGS转储到堆栈。