知识点:
加法汇编指令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指令的更多相关文章

  1. ARM汇编常用指令

    RAM汇编常用指令有MOV B BL LDR  STR

  2. 汇编 浮点指令FLD,FSTP,FADD与FPU寄存器

    知识点:  浮点数的存放方式  st0至st7  FLD,FST,FADD指令 一.浮点数的存放方式 00401000 /$ 55 PUSH EBP 00401001 |. 8BEC MOV E ...

  3. windows下SVN使用 Add指令、Undo Add指令

    前几天,使用SVN的Add指令添加了一个文件,后不使用直接删除了,每次提交都存在,解决后记录方法,希望帮到大家,此外如果大家有好的方法,希望可以回复. 问题:使用Add添加文件后直接删除了文件,每次提 ...

  4. 『现学现忘』Docker基础 — 38、COPY指令和ADD指令

    目录 1.COPY指令 (1)COPY指令说明 (2)COPY指令格式 (3)COPY指令使用 (4)其他 2.ADD指令 (1)ADD指令说明 (2)ADD指令格式 (3)ADD指令使用 (4)不推 ...

  5. 汇编 LEA 指令

    知识点:  LEA指令  &与LEA  OD里修改汇编代码 一.LEA指令格式 有效地址传送指令 LEA 格式: LEA 操作数A, 操作数B 功能: 将操作数B的有效地址传送到指定的的 ...

  6. 汇编-MOV指令

    知识点:  MOV指令  基址  内联汇编  把OD附加到资源管理器右键菜单 一.MOV指令 aaa=0x889977;//MOV DWORD PTR DS:[0x403018],0x8899 ...

  7. 汇编_指令_IRET

    IRET(interrupt return)中断返回,中断服务程序的最后一条指令.   汇编指令IRET [指令格式]IRET   [指令功能]IRET(interrupt return)中断返回,中 ...

  8. 汇编_指令_JMP

    JMP指令 JMP是汇编语言中的无条件跳转指令.无条件跳转指令可转到内存中任何程序段.转移地址可在指令中给出,也可以在寄存器中给出,或在储存器中指出. 中文名:无条件跳转指令 外文名:JMP 和调用指 ...

  9. ARM 汇编 数据处理指令

    一. 如何把数据放到寄存器中 1. 数据搬移指令 mov  , mvn 1)  指令格式:<opcode><cond>{s}   Rd,  operand     <操作 ...

随机推荐

  1. 二叉搜索树(Binary Search Tree)实现及测试

    转:http://blog.csdn.net/a19881029/article/details/24379339 实现代码:  Node.java  //节点类public class Node{ ...

  2. sublime中如何用less实现css预编译

    实现css预编译的方式有很多,听说glup很流行而且功能也很强大,但是就目前的工作而言,仅要css预编译和YUIcompress就够了,接下来切入正题 Less 是一门 CSS 预处理语言,它扩展了 ...

  3. LeetCode 题解之Reverse Words in a String

    1.题目描述 2.问题分析 使用一个vector存储每个单词. 3.代码 void reverseWords(string &s) { vector<string> v; for ...

  4. Oracle EBS INV 更新物料慢

    失效 ICX SELECT FA.APPLICATION_SHORT_NAME, FA.APPLICATION_ID, PI.STATUS, PI.PRODUCT_VERSION, PI.PATCH_ ...

  5. Oracle EBS AP取消核销

    --取消核销 created by jenrry 20170425 DECLARE l_result BOOLEAN; l_msg_count NUMBER; l_result_n varchar2( ...

  6. ASP.NET动态引用样式表(css)和脚本(js)文件

    // 引入js文件 HtmlGenericControl scriptControl = new HtmlGenericControl("script"); scriptContr ...

  7. ASA5520远程配置 telnet,ssh

    telnet配置: ASA5520(config)# passwd asa5520 //创建用户模式密码ASA5520(config)# enable password asa5520 //创建特权模 ...

  8. CentOS7 配置静态 ip

    1. 为 CentOS7 配置静态 ip 1.1 修改文件/etc/sysconfig/network-scripts/ifcfg-ens33 sudo vi /etc/sysconfig/netwo ...

  9. Local policy - User rights assignment 对照表

    "SeCreateTokenPrivilege"  --> "Create a token object" "SeAssignPrimaryTo ...

  10. 处理AsyncTask的内存泄漏问题

    强引用AsyncTask导致了内存泄漏如下图 1.原因:activity销毁之后,AsyncTask线程可能依旧在执行,导致内存泄漏. 2.解决方法:查了一下大概有两个,一个是将函数声明为static ...