了解x86中的EFL寄存器,从1到0到-1并返回

问题描述 投票:0回答:1

我的书和大多数资料显示,当进位标志从0更改为1时,但我不明白为什么EFL寄存器会以更大的增量更改值,如下所示:我在注释中显示了寄存器值的更改。就像从0到1移回0到-1时一样。

mov eax , 0FFFFFFFFh
add eax , 1         ;flag from A12 to 257
inc eax             ; flag to 203
neg eax             ; flag to 297
inc eax             ; flag to 257
dec eax             ; flag to 297

inc eax             ; flag to 257
dec eax             ; flag to 297

mov ebx , 0         ;flag doesnt move
sub ebx , 1         ;flag doesnt move

inc ebx             ; flag move to 257
dec ebx             ; flag move to 297


dec eax             ; flag to 283

mov ebx , 0         ;flag doesnt move
sub ebx , 1         ;flag to 297

mov eax , 00FFFFFFFh    ;flag doesnt move
add eax , 1         ;flag to 216

mov ebx , 0Fh           ;flag doesnt move
sub ebx , 1         ;flag to 202
assembly x86 flags
1个回答
0
投票
正如评论中提到的@prl一样,将标志视为单个值没有意义。标志寄存器中的位是单独的标志,除IOPL外,应将其视为不同的实体。

[Wikipedia条目具有解释和参考,它们是准确了解它们如何工作的良好起点。

© www.soinside.com 2019 - 2024. All rights reserved.