您的位置 首页 解答

8086指令系统—串处理指令

串处理指令处理存放在存储器中的字节串或字串,串处理的方向由方向标志位DF决定,串处理指令之前可加重复前缀,在执行串处理指令时,源

  串处理指令处理存放在存储器中的字节串或字串,串处理的方向由方向标志位DF决议,串处理指令之前可加重复前缀,在履行串处理指令时,源串的指针SI和意图串的指针DI依据DF的指示主动增量(+1或+2)或主动减量(―1或―2)。

       ⑴ 串处理指令
        MOVSB / MOVSW   串传送
        STOSB / STOSW   存串
        LODSB / LODSW   取串
        CMPSB / CMPSW   串比较
        SCASB / SCASW   串扫描

       ⑵ 串重复前缀
        REP        重复串操作
        REPE / REPZ    持平/为零时重复
        REPNE / REPNZ   不等/不为零时重复

       ⑶ 设置方向标志
        CLD        使DF=0
        STD        使DF=1

  1 设置方向标志指令

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

  为了处理接连存储单元中的字符串或数串,地址指针需求接连地增量或减量,指针增量或减量决议了串处理的方向。当用CLD指令使DF=0时,源串的指针SI和意图串的指针DI主动增量(+1或+2),当用STD指令使DF=1时,指针SI和DI主动减量(―1或―2)。地址指针是±1仍是±2,取决于串操作数是字节仍是字,处理字节串时,地址指针每次+1或―1,处理字串时,地址指针每次+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(字)

 这组串处理指令用于处理接连存储单元中的字操作数或字节操作数,它们有几个共同点:

  1. 它们一般都分两步履行,第一步完结处理功用,如传送、存取、比较等。第二步进行指针修正,以指向下一个要处理的字节或字。

  2. 源串有必要在数据段中,意图串有必要在附加段中,串处理指令隐含的寻址方法是SI和DI寄存器的直接寻址方法。源串答应运用段跨过前缀来指定段。

 3. 串处理的方向取决于方向标志DF,DF=0时,地址指针SI和DI增量(+1或+2);DF=1时,地址指针SI和DI减量(-1或-2)。程序员能够运用指令CLD和STD来树立方向标志。

  4. MOVS、STOS、LODS指令不影响条件码,CMPS、SCAS指令依据比较的成果设置条件码。

  与串传送指令MOVS和串存入指令STOS联用的重复前缀是REP,取串指令LODS一般不加重复前缀。 与串比较指令和串扫描指令联用的重复前缀是REPE(REPZ)或REPNE(REPNZ)。

 3 串重复前缀

  REP 重复履行串指令,(CX)=重复次数
  履行操作:
  ① (CX)=0时,串指令履行完毕,不然履行② ~ ④
  ② (CX)←(CX)-1
  ③ 履行串指令(MOVS或STOS)
  ④ 重复履行①

  REPE / REPZ 持平/为零时重复履行串指令,(CX)=比较/扫描的次数
  履行操作:
  ① (CX)=0或ZF=0时,完毕履行串指令,不然持续② ~ ④
  ② (CX)←(CX)-1
  ③ 履行串指令(CMPS或SCAS)
  ④ 重复履行①

  REPNE / REPNZ 不等/不为零时重复履行串指令,(CX)=比较/扫描的次数
  履行操作:
  ① (CX)=0或ZF=1,完毕履行串指令,不然持续② ~ ④
  ② (CX)←(CX)-1
  ③ 履行串指令(CMPS或SCAS)
  ④ 重复履行①

  REP对这以后的串指令(MOVS或STOS)只要一个完毕条件,即重复次数(CX)=0。在进行串比较和串扫描时,串指令前应加前缀REPE(REPZ)或REPNE(REPNZ),这两条重复前缀用重复次数(CX)和比较成果(ZF)来操控串指令的完毕。当(CX)=0时,阐明每个串数据都比较(或扫描)过了,此刻串操作正常完毕;当因ZF=1或0而完毕串操作时,阐明在满意比较成果持平或不等的条件下,可提前完毕串操作。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/jieda/256968.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部