汇编 ADD指令
知识点:
加法汇编指令ADD 一、加法指令 ADD(Addition) 格式
格式: ADD A,B //A=A+B;
功能: 两数相加 . OPRD1为任一通用寄存器或存储器操作数,可以是任意一个通用寄存器,而且还可以是任意一个存储器操作数.
OPRD2为立即数,也可以是任意一个通用寄存器操作数.立即数只能用于源操作数B.
. A和B均为寄存器是允许的,一个为寄存器而另一个为存储器也是允许的, 但不允许两个都是存储器操作数.
//也就是说A与B不能同时是指针 如: add [eax],[ebx] 这类情况是错的
例子:
第三课中的add函数里 有如下2句代码
|. 8B45 MOV EAX,DWORD PTR SS:[EBP+] ; a
|. 0C ADD EAX,DWORD PTR SS:[EBP+C] ; b //eax=a+b 二、ADD指令测试
int _tmain(int argc, _TCHAR* argv[])
{
int i=;
printf(""); i=i+0x100;
i=i+0x111; int *p=&i;
__asm
{
mov eax,0x222
mov ebx,0x100
add ebx,eax //ebx322
//
mov ebx,p
add [ebx],0x111 //00401048 |. 8003 11 ADD BYTE PTR DS:[EBX],11 ; i=i+11
add i,0x111 //DWORD WORD
}
/*
0040101C |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] ; eax=i=0
0040101F |. 05 00010000 ADD EAX,100 ; eax=eax+100=0+100=100
00401024 |. 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX ; i=eax=100
00401027 |. 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8] ; ecx=i=100
0040102A |. 81C1 11010000 ADD ECX,111 ; ecx=ecx+111=100+111=0x211
00401030 |. 894D F8 MOV DWORD PTR SS:[EBP-8],ECX ; i=ecx=0x211
00401033 |. 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8] ; edx=&i=ebp-8;
00401036 |. 8955 FC MOV DWORD PTR SS:[EBP-4],EDX ; p=&i
00401039 |. B8 22020000 MOV EAX,222
0040103E |. BB 00010000 MOV EBX,100
00401043 |. 03D8 ADD EBX,EAX ; ebx=ebx+eax=100+222=322
00401045 |. 8B5D FC MOV EBX,DWORD PTR SS:[EBP-4] ; ebx=i=edx=ebp-8
00401048 |. 8003 11 ADD BYTE PTR DS:[EBX],11 ; i=i+11
0040104B |. 8145 F8 11010>ADD DWORD PTR SS:[EBP-8],111 ; i=i+111 */ printf("");
return ;
}
汇编 ADD指令的更多相关文章
- ARM汇编常用指令
RAM汇编常用指令有MOV B BL LDR STR
- 汇编 浮点指令FLD,FSTP,FADD与FPU寄存器
知识点: 浮点数的存放方式 st0至st7 FLD,FST,FADD指令 一.浮点数的存放方式 00401000 /$ 55 PUSH EBP 00401001 |. 8BEC MOV E ...
- windows下SVN使用 Add指令、Undo Add指令
前几天,使用SVN的Add指令添加了一个文件,后不使用直接删除了,每次提交都存在,解决后记录方法,希望帮到大家,此外如果大家有好的方法,希望可以回复. 问题:使用Add添加文件后直接删除了文件,每次提 ...
- 『现学现忘』Docker基础 — 38、COPY指令和ADD指令
目录 1.COPY指令 (1)COPY指令说明 (2)COPY指令格式 (3)COPY指令使用 (4)其他 2.ADD指令 (1)ADD指令说明 (2)ADD指令格式 (3)ADD指令使用 (4)不推 ...
- 汇编 LEA 指令
知识点: LEA指令 &与LEA OD里修改汇编代码 一.LEA指令格式 有效地址传送指令 LEA 格式: LEA 操作数A, 操作数B 功能: 将操作数B的有效地址传送到指定的的 ...
- 汇编-MOV指令
知识点: MOV指令 基址 内联汇编 把OD附加到资源管理器右键菜单 一.MOV指令 aaa=0x889977;//MOV DWORD PTR DS:[0x403018],0x8899 ...
- 汇编_指令_IRET
IRET(interrupt return)中断返回,中断服务程序的最后一条指令. 汇编指令IRET [指令格式]IRET [指令功能]IRET(interrupt return)中断返回,中 ...
- 汇编_指令_JMP
JMP指令 JMP是汇编语言中的无条件跳转指令.无条件跳转指令可转到内存中任何程序段.转移地址可在指令中给出,也可以在寄存器中给出,或在储存器中指出. 中文名:无条件跳转指令 外文名:JMP 和调用指 ...
- ARM 汇编 数据处理指令
一. 如何把数据放到寄存器中 1. 数据搬移指令 mov , mvn 1) 指令格式:<opcode><cond>{s} Rd, operand <操作 ...
随机推荐
- 大数据【四】MapReduce(单词计数;二次排序;计数器;join;分布式缓存)
前言: 根据前面的几篇博客学习,现在可以进行MapReduce学习了.本篇博客首先阐述了MapReduce的概念及使用原理,其次直接从五个实验中实践学习(单词计数,二次排序,计数器,join,分 ...
- 解决ci框架php发送邮件附件中文乱码问题
CI框架发送邮件附件中文出现乱码,是因为php basename()函数不支持中文引起,修改类库 Email.php 文件中 _append_attachments()方法,大致在 1474行 添加如 ...
- 【转】CentOS 6.6 升级GCC G++ (当前最新版本为v6.1.0) (完整)
原文地址:https://www.cnblogs.com/lzpong/p/5755678.html 我这里是centos7 升级到gcc8.1,过程差不多,参考这篇文章,记录一下. ---原文--- ...
- gitlab查看项目ID/projectId
背景 最近有个CI打包平台,项目projectId弄错,导致拉取到错误仓库.笔者一直通过项目名称(project name)访问,首次接触project id,搜索一圈才找到快捷查看方法,记录于此. ...
- leveldb源码分析--BloomFilter
bloomfilter是leveldb中的一大性能利器,所以为了文章的表现完整性这里新启这么一篇文章.leveldb中的bloomfilter的实现在bloom.cc中,是一个较为简单的实现,所以就不 ...
- 《MVC+EF》——用DBFirst创建ADO.NET实体数据模型和对象关系映射
转载于:http://blog.csdn.net/zhoukun1008/article/details/50528145 现在越来越喜欢MVC了,不光是因为ITOO中用到了他,而是因为它里面包含了很 ...
- 基元用户模式构造--互锁构造 Interlocked 实现的异步web请求实例
using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using Syst ...
- w3school 基础学习
http://www.w3school.com.cn/ http://www.w3school.com.cn/sql/sql_quickref.asp
- 用LinkedList
>用LinkedList模拟栈集合MyStack >MyStack测试类 用LinkedList模拟栈集合MyStack import java.util.LinkedList; ...
- spark-机器学习实践-K近邻应用实践一
K近邻应用-异常检测应用 原理: 根据数据样本进行KMeans机器学习模型的建立,获取簇心点,以簇为单位,离簇心最远的第五个点的距离为阈值,大于这个值的为异常点,即获得数据异常. 如图: