前言:跟著shark恆老師一步一步來學習的,畢竟自己完全是0基礎,就不直接追求原理了,自己能先記錄就好,如果能理解其中的原理那更好
of標誌暫存器(溢位標誌位):為1的時候為溢位,帶符號數的運算結果超出有限字長的表示範圍的標誌
我直接修改當前的eax暫存器的十六進製制為0x7ffffffff,因為這個是有符號位int32中最大的數,如果是0x80000000,那麼符號位為0,那麼就為負數,如果是負數的話肯定是正數小
再把當前的彙編指令修改為add eax,0x1
把0x1十六進製制的數給eax資料暫存器(相當於0x7fffffff + 0x1 7進一 為8 就是0x80000000那麼就為-2147483648 唯一改變的就是前面的符號位),然後我們單步步過,
發現0標誌暫存器就為1了,那麼就為溢位
cf標誌暫存器(進製狀態標誌位):當(比如eax)暫存器中的十六進製制值超過了無符號位最大數時候的十六進製制值時則為1
然後我們再把當前位址的彙編指令修改為add eax,0x1
,再進行單步步過,發現c標誌暫存器中的值為1
以上的兩個可以理解為 乙個判斷有符號位的溢位 乙個判斷無符號位的溢位
pf標誌暫存器(奇偶標誌位):如資料暫存器eax中的十六進製制轉換為二進位制數,其中1的個數,如果1的個數為偶數的話 那麼p為1 如果1的個數為奇數的話 那麼p為0
設定當前eax的暫存器位00000000,然後把當前位址的彙編指令修改為add eax,0x1
,然後單步步過,然後p識別符號為0
那麼我們繼續設定eip為當前進行單步步過,同樣的2的時候也為0
那麼再累加一次,此時的暫存器儲存的十六進製制就為00000003,那麼p識別符號就為1了
原因是3的二進位制為00000011,那麼1的個數為偶數,也就是p為1
需要注意的是p標誌暫存器,關注的奇偶是在最低有效位元組,0x12345678,那麼只關注0x78中的1的奇偶數
zf標誌暫存器(零標誌位):當計算結果等於0的時候,那麼z標誌暫存器中的值為1,比如eax暫存器中的值為0的時候那麼z標誌暫存器就為1
這裡需要提一下:彙編指令的時候比如add eax,0x1
我們還可以寫成add eax,1h
,add eax,1
我們把當前彙編指令修改為add eax,0x1
,然後eax暫存器中的值修改為ffffffff(有符號位的話就是為-1,儲存在記憶體的值是補碼,我們通過補碼轉原碼(正常的原碼轉補碼:符號位不變,數值位按位取反,末尾加1),那麼倒著來就是先轉成二進位制1111 1111 1111 1111 1111 1111 1111 1111 然後-1,則為1111 1111 1111 1111 1111 1111 1111 11110,然後符號為不變其他位取反1000 0000 0000 0000 0000 0000 0000 0001,結果則為-1,因為第一位是符號位
引導程式,預設z暫存器的值為1,同樣的我們也發現了eax中的值是為0的
把當前彙編指令修改為add eax,0x1
,然後eax暫存器中的值修改為fffffffe,那麼值為-2,然後單步步過,第一次發現z為0 eax值為ffffffff
再走一遍過程重新設定eip然後單步步過,發現z為1 eax值為00000000
sf標誌暫存器(符號標誌位):當暫存器中的值為負數的時候,s則為1
接著上面的,我們發現當前s暫存器中的值為0,我們把當前的eax重新為fffffffe,設定eip為第乙個位址,然後單步步過,發現s為1,此時的eax為ffffffff,就為-1
那麼我們再次相同的操作設定eip,然後單步步過,發現s為0,此時的eax也會00000000,大於負數
串指令有:movs,cmps,scas,lods,stos
std和cld指令分別用於設定和清除df指令
標誌暫存器df 標誌暫存器
cpu內部的暫存器中,有一種特殊的暫存器具有以下三種作用。用來儲存相關指令的某些執行結果 用來為cpu執行相關指令提供行為依據 用來控制cpu的相關工作方式 這種特殊的暫存器在8086cpu種,被稱為標誌暫存器 flag 8086cpu的標誌暫存器有16位,其中儲存的資訊通常被稱為程式狀態字 psw...
暫存器,標誌暫存器
涉及硬體傳輸資料的,往往包含以下內容 1.資料傳輸引腳 資料放 2.控制引腳 怎麼控制 3.狀態引腳 結果如何 暫存器相當於cpu內部的儲存單元,可能是連續排列,相當於 c語言中的陣列。一 8個通用暫存器 16 bit accumulate axah alr0 count cxch clr1 dat...
標誌暫存器
標誌暫存器 標誌暫存器 flags register,fr 又稱程式狀態字 program status word,psw 這是乙個存放條件標誌 控制標誌暫存器,主要用於反映處理器的狀態和運算結果的某些特徵及控制指令的執行 各標誌在標誌暫存器中的位置 條件標誌 cf carry flag 進製標誌 ...