计算机编程中的字符串与逻辑操作详解
一、字符串操作基础
在计算机内存里,字符串指的是连续的字节、字或者双字的集合。80x86 指令集里有五条用于操作字符串的指令,下面为你详细介绍:
1. movs :把字符串从源位置移动或者复制到目标位置。
2. cmps :对两个字符串进行比较。
3. scas :在字符串里扫描特定元素。
4. stos :把给定的值存储到字符串中。
5. lods :将字符串元素复制到 EAX、AX 或者 AL 中。
这些指令都有以 b、w 或者 d 结尾的助记符形式,以此来表示字符串元素的大小。
操作流程
字符串指令每次对一个字符串元素进行操作。当涉及源字符串时,源索引寄存器 ESI 存有字符串元素的地址;当涉及目标字符串时,目标索引寄存器 EDI 存有字符串元素的地址。索引寄存器在访问字符串元素之后会进行递增或者递减操作,这取决于方向标志 DF 是被重置为 0 还是设置为 1,可使用 cld 和 std 指令来给方向标志设定所需的值。
重复前缀
重复前缀 rep、repe(repz)和 repne(repnz)会和部分字符串指令一起使用,让指令自动重复执行。原始指令的执行次数会被存放在 ECX 寄存器中。条件重复形式会使用 ECX 里的计数,但如果零标志达到特定值,也会终止指令的执行,这适用于会设置或者重置 ZF 的 cmps 和 scas 指令。
超级会员免费看
订阅专栏 解锁全文

1万+

被折叠的 条评论
为什么被折叠?



