005-汇编加法指令ADD
一、加法指令 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相关推荐
- 8086加法指令ADD
加法指令ADD(ADDition) ADD OPRD1,OPRD2 ;OPRD1<--OPRD1+OPRD2 ;完成OPRD1与OPRD2相加 ,结果保存在OPRD1中CODE SEGMENT ...
- 出主机框图,分别以存储指令“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 ...
- 汇编语言中xor指令_汇编各类指令用法及含义分析 - 全文
什么是汇编语言 汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符(Mnemonics)代替机器指 ...
- 汇编call指令详解_我也能写出雷军的的代码吗?最好的汇编语言入门教程在这里!...
作者:阮一峰 链接:http://www.ruanyifeng.com/blog/2018/01/ 之前,嵌入式Arm曾经发送过一篇名<给跪了!来看看雷军 1994 年写的代码,经典老古董(附完 ...
- 80×86汇编常用指令
80×86汇编常用指令 一.数据传送指令 1. 通用数据传送指令 简写 英文全称 执行操作 MOV move 传送 MOVSX move with sign-extend 带符号扩展传送 MOVZX ...
- 木马免杀之汇编花指令技巧
木马免杀之汇编花指令技巧 作者: 逆流风(发表于<黑客X档案>07.07,转载注明出处) 相信很多朋友都做过木马免杀,早期的免杀都是加壳和改特征码,现在免杀技术已经发展到花指 ...
- 汇编语言-012(扩展加法指令ADC、带借位减法指令SBB、执行加法后进行ASCII调整指令、AAS 、AAM、AAD 、DAA指令将和数转成压缩十进制格式)
1:ADC : 扩展加法指令ADC .386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCode:DWORD.code main P ...
- C51汇编语言16进制加法,51单片机汇编语言带进位加法指令(4条)
算术运算指令共有24条,算术运算主要是执行加.减.乘.除法四则运算.另外MCS-51指令系统中有相当一部分是进行加.减1操作,BCD码的运算和调整,我们都归类为运算指令.虽然MCS-51单片机的算术逻 ...
- 8086CPU-算术运算指令(加法指令)
算术运算指令 8086的算术运算类指令能过对二进制或十进制(BCD码)数进行加,减,乘,除运算,操作数的数据形式可以是8位或16位的无符号数或带符号数 1.加法指令 ①不带进位的加法指令: 格式: A ...
最新文章
- 硬件工程师必备秘籍,模拟电子经典200问!
- nessus安全工具主要用途_发电技术 | 发电厂DCS 网络安全评估与防护
- js正则--验证6-12位至少包含数字、小写字母和大些字母中至少两种字符,
- sharepoint2010 SP1 chrome 时常无滚动条
- php5.6 xdebug 配置,php5.5+apache2.4+mysql5.6+xdebug配置
- Java7并发编程指南——第二章:线程同步基础
- latex格式简要说明
- 《RECURRENT BATCH NORMALIZATION》
- Linux shell 正则表达式(BREs,EREs,PREs)差异比较
- 在线直播网站源码开发,音视频同步的处理方案及选择
- PS 模块BAPI新建修改项目、WBS、网络、作业 (二)
- 谷歌 发布android 8,2017谷歌大会正式发布Android 8.0!
- 前阿里云CTO章文嵩:怎样做开源才有意义?
- Android 电池系统节点信息简述
- 基于ip-iq变换的谐波检测算法,并联型APF 有源电力滤波器 谐波电流检测
- Python-----(3)数
- Anti-pattern
- C# 递归的应用 TreeView递归绑定数据
- 输油管道问题(分治算法)
- 如何编写商场超市行业群发短信
热门文章
- java 读取excel数据
- 人生理解---3、不想学习的时候怎么办
- 服务器pe装系统找不到硬盘,用U盘PE装系统找不到硬盘如何解决妙招
- pycharm设置控制台的解释器_PyCharm设置
- 二分法算一元三次方程
- 基于GD32实现CS5530电子秤称重方案及驱动
- k8s-linux上安装
- c语言输出菱形for循环_c语言输出菱形
- cmake中的INTERFACE_INCLUDE_DIRECTORIES是干什么的
- xp系统共享打印机服务器不可用,那种方式能够解决WinXP访问Win10共享打印机指定网络不可用的问题?...