汇编 movs stos rep df 等指令的作用

MOVS 指令

MOVS 内存[EDI],内存[ESI]
  • 将ESI地址中的值移动到EDI指向的地址中,每次移动X字节,同时 esi、edi增加x

MOVS BYTE PTR ES:[EDI],BYTE PTR ES:[ESI] == 简写:MOVSB

MOVS WORD PTR ES:[EDI],WORD PTR ES:[ESI]== 简写:MOVSW

MOVS DWORD PTR ES:[EDI],DWORD PTR ES:[ESI]== 简写:MOVSD

STOS 指令

STOS 内存[EDI]
  • 将AL/AX/EAX的值存储到[EDI]内存中

STOS BYTE PTR ES:[EDI] 简写:STOSB
STOS WORD PTR ES:[EDI] 简写:STOSW
STOS DWORD PTR ES:[EDI] 简写:STOSD

REP

重复操作前缀。通常会加到 MOVS STOS等指令前面,表示重复执行后面的指令,重复的次数由ECX寄存器的值决定。

可以进行如下操作:

rep movsb //重复ecx次,每次将一个字节从esi到edi
rep movsw //重复ecx次,每次将一个字从esi到edi
rep movsd //重复ecx次,每次将两个字从esi到edi
rep stosb //重复ecx次,每次将 al 传送到edi
rep stosw //重复ecx次,每次将 ax 传送到edi
rep stosd //重复ecx次,每次将 eax 传送到edi

DF标志

df标记寄存器可以做到esi和edi的增减

  • DF=0 :esi和edi递增
  • DF=1 : esi和edi递减

配合movs和stos的指令,可以同时指定传送后,esi和edi是往高处走还是低处走

posted @   hugeYlh  阅读(153)  评论(0编辑  收藏  举报  
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示