標誌暫存器和其他暫存器不一樣,其他暫存器是用來存放資料的,都是整個暫存器具有乙個含義。
而flag暫存器是按位起作用的,也就是說,它的每一位都有專門的含義,記錄特定的資訊。
8086cpu的flag暫存器的結構:
zf標誌
第6位是zf,零標誌位(zero flag)。
pf標誌
第2位是pf,奇偶標誌位。
sf標誌
第7位是sf,符號標誌位。
cf標誌
第0位是cf,進製標誌位。在進行無符號數運算的時候,它記錄了運算結果的最高有效位向更高位的進製值,或從更高位的借位值。
of標誌
在進行有符號數運算的時候,如結果超過了機器所能表示的範圍稱為溢位。
df標誌
flag的第10位是df,方向標誌位。
cmp指令
cmp 是比較指令,功能相當於減法指令,只是不儲存結果。
cmp 指令執行後,將對標誌暫存器產生影響。
可以通過其他相關指令通過識別這些被影響的標誌暫存器位來得知比較結果。
格式:cmp 操作物件1,操作物件2
功能:計算操作物件1–操作物件2
但並不儲存結果,僅僅根據計算結果對標誌暫存器進行設定。
一般情況cmp和條件轉移指令配合使用
movsb
功能:(以位元組為單位傳送)
相當於彙編指令:mov es:[di],byte ptr ds:[si];
movsw
功能:(以字為單位傳送)
相當於彙編指令:mov es:[di],word ptr ds:[si]
movsb 和 movsw與rep配合使用
rep movsb
用彙編語法來描述rep movsb的功能就是:
s : movsb
loop s
在串處理指令中,控制每次操作後si,di的增減。
cld指令:將標誌暫存器的df位置0
std指令:將標誌暫存器的df位置1
將以為0結尾的字串中的大寫字母轉為小寫字母
mov al,
'a' sub al,
'a's:
mov cl,
[si]
mov ch,
0 jcxz ok
cmp cl,
'a' jb s1;比a小則跳到s1
cmp cl,
'z' ja s1;比z大則跳到s1
add cl,al
mov [si]
,cls1:
inc si
jmp s
王爽組合語言 暫存器衝突問題
題目 設計乙個子程式,功能 將乙個全是字母,以0為結尾的字串,轉化為大寫 定義類似於 db cnversation 0 如下 由於在 塊中排版會有問題,所以就不放在裡面惹 assume cs code 定義要轉換的字元 data segment db word 0 db unix 0 db wind...
王爽《組合語言》第三版 第十一章 標誌暫存器
引言 8086cpu的標誌暫存器有16位,其中儲存的資訊通常被稱為程式狀態字 psw 我們己經使用過8086cpu的ax bx cx dx si di bp sp ip cs ss ds es等13個暫存器了。本章中的標誌暫存器 以下簡稱為flag 是我們要學習的最後乙個暫存器。flag暫存器是按位...
《學習筆記》王爽組合語言 再論暫存器
在上篇文章中,我們主要從cpu的角度複習了8086cpu的邏輯結構,形成實體地址的方法和相關的一些暫存器。這篇文章我們一記憶體訪問的角度來繼續學習幾個暫存器。記憶體中字的儲存 cpu中,用16位暫存器來儲存乙個字。高8位存放高位位元組,低8位存放低位位元組。在記憶體中儲存時,由於記憶體單元是位元組單...