彙編學習 NO7

2021-05-23 05:16:58 字數 1780 閱讀 7583

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...