<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 8086指令系統---串處理指令

8086指令系統---串處理指令

作者: 時(shí)間:2016-11-27 來(lái)源:網(wǎng)絡(luò ) 收藏
  串處理指令處理存放在存儲器中的字節串或字串,串處理的方向由方向標志位DF決定,串處理指令之前可加重復前綴,在執行串處理指令時(shí),源串的指針SI和目的串的指針DI根據DF的指示自動(dòng)增量(+1或+2)或自動(dòng)減量(―1或―2)。
      ?、?串處理指令
        MOVSB / MOVSW   串傳送
        STOSB / STOSW   存串
        LODSB / LODSW   取串
        CMPSB / CMPSW   串比較
        SCASB / SCASW   串掃描

      ?、?串重復前綴
        REP        重復串操作
        REPE / REPZ    相等/為零時(shí)重復
        REPNE / REPNZ   不等/不為零時(shí)重復

      ?、?設置方向標志
        CLD        使DF=0
        STD        使DF=1
  1 設置方向標志指令

  CLD DF置0(clear direction flag)
  STD DF置1(set direction flag)

  為了處理連續存儲單元中的字符串或數串,地址指針需要連續地增量或減量,指針增量或減量決定了串處理的方向。當用CLD指令使DF=0時(shí),源串的指針SI和目的串的指針DI自動(dòng)增量(+1或+2),當用STD指令使DF=1時(shí),指針SI和DI自動(dòng)減量(―1或―2)。地址指針是±1還是±2,取決于串操作數是字節還是字,處理字節串時(shí),地址指針每次+1或―1,處理字串時(shí),地址指針每次+2或―2。

 2 串處理指令
  
  MOVSB / MOVSW 串傳送(move string byte/word)
  執行操作:
  (ES:DI)←(DS:SI)
  (SI)←(SI)±1(字節)或±2(字)
  (DI)←(DI)±1(字節)或±2(字)

  STOSB / STOSW 存串(load from string byte/word)
  執行操作:
  (ES:DI)←(AL)或(AX)
  (DI)←(DI)±1(字節)或±2(字)

  LODSB / LODSW 取串(store into string byte/word)
  執行操作:
  (AL)或(AX)←(DS:SI)
  (SI)←(SI)±1(字節)或±2(字)

  CMPSB / CMPSW 串比較(compare string byte/word)
  執行操作:
  (DS:SI)-(ES:DI),根據比較的結果設置條件碼
  (SI)←(SI)±1(字節)或±2(字)
  (DI)←(DI)±1(字節)或±2(字)

  SCASB / SCASW 串掃描(scan string byte/word)
  執行操作:
  (AL)-(ES:DI)或(AX)-(ES:DI),根據掃描比較的結果設置條件碼
  (DI)←(DI)±1(字節)或±2(字)

本文引用地址:http://dyxdggzs.com/article/201611/322193.htm

 這組串處理指令用于處理連續存儲單元中的字操作數或字節操作數,它們有幾個(gè)共同點(diǎn):

  1. 它們一般都分兩步執行,第一步完成處理功能,如傳送、存取、比較等。第二步進(jìn)行指針修改,以指向下一個(gè)要處理的字節或字。

  2. 源串必須在數據段中,目的串必須在附加段中,串處理指令隱含的尋址方式是SI和DI寄存器的間接尋址方式。源串允許使用段跨越前綴來(lái)指定段。

 3. 串處理的方向取決于方向標志DF,DF=0時(shí),地址指針SI和DI增量(+1或+2);DF=1時(shí),地址指針SI和DI減量(-1或-2)。程序員可以使用指令CLD和STD來(lái)建立方向標志。

  4. MOVS、STOS、LODS指令不影響條件碼,CMPS、SCAS指令根據比較的結果設置條件碼。

  與串傳送指令MOVS和串存入指令STOS聯(lián)用的重復前綴是REP,取串指令LODS一般不加重復前綴。 與串比較指令和串掃描指令聯(lián)用的重復前綴是REPE(REPZ)或REPNE(REPNZ)。


 3 串重復前綴

  REP 重復執行串指令,(CX)=重復次數
  執行操作:
 ?、?(CX)=0時(shí),串指令執行完畢,否則執行② ~ ④
 ?、?(CX)←(CX)-1
 ?、?執行串指令(MOVS或STOS)
 ?、?重復執行①

  REPE / REPZ 相等/為零時(shí)重復執行串指令,(CX)=比較/掃描的次數
  執行操作:
 ?、?(CX)=0或ZF=0時(shí),結束執行串指令,否則繼續② ~ ④
 ?、?(CX)←(CX)-1
 ?、?執行串指令(CMPS或SCAS)
 ?、?重復執行①

  REPNE / REPNZ 不等/不為零時(shí)重復執行串指令,(CX)=比較/掃描的次數
  執行操作:
 ?、?(CX)=0或ZF=1,結束執行串指令,否則繼續② ~ ④
 ?、?(CX)←(CX)-1
 ?、?執行串指令(CMPS或SCAS)
 ?、?重復執行①

  REP對其后的串指令(MOVS或STOS)只有一個(gè)結束條件,即重復次數(CX)=0。在進(jìn)行串比較和串掃描時(shí),串指令前應加前綴REPE(REPZ)或REPNE(REPNZ),這兩條重復前綴用重復次數(CX)和比較結果(ZF)來(lái)控制串指令的結束。當(CX)=0時(shí),說(shuō)明每個(gè)串數據都比較(或掃描)過(guò)了,此時(shí)串操作正常結束;當因ZF=1或0而結束串操作時(shí),說(shuō)明在滿(mǎn)足比較結果相等或不等的條件下,可提前結束串操作。
上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 8086指令系統串處理指

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>