1.flag暫存器:①.用來儲存相關指令的某些執行結果
②.用來為cpu執行相關指令提供行為依據
③.用來控制cpu的相關工作
2.8086cpu的標誌暫存器flag有16位,其中儲存資訊通常被稱作為程式狀態字(psw),flag與其他暫存器不同,其他暫存器都是用來存放資料的,都是整個暫存器具有乙個含義,而flag暫存器是按位起作用的.
3.zf:flag的第六位,零標誌位,它記錄相關指令執行後,其結果是否為0,如果結果為0。那麼zf=1,否則zf=0.
4.pf:flag的第二位,奇偶標誌位,它記錄相關指令後,其結果的所有bit位中1的個數是否為偶數,如果1的個數為偶數,pf=1,如果為奇數那麼pf=0.
5.sf:flag的第七位,符號標誌位,它記錄相關指令執行後,其結果是否為負,如果結果為負,sf=1,如果非負,sf=0
6.cf:flag的第零位,進製標誌位,在進行無符號數運算的時候,它記錄了運算結果的最高有效位向更高位的進製值,或從更高位的錯位值.
7.of:flag的第十一位,溢位標誌位,of記錄了有符號運算的結果是否發生了溢位,如果發生溢位,of=1,如果沒有of=0.
cf和of:cf是對無符號數運算有意義的標誌位,而of是對有符號數運算有意義的標誌位
8.adc : 進製加法指令,adc 操作物件1,操作物件2
功能:操作物件1=操作物件1+操作物件2+cf
9.sbb : 帶錯位減法指令,sbb 操作物件1,操作物件2
功能:操作物件1=操作物件1-操作物件2-cf
10.cmp:比較指令,功能相當於減法,只是不儲存結果,cmp指令執行後,對標誌暫存器產生影響,例如: cmp ah,bh
①.如果sf=1,而of=0→說明沒有溢位,邏輯上真正結果的正負=實際結果的正負
②.如果sf=1,而of=1→說明有溢位,如果因為溢位導致了實際結果為負,那麼邏輯上真正的結果必然為正.
③.如果sf=0,而of=1→說明有溢位,如果因為溢位導致了實際結果為正,那麼邏輯上真正的結果必然為負
④.如果sf=0,而of=0→說明沒有溢位,實際結果為非負,所以邏輯結果必然非負
11. je 含義:等於則轉移 檢測位置:zf=1
jne 含義:不等於則轉移 檢測位置:zf=0
jb 含義:低於則轉移 檢測位置:cf=1
jnb 含義:不低於則轉移 檢測位置:cf=0
ja 含義:高於則轉移 檢測位置:cf=0且zf=0
jna 含義不高於則轉移 檢測位置:cf=1或zf=1
12.df:flag的第十位,方向標誌位,在串處理指令中,控制每次操作後si,di的增減;
df=0,每次操作後,si,di遞增 df=1,每次操作後,si,di遞減
13.串傳送指令
①.movsb:將ds:si指向的記憶體單元中的位元組送入es:di中,然後根據標誌暫存器df位的值,將si和id或增或減,相當於以下指令:
((es)*16+(di))=((ds)*16+(si))
if (df==0) (si)=(si)+1 (di)=(di)+1
if (df==1) (si)=(si)-1 (si)=(si)-1
②.movsw:將ds:si指向的記憶體字單元中的字送入es:di中,然後根據標誌暫存器df位的值將si和di或增或減2。
14.pushf:將標誌暫存器的值壓棧 popf:是從棧中彈出資料,送入標誌暫存器中
NO 7 嫿骨 if小測試
部分執行截圖 另1.簡述一下if語句的語法 2.連續判斷時,if else if 和if if 的區別在 一 簡述一下if語句的語法 1 if 表示式 語句。例如 if x y printf d x 此時,如果表示式為真,則執行printf語句。2 if 表示式 語句1 else 語句2 例如 if...
彙編基礎學習7
博主 沒落的殘陽 這節來講解一下棧的延伸,堆疊 算是把昨天的整個理論基礎概念,給大家講解下。執行時棧 runtime stack 我們通常稱為 堆疊 這是由我們cpu硬體直接支援的,也是實現過程的呼叫和過程返回機制的基本組成部分。不知道大家是否知道rtl是什麼意思。如果學過程式的人都應該知道這個就是...
No7 字串匹配
注意 string類中已提供了字串匹配的api,現模擬該api實現 自定義子串查詢 string有自己的api str.indexof 0 param a 源串 param b 目的串 param index 從該引數開始查詢 return private static int findsubstr...