DF标志和串传送指令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DF标志和串传送指令相关的知识,希望对你有一定的参考价值。

DF标志和串传送指令


flag的第10位是DF,方向标志位。在串处理指令中,控制si、di的递减。

df = 0 每次操作后si、di递增
df = 1 每次操作后si、di递减


串传送指令


格式1: movsb

功能描述

1. ((es)*16+di) =   ((ds)*16+si)
2. 如果 df=0 则:    (si)=(si)+1
                    (di)=(di)+1
   如果 df=1 则:    (si)=(si)-1
                    (di)=(di)-1

C语言描述

// si,di 相当于C语言循环中 i,j 变量的功能。
e[i] = d[j];
i++;
j++;



格式2:movsw

功能描述

movsw 的功能是将 ds:si 指向的内存字单元中的字送入 es:di 中,
然后根据标志寄存器df位的值,将 si、di递增 2 或递减 2。

C语言描述

// si,di 相当于C语言循环中 i,j 变量的功能。
e[i] = d[j];
i += 2;
j += 2;



rep指令

movsb 和 movsw 都和rep配合使用

  1. rep movsb等同于:

    s: movsb
    loop s
    次数由 cx 决定,作用是循环传送字节。
  2. rep movsw等同于:

    s: movsw
    loop s

    次数由 cx 决定,作用是循环传送字。



    我们怎样设置循环的方向?

    由于 movsb 和 movsw 都由 df 标志决定,汇编语言中有这样两条指令改变 df 的值。
    cld指令:将标志寄存器的 df 位置为0。
    std指令:将标志寄存器的 df 位置为1。

以上是关于DF标志和串传送指令的主要内容,如果未能解决你的问题,请参考以下文章

8086汇编 rep 指令

标志寄存器

复习8086汇编指令

《汇编语言(第三版)》标志寄存器

数据传送类指令(微机原理笔记)

汇编串扫描指令传送串匹配串