8086 8088指令系統詳解之(4)串操作

2021-08-20 05:57:59 字數 2903 閱讀 7510

串操作指令的特徵是對資料塊(字串或數值串)進行操作,並且其中部分指令可以兩個運算元同時是儲存器運算元。

movs (move string) 串傳送

cmps (compare string) 串比較

scas (scan string) 串掃瞄

lods (load from string) 從串中取資料

stos (store in to string) 存資料到串中

說明:

⑴ 串操作指令每次執行完成乙個位元組或乙個字的操作。

⑵ 通常使用重複字首,用來完成資料塊的操作。

重複字首

⑴ rep 重複

⑵ repe/repz 相等/為零則重複

⑶ repne/repnz 不相等/不為零則重複

特點:

⑴ 串操作指令需要指明每次操作的型別:可以直接寫上運算元,或在助記符後面加上」b」或「w」

例如:movsb, cmpsw等。

⑵ 串操作指令使用ds:si作為源運算元的指標;es:di作為目的運算元的指標。並且源運算元允許段超越,而目的運算元不允許段超越。

⑶ 使用df來表示每次操作以後變址暫存器si和di的變化方向

cld ;df=0 si,di做增量變化,若為字操作則si+2,di+2;若為位元組操作則si+1,di+1。

std ;df=1 si,di做減量變化 , 若為字操作則si-2,di-2;若為位元組操作則si-1,di-1。

⑷ 有的串指令可加重複字首,指令則按規定的操作重複進行。使用cx來表示用重複字首以後指令需要重複執行的次數

(5) 對於某些影響zf的傳操作指令,可加重複字首repe/repz或repne/repnz,此時操作重複進行的條件有二:

1,cx不為0

2,zf的值滿足重複字首的要求。repe/repz要求(zf)=1;repne/repnz要求(zf)=0。

1,串傳送指令movs(move string)

格式:

[rep] movs [es: ]dst_string, [seg: ]src_string

(預設源運算元段暫存器為ds,seg表示允許段超越)

[rep] movsb

[rep] movsw

操作:將乙個位元組或字從儲存器的乙個區域傳送到另乙個區域,然後根據型別和df的值修改位址指標。

對狀態標誌位的影響:不影響狀態標誌位。

例:教材p132

2,串裝入指令lods(load string)

格式:

lods [seg: ]src_string

(預設源運算元段暫存器為ds,seg表示允許段超越)

lodsb

lodsw

操作:將源字串中的乙個位元組或字從儲存器的乙個區域傳送到al或ax中,然後根據型別和df的值修改位址指標。

對狀態標誌位的影響:不影響狀態標誌位。

:教材p133例4.11

3,串送存指令stos(store string)

格式:

[rep] stos [seg: ]dst_string

(預設目的運算元段暫存器為es,seg表示允許段超越)

[rep] stosb

[rep] stosw

對狀態標誌位的影響:不影響狀態標誌位。

例:教材p133例4.12

教材p134例4.13

4,串比較指令cmps(compare string)

格式:

[repe/repne] cmps [seg: ]src_string, [es: ]dst_string

(預設源運算元段暫存器為ds,seg表示允許段超越)

[repe/repne] cmpsb

[repe/repne] cmpsw

操作:

將字串中相應的元素逐個進行比較(即相減),但不講比較結果送到目的運算元,而是影響標誌位。然後根據型別和df的值修改位址指標。cmps與其他指令不同,源運算元在前,目的運算元在後。

加上重複字首repe/repz:若比較的兩個位元組(字)相等,因為執行的是相減操作,所以此時zf=1,同時cx不為0,則繼續比較。

加上重複字首加上重複字首repne/repnz:若比較的兩個位元組(字)不相等,因為執行的是相減操作,所以此時zf=0,同時cx不為0,則繼續比較。

對狀態標誌位的影響:影響所有狀態標誌位均有影響。

教材p135例4.14

5,串掃瞄指令scas(scan string)

格式:

[repe/repne] scas [es: ]dst_string

[repe/repne] scasb

[repe/repne] scasw

操作:

scas指令在乙個字串中搜尋特定的關鍵字,然後根據型別和df的值修改位址指標。字串的起始位置只能放在(es:di)中,不允許段超越。待搜尋的關鍵字必須放在al或ax中。

操作:將字串中相應的元素逐個與al或ax進行比較(即相減),但不將比較結果送到目的運算元,而是影響標誌位。然後根據型別和df的值修改位址指標。cmps與其他指令不同,源運算元在前,目的運算元在後。

加上重複字首repe/repz:若比較的兩個位元組(字)相等,因為執行的是相減操作,所以此時zf=1,同時cx不為0,則繼續比較。

加上重複字首加上重複字首repne/repnz:若比較的兩個位元組(字)不相等,因為執行的是相減操作,所以此時zf=0,同時cx不為0,則繼續比較。

對狀態標誌位的影響:影響所有狀態標誌位均有影響。

例: 教材p135例4.15,

8086 8088指令系統詳解之(5)程式控制指令

能夠使程式的執行流程發生改變的指令 1 無條件轉移jmp 有以下幾種型別操作 段內直接短轉移 格式 jmp short opr 操作 ip ip data8 data8是乙個位元組的補碼數 範圍 128 127 段內直接近轉移 格式 jmp near ptr opr 操作 ip ip data16 ...

八 指令系統

1,指令系統和指令格式 1 指令是要求計算機執行特定操作的命令,一條指令對應一種特定操作,比如加,減,轉移,位移等 2 指令系統是計算機所能執行的全部指令的集合,是計算機硬體和軟體之間的橋梁,是組合語言程式設計的基礎 3 計算機指令以二進位制的形式存放在儲存器中,用二進位制編碼形式表示的指令成為機器...

8086指令系統資料傳送指令

1.一般傳送指令mov 格式 mov 目標運算元 源運算元 功能 mov主要實現內容就是各種傳送 目標運算元可以為暫存器運算元 儲存器運算元 源運算元可以為立即數運算元 暫存器運算元 儲存器運算元 根據彙編規定指令的兩個運算元不能同時為儲存器運算元所以有共有5種傳送操作 1 立即數到暫存器 例 mo...