串操作(AT&T)

串操作指令说明:

        针对数据块或字符串的操作,可实现存储器到存储器的数据传送。待操作的数据串称为源串,目标地址称为目标串

    1:串操作指令要求

            (1).源串一般存放在数据段(DS),偏移地址由 SI指定,允许段重设

            (2).目标串必须在附加段(ES),偏移地址由DI指定

    2:串的操作方向

           由DF标志位决定,指令根据DF状态自动修改地址指针

                   DF=0: 增地址方向 (CLD指令可将DF置为0)

                   DF=1: 减地址方向 (STD指令可将DF置为1)

    3.重复前缀 

            使用CX表示重复前缀以后指令需要重复的次数        

                (1).无条件前缀

                        REP:当cx!=0时,REP后的指令将继续重复执行

                (2).有条件前缀

                        相等(为零)重复,REPE(REPZ)

                                cx!=0 &&ZF=1 执行后面指令

                        不相等(不为零)重复,REPNE(REPNZ)

                                cx!=0&&ZF=0 执行后面指令

    4.操作类型

             串操作指令需要指明每次操作的类型,可以直接写在操作 数上,或者在助记符后面加上"B"或"W"

一.串传送指令MOVS(MOVs String)

    格式

        1.MOVS SRC,DEST

        2.MOVSB

        3.MOVSW

    作用:

                将一个字节或字从存储器的一个区域传送到另一个区域,然后根据类型和DF的值修改地址指针

二.串装入指令LODS(LOaD String)

格式

    (1)LODS SRC(默认源操作数段寄存器位DS)

    (2)LODSB

    (3)LODSW

作用:

    将源字符串的一个字节或字从存储器的一个区域传送到AL或AX中

三:串送存指令STOS(STOre String)

    格式

            (1)STOS DEST(默认源操作数段寄存器为DS)

            (2)STOSB

            (3)STOSW

    作用    

            将AL或AX中的内容送到目的字符串 


四:串比较指令CMPS(CoMPare String)

格式

    (1)CMPS  DEST,SRC

    (2)CMPSB

    (3)CMPSW

作用

    将字符串中相应的元素逐个进行比较(即相减),但不将比较的结果送到目的操作数,而是影响标志位。然后根据类型和DF的值修改地址指针,CMPS与其他指令不同,源操作数在后,目的操作数在钱。

五:串扫描指令SCAS(SCAn String)

格式

    (1)SCAS DEST

    (2)SCASB

    (3)SCASW

 操作

         SCAS指令在一个字符串中搜索特定的关键字,然后根据类型和DF的值修改地址指针。字符串的起始地址只能放在(ES:DI)中

六:串输入INS(INput from port to String)

格式:

        (1)INS DST,DX

        (2)INSB

        (3)INSW

        (4)INSD

作用

            指令把端口在DX寄存器中的I/O空间的数据送到由ES:DI指向的存储单元,并根据DF的值和数据类型修改DI        

七:串输出OUTS(OUTput String to port)

   格式:

            (1)OUTS DX,SRC

            (2)OUSTB

            (3)OUTSW

            (4)OUSTD

    作用:

               指令把由DS:SI指向的存储单元中的数据送到端口号在DX寄存器中的I/O端口中,并根据DF的值和数据类型改变SI        

你可能感兴趣的:(串操作(AT&T))