串处理指令

串处理指令包含设置方向标志指令、串处理指令和串重复前缀。

1、设置方向标志指令
DF置零 CLD (clear direction flag)
DF置一 STD (set direction flag)

指令的汇编格式:CLD
                STD
指令的基本功能:CLD   DF=0
                STD   DF=1

2、串处理指令
串传送 MOVSB / MOVSW (move string byte/word)

指令的汇编格式:MOVSB
                MOVSW
指令的基本功能:(ES:DI)<-(DS:SI)
                (SI)<-(SI)+/-1(字节)或+/-2(字)
                (DI)<-(DI)+/-1(字节)或+/-2(字)
指令对条件码的影响:不影响条件码。
指令的特殊要求:源串必须在数据段中,目的串必须在附加段中,串处理指令隐含的寻址方式是SI和DI寄存器的间接寻址方式。源串允许使用段跨越前缀来指定段。

存串 STOSB / STOSW (stroe from string byte/word)
指令的汇编格式:STOSB
                STOSW
指令的基本功能:(ES:DI)<-(AL)或(AX)
                (DI)<-(DI)+/-1(字节)或+/-2(字)
指令对条件码的影响:不影响条件码。
指令的特殊要求:源串必须在数据段中,目的串必须在附加段中,串处理指令隐含的寻址方式是SI和DI寄存器的间接寻址方式。源串允许使用段跨越前缀来指定段。

取串LODSB / LODSW (load from string byte/word)
指令的汇编格式:LODSB
                LODSW
指令的基本功能:(AL)或(AX)<-(DS:SI)
                (SI)<-(SI)+/-1(字节)或+/-2(字)
指令对条件码的影响:不影响条件码。
指令的特殊要求:源串必须在数据段中,目的串必须在附加段中,串处理指令隐含的寻址方式是SI和DI寄存器的间接寻址方式。源串允许使用段跨越前缀来指定段。

串比较 CMPSB / CMPSW (compare string byte/word)
指令的汇编格式:CMPSB
                CMPSW
指令的基本功能:(DS:SI)-(ES:DI) 根据比较结果设置条件码
                (SI)<-(SI)+/-1(字节)或+/-2(字)
                (DI)<-(DI)+/-1(字节)或+/-2(字)
指令对条件码的影响:SF=1 减法结果为负数(符号位为1)
                    SF=0 减法结果为正数(符号位为0)
                    ZF=1 减法结果为零
                    ZF=0 减法结果不为零
                    CF=1 二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况)
                    CF=0 二进制减法运算中最高有效为向高位无借位(被减数〉=减数,够减的情况)
                    OF=1 两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。
                    OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。

串扫描 SCASB / SCASW (scan string byte / word)
指令的汇编格式:SCASB
                SCASW
指令的基本功能:(AL)<-(ES:DI)或(AX)<-(ES:DI) 根据扫描比较的结果设置条件码。
                (DI)<-(DI)+/-1(字节)或+/-2(字)
指令对条件码的影响:SF=1 结果为负数(符号位为1)
                    SF=0 结果为正数(符号位为0)
                    ZF=1 结果为零
                    ZF=0 结果不为零
                    CF=1 二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况)
                    CF=0 二进制减法运算中最高有效为向高位无借位(被减数〉=减数,够减的情况)
                    OF=1 两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。
                    OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。

3、串重复前缀
重复执行串 REP
指令的汇编格式:REP     (CX)=重复次数
指令的基本功能:① (CX)=0时,串指令执行完毕,否则执行② ~ ④
              ② (CX)←(CX)-1
              ③ 执行串指令(MOVS或STOS)
              ④ 重复执行①

相等/为零时重复执行串指令 REPE/REPZ
指令的汇编格式:REPE / REPZ     (CX)=比较/扫描的次数
指令的基本功能:① (CX)=0或ZF=0时,结束执行串指令,否则继续② ~ ④
              ② (CX)←(CX)-1
              ③ 执行串指令(CMPS或SCAS)
              ④ 重复执行①

不等/不为零时重复执行串指令 REPNE / PEPNZ
指令的汇编格式:REPNE / PEPNZ    (CX)=比较/扫描的次数
指令的基本功能:① (CX)=0或ZF=1,结束执行串指令,否则继续② ~ ④
              ② (CX)←(CX)-1
              ③ 执行串指令(CMPS或SCAS)
              ④ 重复执行①

少壮不努力,老大徒悲伤。——汉乐府古辞《长歌行》
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号