如何只修改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-----溺心與沉浮----博客園


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM