如果我执行以下操作(其中cx
在班次之前有0b1011或11位十进制):
shl cx, 1
在shl
之后,应设置进位标志。由于shl
会将0b1011移至0b0110,而1将位于CF
。
我的问题是:如何访问进位标志中的值?假设我想将其附加到注册bx
,显然mov bx, cf
不起作用,那么你会怎么做呢?
答案 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)
您应该使用JC
和JNC
条件分支指令来确定标志是否已设置。
还有PUSHFD
条指令将整个EFLAGS
转储到堆栈。