一、加法指令 ADD(Addition) 格式

格式:ADD A,B   //A=A+B;

功能:两数相加

1. OPRD1为任一通用寄存器或存储器操作数,可以是任意一个通用寄存器,而且还可以是任意一个存储器操作数.

OPRD2为立即数,也可以是任意一个通用寄存器操作数.立即数只能用于源操作数B.

2. A和B均为寄存器是允许的,一个为寄存器而另一个为存储器也是允许的, 但不允许两个都是存储器操作数.

//也就是说A与B不能同时是指针 如: add [eax],[ebx] 这类情况是错的

例子:

第三课中的add函数里 有如下2句代码

00401003  |.  8B45 08      MOV EAX,DWORD PTRSS:[EBP+8]             ;  a

00401006  |.  0345 0C      ADD EAX,DWORD PTR SS:[EBP+C]            ;  b //eax=a+b

二、ADD指令测试

int _tmain(int argc, _TCHAR* argv[])

{

int i=0;

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 PTRSS:[EBP-8]             ;  eax=i=0

0040101F  |.  0500010000   ADD EAX,100                              ;  eax=eax+100=0+100=100

00401024  |. 8945 F8       MOV DWORD PTRSS:[EBP-8],EAX             ;  i=eax=100

00401027  |. 8B4D F8       MOV ECX,DWORD PTRSS:[EBP-8]             ;  ecx=i=100

0040102A  |. 81C1 11010000 ADD ECX,111                              ;  ecx=ecx+111=100+111=0x211

00401030  |. 894D F8       MOV DWORD PTRSS:[EBP-8],ECX             ;  i=ecx=0x211

00401033  |. 8D55 F8       LEA EDX,DWORD PTRSS:[EBP-8]             ;  edx=&i=ebp-8;

00401036  |. 8955 FC       MOV DWORD PTRSS:[EBP-4],EDX             ;  p=&i

00401039  |.  B822020000   MOV EAX,222

0040103E  |.  BB00010000   MOV EBX,100

00401043  |. 03D8          ADD EBX,EAX                              ;  ebx=ebx+eax=100+222=322

00401045  |. 8B5D FC       MOV EBX,DWORD PTRSS:[EBP-4]             ;  ebx=i=edx=ebp-8

00401048  |. 8003 11       ADD BYTE PTRDS:[EBX],11                 ;  i=i+11

0040104B  |. 8145 F8 11010>ADD DWORD PTR SS:[EBP-8],111             ; i=i+111

*/

printf("");

return0;

}

005-汇编加法指令ADD相关推荐

  1. 8086加法指令ADD

    加法指令ADD(ADDition) ADD OPRD1,OPRD2 ;OPRD1<--OPRD1+OPRD2 ;完成OPRD1与OPRD2相加 ,结果保存在OPRD1中CODE SEGMENT ...

  2. 出主机框图,分别以存储指令“STA M”和加法指令“ADD M”(M均为主存地址)为例,在图中按序标出完成该指令(包括取指阶段)的信息流程。假设主存容量为256M×32位,在指令字长、存储字长、机器字

    前期知识点介绍: 主机框图如图1.11所示. STA M指令: 取指令: PC→MAR, MAR→ M, M →MDR, MDR→IR, 分析指令: OP(IR)→CU, 执行指令: Ad(IR)→M ...

  3. 汇编语言中xor指令_汇编各类指令用法及含义分析 - 全文

    什么是汇编语言 汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符(Mnemonics)代替机器指 ...

  4. 汇编call指令详解_我也能写出雷军的的代码吗?最好的汇编语言入门教程在这里!...

    作者:阮一峰 链接:http://www.ruanyifeng.com/blog/2018/01/ 之前,嵌入式Arm曾经发送过一篇名<给跪了!来看看雷军 1994 年写的代码,经典老古董(附完 ...

  5. 80×86汇编常用指令

    80×86汇编常用指令 一.数据传送指令 1. 通用数据传送指令 简写 英文全称 执行操作 MOV move 传送 MOVSX move with sign-extend 带符号扩展传送 MOVZX ...

  6. 木马免杀之汇编花指令技巧

    木马免杀之汇编花指令技巧 作者: 逆流风(发表于<黑客X档案>07.07,转载注明出处)        相信很多朋友都做过木马免杀,早期的免杀都是加壳和改特征码,现在免杀技术已经发展到花指 ...

  7. 汇编语言-012(扩展加法指令ADC、带借位减法指令SBB、执行加法后进行ASCII调整指令、AAS 、AAM、AAD 、DAA指令将和数转成压缩十进制格式)

    1:ADC : 扩展加法指令ADC .386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCode:DWORD.code main P ...

  8. C51汇编语言16进制加法,51单片机汇编语言带进位加法指令(4条)

    算术运算指令共有24条,算术运算主要是执行加.减.乘.除法四则运算.另外MCS-51指令系统中有相当一部分是进行加.减1操作,BCD码的运算和调整,我们都归类为运算指令.虽然MCS-51单片机的算术逻 ...

  9. 8086CPU-算术运算指令(加法指令)

    算术运算指令 8086的算术运算类指令能过对二进制或十进制(BCD码)数进行加,减,乘,除运算,操作数的数据形式可以是8位或16位的无符号数或带符号数 1.加法指令 ①不带进位的加法指令: 格式: A ...

最新文章

  1. 硬件工程师必备秘籍,模拟电子经典200问!
  2. nessus安全工具主要用途_发电技术 | 发电厂DCS 网络安全评估与防护
  3. js正则--验证6-12位至少包含数字、小写字母和大些字母中至少两种字符,
  4. sharepoint2010 SP1 chrome 时常无滚动条
  5. php5.6 xdebug 配置,php5.5+apache2.4+mysql5.6+xdebug配置
  6. Java7并发编程指南——第二章:线程同步基础
  7. latex格式简要说明
  8. 《RECURRENT BATCH NORMALIZATION》
  9. Linux shell 正则表达式(BREs,EREs,PREs)差异比较
  10. 在线直播网站源码开发,音视频同步的处理方案及选择
  11. PS 模块BAPI新建修改项目、WBS、网络、作业 (二)
  12. 谷歌 发布android 8,2017谷歌大会正式发布Android 8.0!
  13. 前阿里云CTO章文嵩:怎样做开源才有意义?
  14. Android 电池系统节点信息简述
  15. 基于ip-iq变换的谐波检测算法,并联型APF 有源电力滤波器 谐波电流检测
  16. Python-----(3)数
  17. Anti-pattern
  18. C# 递归的应用 TreeView递归绑定数据
  19. 输油管道问题(分治算法)
  20. 如何编写商场超市行业群发短信

热门文章

  1. java 读取excel数据
  2. 人生理解---3、不想学习的时候怎么办
  3. 服务器pe装系统找不到硬盘,用U盘PE装系统找不到硬盘如何解决妙招
  4. pycharm设置控制台的解释器_PyCharm设置
  5. 二分法算一元三次方程
  6. 基于GD32实现CS5530电子秤称重方案及驱动
  7. k8s-linux上安装
  8. c语言输出菱形for循环_c语言输出菱形
  9. cmake中的INTERFACE_INCLUDE_DIRECTORIES是干什么的
  10. xp系统共享打印机服务器不可用,那种方式能够解决WinXP访问Win10共享打印机指定网络不可用的问题?...