如何只修改EFLAGS寄存器中一個標誌位的值?

 

版權聲明:本文爲博主原創文章,2019-08-23,22:21:42轉載請附上原文出處連接和本聲明。
做者By-----溺心與沉浮----博客園spa

 

一、寫彙編指令隻影響CF位的值(不能影響其餘標誌位3d

  MOV AX,0xFF00blog

  ADD AX,0x0101博客

 

 二、寫彙編指令隻影響PF位的值(不能影響其餘標誌位)im

   MOV AX,0x3d3

  ADD AX,0xCimg

 

 

 三、寫彙編指令隻影響AF位的值(不能影響其餘標誌位)計算機

   MOV AX,0xF0思考

  ADD AX,0x10co

 

 

版權聲明:本文爲博主原創文章,2019-08-23,22:21:42轉載請附上原文出處連接和本聲明。
做者By-----溺心與沉浮----博客園 

 

 四、寫彙編指令隻影響SF位的值(不能影響其餘標誌位)

   MOV AX,0x8000

   ADD AX,0x1

 

 六、寫彙編指令隻影響OF位的值(不能影響其餘標誌位)

   O位,想想,若是採用兩個正數相加(即0x00 ~ 0x7f之間的數),使得它變爲一個負數,那麼這兩個數相加的值必然要越過0x7F這條線,必然會致使Sign Flag發生改變,AF位也會發生字節的進位,使得AF位會發生改變,很顯然,讓兩個正數(即0x00 ~ 0x7f)之間的數相加不行,換個角度思考,那麼兩個負數相加的狀況呢(0x80 ~ 0xFF)它是否是會使得C位發生溢出呢,是的吧,那麼怎麼解決這個問題,計算機咱們能夠用大一點的負數,減去一個正數。

  MOV AL,0x80

  SUB AL,0x10

 

 

相關文章
相關標籤/搜索