<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

          8086指令系統(tǒng)---串處理指令

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

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

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

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

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

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

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

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

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

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

          本文引用地址:http://www.ex-cimer.com/article/201611/322193.htm

           這組串處理指令用于處理連續(xù)存儲單元中的字操作數(shù)或字節(jié)操作數(shù),它們有幾個共同點:

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

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

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

            4. MOVS、STOS、LODS指令不影響條件碼,CMPS、SCAS指令根據(jù)比較的結(jié)果設(shè)置條件碼。

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


           3 串重復(fù)前綴

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

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

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

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

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();