汇编_movsd和stosd

【本节目标】

今天我们来学习对串操作的操作数

  1. 明白movsd的使用,观察其在汇编模式下的内存和寄存器的变化
  2. 学会使用rep指令
  3. 掌握stosd的使用

1. movs/movsb/movsw/movsd-数据从字符串移到字符串

注意其寄存器固定死了

说明:

将第二个操作数(源操作数)指定的字节、字或双字移到第一个操作数(目标操作数)指定的位置。源操作数与目标操作数都是内存位置。(特殊指令,可以同时改变内存)源操作数的地址从DS:ESI或DS:SI寄存器中读取(具体取决于指令的地址大小属性,分别为32或16)。目标操作数的地址从ES:EDI或ES:DI寄存器中读取(具体也取决于指令的地址大小属性)。DS段可以用跨段前缀覆盖,但ES段不能覆盖。

movsb 把[esi]里面的一个字节移动到[edi]里面

movsw 把[esi]里面的两个字节移动到[edi]里面

movsd 把[esi]里面的四个字节移动到[edi]里面

  • b是代表byte;w是代表word;d是代表dword

1.1 movsd

此时先记住内存寄存器,下面我们来看看会发生什么变化

  • 同理movsd改为movsb,那么就是把ESI内存里面1个字节给到EDI,然后ESI和EDI同时加1;
  • 同理movsd改为movsw,那么就是把ESI内存里面2个字节给到EDI,然后ESI和EDI同时加2;

补充:

  • cld-清除DF标志 df=0 ------>递增(c代表clear)
  • std-设置DF标志 df=1 ------>递减(s代表set)

1.2 rep-重复执行

按计数寄存器((E)CX)中指定的次数重复执行字符串指令,或是重复到ZF标志不再满足指定的条件。REP(重复)

  • 看ECX ECX=0,那么结束重复
  • REP前缀可以添加到INS、OUTS、MOVS、LODS 及STOS 指令。(不要随意添加REP)

重复的是ESI给EDI的这个指令


1.3 STOS/STOSB/STOSW/STOSD-存储字符串

stosb 把AL的值移动到edi

stosw 把AX的值移动到edi

stosd 把EAX的值移动到edi

下面我们那stosd指令来举一个例子:

下面我们观察一下变化:

所以:stosd相当于指令:

  • mou dword ptr ds:edi,eax
  • add edi,0x4

同理:

  • 如果stosd改为stosw,那就是改变两个字节,然后EDI+2
  • 如果stosd改为stosb,那就是改变一个字节,然后EDI+1

注意:

如果在stosd这条指令前面加上std这个指令,那么EDI就是做减法,因为EDI会改变DF的值,变为一,那么stosd这个指令就让EDI-4;同理stosb-1;stosw-2

相关推荐
极客互动API3 小时前
企业微信 iPad 协议服务搭建与 AI 回调实战
网络·汇编·人工智能·微信·企业微信·ipad
wechatbot8885 天前
极客互动企业微信 SCRM 私域运营实战效果全景
大数据·汇编·微信·自动化·企业微信·rpa
祈禾10 天前
计算机组成原理之编译、汇编、链接、解释
开发语言·汇编·笔记·学习
水饺编程12 天前
AT&T 汇编语言学习笔记开篇语
c语言·汇编·c++
iCxhust12 天前
8088单板机VScode集成开发环境使用方法二(汇编版)
汇编·单片机·微机原理·8088单板机
·薯条大王13 天前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
txg66614 天前
VULOC:基于汇编切片的漏洞定位框架,精准锁定二进制中的危险代码
汇编·人工智能·深度学习·安全·网络安全
sunburn-15 天前
Java 队列全面详解:从入门到面试实战
java·开发语言·汇编·ide·idea
wechatbot88822 天前
企业微信API开发:登录-联系人查询-消息发送完整开发流程分享
汇编·微信·自动化·企业微信·ai编程·rpa
00后程序员张22 天前
iOS加固技术路线全面解析:Bitcode模式、源码模式与汇编模式对比及爱加密优势
android·汇编·ios·小程序·uni-app·cocoa·iphone