c语言标志寄存器

七.标志寄存器

Push指令:

  1. PUSH r32
  2. PUSH r16
  3. PUSH m16
  4. PUSH m32
  5. PUSH imm3/imm16/imm32

POP指令

POP时加几取决于后面容器的宽度

  1. POP r32
  2. POP r16
  3. POP m16
  4. POP m32

PUSHAD指令:

PUSHAD令压入32位寄存器,其入栈顺序是:EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI .

POPAD指令

1.POPAD指令则是PUSHAD指令的逆操作。

2.POPAD指令则是PUSHAD指令的逆操作。POPAD指令按照与上面相反的顺序依次弹出寄存器的值。顺序EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX.

3.PUSHAD POPAD不会影响标志位

 

  1. 进位标志CF(Carry Flag):如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0.
  2. 奇偶标志PF(Parity Flag):奇偶标志PF用于反应运算结果中“1”的个数的奇偶性。如果“1”的个数为偶数,则PF的值为1,否则其值为0.
  3. 辅助进位标志AF:

在发生下列情况时,辅助进位标志AF的值被置为1,否则其值为0

  1. .在字操作时,发生低字节向高字节进位或借位时
  2. .在字节操作时,低4位向高4位进位或借位时。
  1. 零标志ZF:

零标志ZF用来反映运算结果是否为0。

如果运算结果为0,则其值为1,否则其值为0。在判断运算结果是否为0时,可使用此标志。

  1. 符号标志SF:

符号标志SF用来反映运算结果的符号位,他与运算结果的最高位相同。

  1. 溢出标志OF:

溢出标志OF用于反映有符号数加减运算所得结果是否溢出。

如果运算结果超出当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被置为0。

最高位进位与溢出的区别:

进位标志表示无符号数运算结果是否超出范围。

溢出标志表示有符号数运算结果是否超出范围。

溢出主要是给有符号运算使用的,在有符号的运算中,有如下的规律:

①.正+正=正,如果结果是负数,则说明有溢出

②.负+负=负,如果结果是正数,则说明有溢出

③.正+负,永远都不会有溢出

ADC指令:带进位加法

格式:ADC R/M,R/M/IMM    两边不能同时为内存,宽度要一样

ADC AL,CL

ADC BYTE PTR DS:[12FFC4],2

ADC BYTE PTR DS:[12FFC4],AL

SBB指令:带借位减法

格式:SBB R/M,R/M/IMM  两边不能同时为内存,宽度要一样

 SBB AL,CL

SBB BYTE PTR DS:[12FFC4],2

SBB BYTE PTR DS:[12FFC4],AL

XCHG指令:交换数据

格式: XCHG R/M,R/M/IMM   两边不能同时为内存,宽度要一样

XCHG AL,CL

XCHG BYTE PTR DS:[12FFC4],EAX

XCHG BYTE PTR DS:[12FFC4],AL

MOVS指令:移动数据 内存-内存

BYTE/WORD/DWORD

MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]   简写为:MOVSB

MOVS WORD PTR ES:[EDI],BYTE PTR DS:[ESI]   简写为:MOVSW

MOVS DWORD PTR ES:[EDI],BYTE PTR DS:[ESI]  简写为:MOVSD

REP指令:按计数寄存器(ECX)中指定的次数重复执行字符串指令

MOV ECX,10

REP MOVSD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值