《組合語言》王爽,學習筆記(標誌暫存器下)
cmp指令
cmp是比較指令,相當於減法指令,只是不儲存結果,cmp執行之後只會對標誌暫存器產生影響,cmp指令格式:cmp 運算元1,運算元2。
通過cmp指令可以很輕易的比較出兩個資料的大小,舉幾個例子:
(1)如果兩個資料相等,那麼他們相減之後必定是0,那麼標誌位ZF的值就是1。
(2)如果是無符號數,運算元1比運算元2大,那麼標誌位CF就為0,因為不會產生借位,同理,CF位為1,表示2比1大,需要借位。
(3)如果是有符號數,觀察標誌位SF與OF即可,SF表示了最後的結果是正是負,而OF表示了這個結果是否是由溢位而得到的,因為SF只記錄實際結果的最高位,這不能說明這是在邏輯上所得的正確結果,而OF可以表示這個實際結果是否正確。
inc,dec指令
一開始介紹add,sub指令之時就提到了inc和dec指令,他們分別對應自增和自減操作,那時特提到了,inc和dec與add,sub之間有一點的不同,就是inc與dec不影響標誌暫存器的值,所以在一些特定的場合,你需要不干涉標誌暫存器,但是要改變地址的話,就只能多用幾個inc指令了。
條件跳轉指令
由於cmp指令的存在,我們可以比較兩個資料的大小,也就出現了條件跳轉指令,和C語言中的if語句很類似。
je 等於則轉移(ZF = 1)
jne 不等於則轉移(ZF = 0)
jb 小於則轉移,無符號數(CF = 1)
jnb 不小於則轉移,無符號數(CF = 0)
ja 大於則轉移,無符號數(CF = 0 && ZF = 0)
jna 小於等於則轉移,無符號數(CF = 1 || ZF = 1)
這些一些無符號數常用的條件轉移語句。
DF與串傳送指令
DF是標誌暫存器的第10位,方向標誌位,他與串傳送指令(movsb,movsw)相關,控制每次操作後的SI,DI的增減。
DF = 0,正向,每次操作後SI,DI遞增,DF = 1,反向,每次操作後SI,DI遞減。
串傳送指令按照一次傳送的位元組數分為兩種,一次傳送一個位元組,movsb,一次傳送一個字,movsw。
串傳送指令是將DS:SI指向的記憶體單元中的內容傳入ES:DI中,根據DF來增減SI,DI,用CX來控制次數。
pushf和popf
pushf的功能是將標誌暫存器的值入棧,popf是從棧中彈出資料送入標誌暫存器中,這兩個指令不需要運算元,pushf也是在呼叫子程式的時候需要做的一步,popf在程式結束的時候恢復標誌暫存器。
相關文章
- 《組合語言》王爽,學習筆記(子程式呼叫)組合語言筆記
- x86 組合語言標誌暫存器組合語言
- 組合語言學習筆記03——暫存器(CPU工作原理)組合語言筆記
- 讀書寫筆記-王爽《組合語言》筆記組合語言
- 讀書筆記:組合語言(王爽)實驗七筆記組合語言
- 組合語言學習筆記組合語言筆記
- 【組合語言】第 3 章 暫存器(記憶體訪問)組合語言記憶體
- 讀書筆記《組合語言》——intel8086暫存器的記憶體訪問筆記組合語言Intel記憶體
- 組合語言學習筆記(十二)-浮點指令組合語言筆記
- 組合語言中暫存器的英文全程組合語言
- 組合語言-學習記錄(二)組合語言
- 組合語言零基礎入門學習筆記(一)組合語言筆記
- 【R語言學習筆記】探索ggplot的排列組合(一)R語言筆記
- 逆向學習筆記3——暫存器與彙編指令筆記
- 【自學組合語言Day-02】第二章:暫存器(CPU工作原理)組合語言
- 【學習筆記】組合數學筆記
- 組合數學學習筆記筆記
- 【R語言學習筆記】探索ggplot的排列組合:線圖(一)R語言筆記
- 組合語言學習記錄--輸入輸出字串組合語言字串
- Solidity語言學習筆記————32、建立合約Solid筆記
- C 語言學習筆記筆記
- C語言學習筆記C語言筆記
- 組合語言學習記錄--第一個彙編程式組合語言
- C語言學習筆記:結構體與指標C語言筆記結構體指標
- 組合最佳化 學習筆記筆記
- linux下c語言學習筆記——操作mysqlLinuxC語言筆記MySql
- Solidity語言學習筆記————35、抽象合約和介面Solid筆記抽象
- 【C++學習筆記】型別組合C++筆記型別
- Solidity語言學習筆記————13、固定大小位元組陣列Solid筆記陣列
- Solidity語言學習筆記————14、動態位元組陣列Solid筆記陣列
- 組合數學筆記-排列與組合筆記
- Solidity語言學習筆記————2、使用編譯器Solid筆記編譯
- 組合語言1 - 什麼是組合語言?組合語言
- 熱更新語言--lua學習筆記筆記
- c語言學習筆記===函式C語言筆記函式
- 《JavaScript語言精粹》學習筆記二JavaScript筆記
- 《JavaScript語言精粹》學習筆記一JavaScript筆記
- R語言學習筆記之一R語言筆記