首页 > 其他 > 详细

DF标志和串传送指令

时间:2018-01-25 00:01:06      阅读:295      评论:0      收藏:0      [点我收藏+]

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标志和串传送指令

原文:https://www.cnblogs.com/zhangjiuding/p/8343550.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!