asm基础——汇编指令之CPU的标识位操作指令

来源:互联网 发布:法律英语在线翻译软件 编辑:程序博客网 时间:2024/05/29 00:34

CPU的状态标识位有以下的几个:

CF:反映无符号运算是否产生进位或借位,是则CF=1,否则CF=0。

PF:反映运算结果低8位中1的个数,1的个数为偶数,则PF=1,否则PF=0。

AF:在字节操作时低半字节向高半字节进位或借位时,字操作时低字节向高字节进位或借位时,AF=1,否则AF=0。

ZF:反映运算结果是否为0,结果为0时ZF=1,否则ZF=0。

SF:反映运算结果是否为负,结果为负时SF=1,否则SF=0。

OF:反映有符号运算结果是否溢出,结果溢出时OF=1,否则OF=0。

IF:中断标志。

DF:方向标志。

某些标识位可以通过指令直接来改变,如下面的指令:

CLC

清除进位标志。

OF

DF

IF

SF

ZF

AF

PF

CF

 

 

 

 

 

 

 

0

说明:清除进位标志。

指令格式:clc

STC

设置进位标志。

OF

DF

IF

SF

ZF

AF

PF

CF

 

 

 

 

 

 

 

1

说明:设置进位标志。

指令格式:stc

CMC

进位标志取反。

OF

DF

IF

SF

ZF

AF

PF

CF

 

 

 

 

 

 

 

*

说明:当前进位标志取反。

指令格式:cmc。

CLD

清除方向标志。

OF

DF

IF

SF

ZF

AF

PF

CF

 

0

 

 

 

 

 

 

说明:清除方向标志。此时,字符串指令自动增加(E)SI和(E)DI的值。

指令格式:cld

STD

设置方向标志。

OF

DF

IF

SF

ZF

AF

PF

CF

 

1

 

 

 

 

 

 

说明:设置方向标志。导致字符串操作指令自动减少(E)SI和(E)DI的值,这样字符串处理就能从高地址向低地址进行。

指令格式:std

CLI

清除中断标志。

OF

DF

IF

SF

ZF

AF

PF

CF

 

 

0

 

 

 

 

 

说明:清除中断标志。禁止可屏蔽硬件中断,知道执行一条STI指令为止。

指令格式:cli

STI

设置中断标志。

OF

DF

IF

SF

ZF

AF

PF

CF

 

 

1

 

 

 

 

 

说明:设置中断标志。允许可屏蔽中断。中断发生时自动禁止中断,因此中断处理程序应使用STI立即重新允许中断。

指令格式:sti

其它的标识位并没有特殊的指令,但是通过一些操作也是可以控制的,比如CF和AF,通过加减时的进位就可以设置或者清除。

另外还有两个指令:LAHF和SAHF,通过它们可以将标识位在AH和CPU标识寄存器之间进行切换:

LAHF

将标志送到AH。

OF

DF

IF

SF

ZF

AF

PF

CF

 

 

 

 

 

 

 

 

说明:复制下列标志到AH:符号标志、零标志、辅助进位标志、奇偶标志和进位标志。

指令格式:lahf

SAHF

将AH的值送到标志寄存器。

OF

DF

IF

SF

ZF

AF

PF

CF

 

 

 

*

*

*

*

*

说明:复制AH到标志寄存器的0到7位中。

指令格式:sahf

可以看到,实际上也并不是可以改变所有的寄存器标志位,只能改变其中的SF/ZF/AF/PF/CF。



0 0
原创粉丝点击