汇编语言中的字符串操作指南
1. 其他 REP 指令
REP 指令在处理字符串时很实用,除了监控 ECX 寄存器的值,还有一些 REP 指令会监控零标志(ZF)的状态。以下是其他可用的 REP 指令及其描述:
| 指令 | 描述 |
| ---- | ---- |
| REPE | 相等时重复 |
| REPNE | 不相等时重复 |
| REPNZ | 不为零时重复 |
| REPZ | 为零时重复 |
REPE 和 REPZ 指令是同义词,REPNE 和 REPNZ 指令也是同义词。虽然 MOVS 指令不太适合使用这些 REP 变体,但本章后面讨论的比较和扫描字符串函数会大量使用它们。
2. 存储和加载字符串
除了将字符串从一个内存位置移动到另一个内存位置,还有一些指令用于将内存中的字符串值加载到寄存器中,然后再将其放回内存位置。下面介绍用于此目的的 STOS 和 LODS 指令。
2.1 LODS 指令
LODS 指令用于将内存中的字符串值移动到 EAX 寄存器中。与 MOVS 指令一样,LODS 指令有三种不同的格式:
- LODSB:将一个字节加载到 AL 寄存器中
- LODSW:将一个字(2 字节)加载到 AX 寄存器中
- LODSL:将一个双字(4 字节)加载到 EAX 寄存器中
Intel 文档使用 LODSD 来加载双字,而 GNU 汇编器使用 LODSL。
LODS 指令使用 ESI 寄存器作为隐含的源操作数。ESI 寄存器必须包含要加载的字符串的内存地址。在数
超级会员免费看
订阅专栏 解锁全文
1325

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



