相关疑难解决方法(0)

在减法中携带旗帜

我正在使用MASM32.

使用此代码:

mov eax,5
sub eax,10
Run Code Online (Sandbox Code Playgroud)

将设置CF状态标志.但是使用我的铅笔和纸,我实际上发现MSB没有携带任何东西.是的,我知道从减去数量较少的数字集CF减去.但我想知道为什么?

因为使用此代码:

mov eax,5
mov ebx,10
not ebx
add ebx,1
add eax,ebx
Run Code Online (Sandbox Code Playgroud)

CF标志永远不会被设置.

x86 assembly masm status carryflag

5
推荐指数
1
解决办法
5991
查看次数

算术恒等式和 EFLAGS

由于 ?x = not(x)+1 则意味着 ab = a+not(b)+1,那么

sub rax, rcx
Run Code Online (Sandbox Code Playgroud)

相当于

mov temp, rcx
not temp
add rax, temp
add rax, 1
Run Code Online (Sandbox Code Playgroud)

temp 某些寄存器被认为是易失性的?

换句话说,后者是否以完全相同的方式影响 EFLAGS?如果不是,又怎么能强求呢?

x86 assembly x86-64 eflags

0
推荐指数
2
解决办法
136
查看次数

标签 统计

assembly ×2

x86 ×2

carryflag ×1

eflags ×1

masm ×1

status ×1

x86-64 ×1