在debug中透过堆栈来观看flag值变化不太可靠,因为debug本身也用sp,系统里
无时无刻的中断也可能动到栈,还是用LAHF比较实际,下面一个简单例子
CLC ;清除CF
LAHF ;载入FLAG中0-7bit入ah
MOV BL,AH ;保存
STC ;设定CF
LAHF
MOV BH,AH ;保存
SUB AH,AH ;改动ZF和SF
LAHF ;载入FLAG入ah

看一下结果,第1次的FLAG在BL,这里是86,
10000110
第2次的FLAG在BH,这里是87,
10000111
和BL相差一个BIT,正正是CF的位置,就是两个指今CLC和STC的结果,
接下来的AH=46
01000110
这是ZF和SF的结果
无时无刻的中断也可能动到栈,还是用LAHF比较实际,下面一个简单例子
CLC ;清除CF
LAHF ;载入FLAG中0-7bit入ah
MOV BL,AH ;保存
STC ;设定CF
LAHF
MOV BH,AH ;保存
SUB AH,AH ;改动ZF和SF
LAHF ;载入FLAG入ah

看一下结果,第1次的FLAG在BL,这里是86,
10000110
第2次的FLAG在BH,这里是87,
10000111
和BL相差一个BIT,正正是CF的位置,就是两个指今CLC和STC的结果,
接下来的AH=46
01000110
这是ZF和SF的结果