用方向标志DF控制数据传送的方向

用方向标志DF控制数据传送的方向

Content #

movsb 和 movsw 指令执行时,

  1. 原始数据串的段地址由DS 指定,偏移地址由SI 指定,简写为DS:SI;
  2. 要传送到的目的地址由ES:DI 指定;
  3. 传送的字节数(movsb)或者字数(movsw)由CX指定。
  4. 还要指定是正向传送还是反向传送。

正向传送:

  1. 指传送操作的方向是从低地址端到高地址端;
  2. 每传送一个字节(movsb)或者一个字(movsw),SI 和DI 加1 或者加2;

反向传送:

  1. 反向传送方向是从高地址端到低地址端。
  2. 每传送一个字节(movsb)或者一个字(movsw)时,SI 和DI 减去 1 或者减去2。

不管是正向传送还是反向传送,也不管每次传送的是字节还是字,每传送一次,CX 的内容自动减一。

方向标志DF(Direction Flag):通过将这一位清零或者置1,就能控制movsb 和movsw 的传送方向。方向标志清零指令cld是个无操作数指令,与其相反的是置方向标志指令std。 cld 指令将DF 标志清零,以指示传送是正方向的。 std 指令,它将DF标志置位 1。此时,传送的方向是从高地址到低地址。

Viewpoint #

From #