如何只修改EFLAGS寄存器中一个标志位的值?

 

版权声明:本文为博主原创文章,2019-08-23,22:21:42转载请附上原文出处链接和本声明。
作者By-----溺心与沉浮----博客园

 

1、写汇编指令只影响CF位的值(不能影响其他标志位

  MOV AX,0xFF00

  ADD AX,0x0101

 

 2、写汇编指令只影响PF位的值(不能影响其他标志位)

   MOV AX,0x3

  ADD AX,0xC

 

 

 3、写汇编指令只影响AF位的值(不能影响其他标志位)

   MOV AX,0xF0

  ADD AX,0x10

 

 

版权声明:本文为博主原创文章,2019-08-23,22:21:42转载请附上原文出处链接和本声明。
作者By-----溺心与沉浮----博客园 

 

 4、写汇编指令只影响SF位的值(不能影响其他标志位)

   MOV AX,0x8000

   ADD AX,0x1

 

 6、写汇编指令只影响OF位的值(不能影响其他标志位)

   O位,想一想,如果采用两个正数相加(即0x00 ~ 0x7f之间的数),使得它变为一个负数,那么这两个数相加的值必然要越过0x7F这条线,必然会导致Sign Flag发生改变,AF位也会发生字节的进位,使得AF位会发生改变,很显然,让两个正数(即0x00 ~ 0x7f)之间的数相加不行,换个角度思考,那么两个负数相加的情况呢(0x80 ~ 0xFF)它是不是会使得C位发生溢出呢,是的吧,那么怎么解决这个问题,计算机我们可以用大一点的负数,减去一个正数。

  MOV AL,0x80

  SUB AL,0x10

 

 

 

 版权声明:本文为博主原创文章,2019-08-23,22:21:42转载请附上原文出处链接和本声明。
作者By-----溺心与沉浮----博客园

转载于:https://www.cnblogs.com/Reverse-xiaoyu/p/11402968.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值