組合語言。串操作指令影響哪些標誌位

2021-05-04 07:36:08 字數 3441 閱讀 8162

1樓:

不同的串操作指令,對標誌位的影響不同。

傳送類的串指令,不影響標誌位。

此類指令有:movs,lods, stos, ins, outs。

比較類的串指令,會按比較結果設定標誌位。與減法運算指令一樣,會影響zf, cf, zf, of, sf, af, pf等標誌位。

此類指令有:cmps,scas。

2樓:獨釣o寒江雪

串操作指令,不影響標誌位.

但是標誌位,df卻影響,串操作.

所以,組合語言,提供了修改,df標誌位的功能"cld和std"

cld:功能,把標誌位df置0.當和es+di和ds+si配合使用時.將di和si正向遞增.遞增步幅,看你每次傳送位元組數.

std:功能,把標誌位df置1,當和es+di和ds+si配合使用時.將di和si逆向遞減.

.也就是說,串操作指令需要根據,df標誌位的,狀態,來決定傳送方向.使變址暫存器di和si.具有自增或者自減的能力..來完成串操作..

我也是剛學的,這是我的理解,也不知道,是否全面.

3樓:匿名使用者

字串比較指令中醫字串掃描指令scas,有兩個運算元。但是,這雙運算元指令字串比較指令cmps在兩個運算元的儲存單元。但字串掃描指令管制協議的兩個運算元,一個累加器,和其他的儲存單元中的運算元。

字串比較指令cmps是兩個運算元在儲存單元中,您要具體問題具體分析的問題,其他指令不能採取兩個運算元不能來在儲存單元中相同的規定剛性的死刑執行令。畢竟,這些指令是公認的國際標準組織批准執行,如果法律有沒有為什麼,只能執行。

4樓:生活如歌

哪個彙編?51微控制器還是8086?

組合語言那些指令會改變標誌位?

5樓:匿名使用者

加法指令:add、adc、inc、xadd除了inc不影響cf標誌位外,都影響條件標誌位。

cf、zf、sf、of

cf最高位是否有進位

df若兩個運算元符號相同而結果符號與之相反of=1,否則of=0.

減法指令:sub、sbb、dec、neg、cmp、cmpxchg、cmpxchg8b

前六種除了dec不影響cf標誌外都影響標誌位。cmpxhg8b隻影響zf。

cf說明無符號數相減的溢位,同時又確實是被減數最高有效位向高位的借位。

of位則說明帶符號數的溢位

無符號運算時,若減數》被減數,有借位cf=1,否則cf=0.

of若兩個數符號相反,而結果的符號與減數相同則of=1.否則of=0.

乘法指令:mul、imul

mul:如果乘積高一半為0,則cf和of位均為0,否則cf和of均為1.

imul:如果高一半是低一半符號的擴充套件,則cf位和of位均為0,否則就均為1.

除法指令:div、idiv 對所有條件位均無定義。

邏輯指令:and、or、not、xor、test

not不允許使用立即數,其它4條指令除非源運算元是立即數,至少要有一個運算元必須存放在暫存器中。另一個運算元則可以使用任意定址方式。

not不影響標誌位,其餘4種cf、of、置0,af無定義,sf、zf、pf位看情況而定。

定位掃描指令:bsf正向位掃描、bsr反向位掃描

源運算元可以是除立即數以外的任一種定址方式,目的運算元必須是暫存器,影響zf位。

請問x86彙編中什麼指令影響zf標誌位?

6樓:

簡單點說,所有的對運算元進行算術和邏輯運算的指令,都會根據運算結果修改zf標誌。

第一點:

大多數情況下,運算結果對zf的修改,由結果是否為0決定。

若運算結果為0,則zf=1;

若運算結果非0,則zf=0.

舉些例子吧:

加法指令,比如add, adc, inc,等

減法指令,比如sub, sbb, cmp, dec, neg, 等

邏輯運算指令,比如and, test, or, xor, not等

邏輯移位指令,比如shl, shr, sal, sar, rcl, rcr等(rol,ror不會改變zf,原因可自己分析)

調整指令,比如aaa, aas,等

串指令中含有算術運算的那些,比如cmps, scas等

控制轉移指令中含有算術運算的,比如loop

第二點:

但是,也有一些指令,會改變zf標誌,但其結果具有不確定性,沒有運算結果是否為0的意義。

比如乘法指令 mul和imul, 除法指令div和idiv等

改變標誌暫存器內容的sahf指令,堆疊操作中的popf指令,也不具有運算結果的意義。

7樓:匿名使用者

挺多的。舉個例子吧。常用有add,求和,inc,自動加一,dec自動減一,xor異或,not,非,test測試等等,基本上會出現運算結果的都會。

mov指令不會影響zf的值。不明白可追問。

8樓:逍遙

我理解zf中z是zero的意思,即zero flag。其作用就是判斷運算結果與零是否相等,相等及為真(1),反之為假(0)。

9樓:梁山清

運算結果影響它,若是0,則zf位置1

組合語言執行xor,or,and,not,test邏輯指令的時候標誌位如何變化?請舉出例子,萬分感謝!!

10樓:紅葉戀千秋

1、 test al,02h ;若al中的d1位是『1』。則zf=0,否則為1;cf和of都為0

2、 not 對所有標誌位都沒有影響

3、xor or and 都使 cf=of=0 其他位 要看具體情況

11樓:籬落風瀟瀟

雙運算元邏輯指令and、or、xor和test所支援的運算元組合同加減法指令一樣。雙運算元邏輯指令均設定cf=of=0,根據結果設定sf、zf和pf狀態,而對af未定義。注意,單運算元邏輯非指令not不影響標誌位。

看看下面的你會更明白些。

網頁連結

在組合語言中 and al,al對標誌位產生什麼影響

12樓:匿名使用者

在組合語言中輯與 and al.al對標誌位的影響:

指令執行後 cf 和 of 置零,af無定義。

pf=1 結果操作

專數中屬1的個數為偶數時置1

pf=0 結果運算元中1的個數為奇數時置0

13樓:細雨搖琴

邏輯與 and (logic and) 指令對標誌位的影響:

指令執行後 cf 和 of 置零,af無定義。

14樓:井小美

邏輯運算指令執行後cf=0,of=0,zf,pf,sf根據結果定,af不確定

小弟初學組合語言,請教下面的位操作指令是什麼意思

你好 呵呵 這個簡單 20h 02h 20h是微控制器記憶體位定址的第一個位元組,裡面的資料 0000,0010,二進位制數 mov c,01h 01h是位地址,就是20h單元的第二位,映像為20h.1,資料為 1,mov是資料傳送指令,c是程式狀態字其中的一個位,也稱位累加器,功能似 位元組累加器...

protues執行時如何編輯組合語言指令

protues 是不能編輯組合語言的 不管是不是有執行,都不能!只能通過其他程式設計軟體,如keil來修改 彙編的程式怎麼樣在proteus裡除錯彙編的程式。怎樣將彙編程式匯入protues 在protues裡雙擊微控制器,匯入hex格式的檔案即可,其實你還可以在選單 原始檔 新增 新建 一檔案 確...

學習組合語言的入門書籍有哪些啊,學習組合語言的經典書籍推薦?

學習組合語言,推薦王爽的 組合語言 本書最適合初學者 大多時候,一些初學者不知道應該讀什麼書入門,有一定基礎的開發者不知道如何進階。本文總結了一個c 優秀書籍清單,希望能夠為你帶來一定的幫助。因為多讀一些優秀的書籍,對於開發者穩固程式設計基礎 提高程式設計技能有很大幫助,這些書大多數都有中文版,並且...