zoukankan      html  css  js  c++  java
  • 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。
  • 相关阅读:
    elasticsearch 基本操作
    ElasticSearch停止启动
    oracle误删数据
    多层级sql查询
    max_result_window
    测试ik分词效果
    TransportClient 新建index,mappings dynamic_templates。
    7.10考试
    C#生成TXT文件
    C#的进度条--progressBar
  • 原文地址:https://www.cnblogs.com/zhangjiuding/p/8343550.html
Copyright © 2011-2022 走看看