(32位汇编 九)ADC/SBB/XCHG/MOVS/STOS/REP
ADC指令
- 带进位加法。
- 格式:
ADC R/M, R/M/IMM
两边不能同时为内存,宽度要一样
ADC AL, CL
ADC BYTE PTR DS:[12FFC4], 2
ADC BYTE PTR DS:[12FFC4], AL
SBB指令
- 带借位减法
- 格式:
SBB R/M, R/M/IMM
两边不能同时为内存,宽度要一样
SBB AL, CL
SBB BYTE PTR DS:[12FFC4], 2
SBB BYTE PTR DS:[12FFC4], AL
XCHG指令
交换数据。
格式:XCHG R/M, R/M
两边不能同时为内存,宽度要一样
XCHG AL, CL
XCHG DWORD PTR DS:[12FFC4], EAX
XCHG BYTE PTR DS:[12FFC4], AL
MOVS指令
移动数据 内存 - 内存
BYTE
/WORD
/DWORD
MOVS BYTE PTR ES:[EDI], BYTE PTR DS:[ESI] 简写为:MOVSB
MOVS WORD PTR ES:[EDI], WORD PTR DS:[ESI] 简写为:MOVSW
MOVS DWORD PTR ES:[EDI], DWORD PTR DS:[ESI] 简写为:MOVSD
例子:
MOV EDI, 12FFD8
MOV ESI, 12FFD0
MOVS DWORD PTR ES:[EDI], DWORD PTR DS:[ESI] ;观察EDI的值,,EDI和ESI各加DWORD
MOVS DWORD PTR ES:[EDI], DWORD PTR DS:[ESI]
MOVS DWORD PTR ES:[EDI], DWORD PTR DS:[ESI]
MOVS DWORD PTR ES:[EDI], DWORD PTR DS:[ESI]
MOVS DWORD PTR ES:[EDI], DWORD PTR DS:[ESI]
修改标志寄存器中D
位的值,然后再执行下面的指令:
MOV EDI, 12FFD8
MOV ESI, 12FFD0
MOVS DWORD PTR ES:[EDI], DWORD PTR DS:[ESI] ;观察EDI的值
MOVS DWORD PTR ES:[EDI], DWORD PTR DS:[ESI]
MOVS DWORD PTR ES:[EDI], DWORD PTR DS:[ESI]
MOVS DWORD PTR ES:[EDI], DWORD PTR DS:[ESI]
MOVS DWORD PTR ES:[EDI], DWORD PTR DS:[ESI]
标志寄存器D
位:方向标志;
D
为0:EDI
和ESI
加BYTE
/WORD
/DWORD
D
为1:EDI
和ESI
减BYTE
/WORD
/DWORD
注意:MOVS
很有可能是一个字符串的复制
STOS指令
将AL
/AX
/EAX
的值存储到 [EDI]
指定的内存单元。
STOS BYTE PTR ES:[EDI] 简写为:STOSB
STOS WORD PTR ES:[EDI] 简写为:STOSW
STOS DWORD PTR ES:[EDI] 简写为:STOSD
例子:
MOV EAX, 12345678
MOV EDI, 12FFC4
STOS BYTE PTR ES:[EDI] ;观察EDI的值
STOS WORD PTR ES:[EDI]
STOS DWORD PTR ES:[EDI]
修改标志寄存器D
位的值,然后再执行下面的指令:
MOV EAX, 12345678
MOV EDI, 12FFC4
STOS BYTE PTR ES:[EDI] ;观察EDI的值
STOS WORD PTR ES:[EDI]
STOS DWORD PTR ES:[EDI]
注意:STOS
也受D
位的影响,和MOVS
一样,影响EDI
寄存器增长方向。
REP指令
按计数寄存器(ECX
)中指定的次数重复执行字符串指令。
MOV ECX, 10
REP MOVSD
REP STOSD
(32位汇编 九)ADC/SBB/XCHG/MOVS/STOS/REP相关推荐
- 32位汇编第七讲,混合编程,内联汇编
32位汇编第七讲,混合编程 博客园IBinary原创 QQ:2510908331 博客连接:http://www.cnblogs.com/iBinary/ 转载请注明出处,谢谢 混合编程的概念,有时 ...
- 32位汇编ebp、ebp-4、ebp+4、ebp+8等含义
我们知道,当调用了一个函数后,底层汇编大多数会使用ebp寻址的方式去查找参数,关于ebp与esp寻址可以看我这篇文章<ebp寻址>. 下面简单说总结一下ebp几个偏移的含义: ebp: ...
- 汇编——32位汇编基础框架
代码 .586 .model flat,stdcall option casemap:noneincludelib ucrt.lib includelib legacy_stdio_definitio ...
- 32位汇编第六讲,OllyDbg逆向植物大战僵尸,快速定位阳光基址
32位汇编第六讲,OllyDbg逆向植物大战僵尸,快速定位阳光基址 一丶基址,随机基址的理解 首先,全局变量的地址,我们都知道是固定的,是在PE文件中有保存的 但是高版本有了随机基址,那么要怎么解决这 ...
- 32位汇编寄存器及汇编指令
32位CPU所含有的寄存器有: 4个数据寄存器(EAX.EBX.ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES.CS.SS.DS.FS和 ...
- 【转】32位汇编 NASM 入门级
1. 问题:VC.NET中如何调用汇编asm文件中定义的函数,请高手多多指点!!!? 我的普通VC工程中(没用到托管)要调用一个asm文件中定义的函数 但是编译不能通过,请高手多多指教 提问时间:2 ...
- 【汇编语言】32位汇编总结
x86汇编语言 学习操作系统前对汇编语言进行快速学习,转载自x86汇编语言进行总结. 汇编程序的布局 清单A-1显示了一个简单的C程序,清单A-2显示了由GCC v5.4.0对应生成的汇编程序,第1章 ...
- 64位linux下玩32位汇编编程
无法按照原来的方式,直接用as test32.s -o test32.o汇编 直接用ld test32.o -o test32链接 直接报错,由于我的linux是64位,解决方法就是在两个命令 ...
- x86的32位汇编快速入门
本文描述基本的32位X86汇编语言的一个子集,其中涉及汇编语言的最核心部分,包括寄存器结构,数据表示,基本的操作指令(包括数据传送指令.逻辑计算指令.算数运算指令),以及函数的调用规则.个人认为:在理 ...
- [32位汇编系列]004 - 对话框资源的使用(2)
这一节, 我们主要分析上一节 中的反汇编代码,通过汇编代码的分析, 让你更加的清楚汇编程序的处理逻辑 也让你了解我们写出的汇编源码和反汇编代码之间的差别和对应关系 程序分为2个部分, 一个是程序的入口 ...
最新文章
- 如何用DiscoGAN学习发现跨域关系(附源代码)
- 换血吃药改基因,硅谷富豪们想用钱收买死神丨视频
- 值域范围 tf.clip_by_value的用法
- bash 判断 os 版本_鸿蒙OS手机将至,华为手机用户提问,老款机器能升级吗?
- 天翼云从业认证(1.3)了解数据库的概念、SQL、关系型数据库、大数据和 NoSQL 数据库
- Qt Creator导入3D资产Importing 3D Assets
- 用set和shopt设置bash选项
- SONY的CMOS 图像传感器技术发展路线
- 2018-9-25 进入公司第一天
- 在matlab中实现PCA算法
- 了解protected 以及公用、私有和受保护的继承
- 深度学习入门:手写体识别
- 计算机2010word中的页面背景在哪里,word2010里怎样填充页面背景图片
- 三国演义人物出场次数统计
- 远行星号java 出错_远行星号跳出问题[已解决]
- Python,折线图,手写数字,图像反色、二值化、28X28
- 记一次带宽跑满服务器卡死事故处理
- linux 基金会 认证,Linux基金会宣布新的Linux认证计划
- 使用matplotlib时报错:RuntimeWarning: Glyph 20998 missing from current font.
- 熊过留印---爱心篇
热门文章
- 学计算机去北理还是去哈工大,我是哈工大威海大三软件学院的学生,我想考北理工..._在职考研_帮考网...
- 去掉scan pattern多余port的方法
- Sniffer软件简介
- 曼昆经济学原理读书笔记加杂感(一)
- 【WAX链游】搭建自己的WAX网络节点
- 目标跟踪数据集整理(三)----GOT-10k
- MP3的采样率和比特率
- 遥感中的数字量化值DN, 辐射亮度Radiance, 反射率Reflectance,发射率Emissive的意义
- 创业板首批企业或节前招股 新公布6家上会公司
- 第五人格PC端下载以及解决打不开问题