![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
汇编
。
gclome
这个作者很懒,什么都没留下…
展开
-
mov,lea指令的区别
转载自 渣渣爱学习最近在学习汇编语言,过程中遇到很多问题,对此在以后的随笔会逐渐更新,这次谈谈mov,lea指令的区别一,关于有没有加上[]的问题1,对于mov指令来说:有没有[]对于变量是无所谓的,其结果都是取值 如: num dw 2 mov bx,num mov cx,[num];bx=cx=2对于寄存器而言,有[]表示取地址,没[]表示取值 ...转载 2020-03-18 19:18:57 · 898 阅读 · 0 评论 -
汇编学习--函数
函数是一个程序模块,用来实现一个特定的功能。一个函数包括函数名、入口参数、返回值、函数功能等功能。一、函数的识别程序通过调用程序来调用函数,在函数执行后又返回调用程序继续执行。调用函数的代码中保存了一个返回地址,该地址会与参数一起传递给被调用的函数。有多种方法可以实现这个功能,在绝大多数情况下,编译器会使用call和ret指令来调用函数及返回调用函数。call指令:call指令与跳转指令功能...原创 2020-03-14 20:13:13 · 1300 阅读 · 0 评论 -
汇编学习--数组
数组是相同数据类型的元素的集合,它们的内存中按顺序连续存放在一起。在汇编状态下访问数组一般是通过基址加变址寻址实现的。0x01 先找一个数组访问的C语言代码 #include<stdio.h> int main() { static int a[3]={0x11,0x22,0x33}; int i...原创 2020-03-09 14:15:16 · 9481 阅读 · 2 评论 -
汇编之控制语句(下)
SWITCH-CASE语句switch语句是多分支选择语句。编译后的switch语句,就是多个if-else语句的嵌套组合,还是从书上的代码开始做汇编C语言代码:#include<stdio.h>void main(){ int a; scanf("%d",&a); switch(a) { ...原创 2020-03-04 16:37:14 · 153 阅读 · 0 评论 -
汇编之控制语句(上)
在C语言中,会有if-then-else和switch-case语句来构建判断流程,在汇编中表现为cmp指令后面跟着各类的跳转,如:jz,jle等等。一、汇编之if-then-else语句将if-then-else编译成汇编之后,整数用cmp指令进行比较,浮点数用fcom,fcomp等指令进行比较。首先是下面这个if语句:#include<stdio.h>void main(...原创 2020-03-04 16:31:34 · 580 阅读 · 0 评论 -
汇编之循环语句
今天看了《加密与解密》循环语句部分,接下来将从do-while循环,while循环,for循环三个方面去学习循环的汇编。0x01 do-while循环do-while循环的流程是:先执行语句块,在进行表达式判断,当表达式为真时,在继续执行语句块。接下来先看一段C语言代码: #include "stdafx.h" int main(int argc, char* argv[]) ...原创 2020-03-04 16:26:49 · 4784 阅读 · 0 评论 -
串操作指令---movs,stos,rep
MOVS指令字符串传送指令 movs格式 :MOVS OPRD1,OPRD2功能:OPRD1<----OPRD2说明:OPRD1为目的串符号地址,OPRD2为源串符号地址区分:MOVSB:传送一个字节,之后SI和DI(或者ESI和EDI)加/减1MOVSW:传送一个字,之后SI和DI(或者ESI和EDI)加/减2MOVSD:传送一个双字,之后SI和DI(或者ESI和EDI)加...原创 2020-02-13 13:34:53 · 1336 阅读 · 0 评论 -
【转载】函数调用堆栈的过程
原文链接:https://blog.csdn.net/zhuoya_/article/details/80516246本篇来分析函数调用的过程:通过下面一个简单的例子来进入话题:#include<stdio.h>int sum(int a,int b){ int tmp=0; tmp=a+b; return tmp;} int main(){ int a=10...转载 2020-02-13 13:33:20 · 161 阅读 · 0 评论 -
jcc跳转指令
jcc指令表jcc表示条件跳转指令,cc就是条件码,下图来源于作者fengshh2301常在这里插入图片描述原创 2020-02-11 12:46:30 · 1984 阅读 · 0 评论 -
汇编语言的逻辑运算---与或非 异或
与运算逻辑与运算指令AND格式#include<stdio.h>main(){ int a; _asm{ mov eax,5 mov ebx,6 and eax,ebx mov a,eax }; printf("%d\n",a); //结果为4}或运算#include<stdio.h>main(){ int...原创 2020-02-11 12:10:56 · 13579 阅读 · 0 评论 -
比较指令---cmp,test
CMP指令比较指令CMP(CoMPARE)格式:CMP OPRD1,OPRD2功能:对两数进行相减,进行比较test指令测试指令格式:TEST OPRD1,OPRD2功能:其中OPRD1,OPRD2的含义同AND指令一样,也是对两个操作数进行按位的‘与’运算,唯一的不同之处是不将‘与’的结果送目的操作数,即本指令对两个操作数的内容均不进行修改,仅是在逻辑与操作后,对标志位重新置位...原创 2020-02-11 11:39:06 · 1394 阅读 · 0 评论 -
数据移动指令-----mov,lea,xchg
mov指令数据传送指令格式:MOV OPRD1,OPRD2功能:将一个源操作数送到目的操作数中,即OPRD2—>OPRD1OPRD1为目的操作数,可以是寄存器,存储器,累加器OPRD2为源操作数,可以是寄存器,存储器,累加器和立即数#include<stdio.h>main(){ _asm{ mov eax,ebx mov ebx,ecx...原创 2020-02-11 11:20:00 · 1095 阅读 · 0 评论 -
汇编语言中的数学运算---加减乘除自增自减
1.加法加法指令:ADD(Addition)格式: ADD OPRD1,OPRD2功能:两数相加,这两个数的类型可以为存储器,寄存器,立即数不允许OPRD1和OPRD2同时为存储器带进位加法指令ADC(Addition Carry)格式:ADC OPRD1,OPRD2功能:OPRD1=OPRD1+OPRD2+CF #include<stdio.h> main()...原创 2020-02-10 14:42:25 · 13182 阅读 · 1 评论 -
【转载】函数调用方式--__thiscall调用方式和__cdecl,__stdcall有什么区别
原文链接:https://blog.csdn.net/u014269285/article/details/80503180函数调用方式–__thiscall调用方式和__cdecl,__stdcall有什么区别首先,__thiscall是关于类的一种调用方式,它与其他调用方式的最大区别是:__thiscall对每个函数都增加了一个类指针参数class aa{void bb(i...转载 2020-02-08 14:57:27 · 149 阅读 · 0 评论 -
[转载]汇编语言指令集
文章转自:https://www.jianshu.com/p/5cdf712ffd4a一、数据传输指令 它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据. 1. 通用数据传送指令. MOV 传送字或字节. MOVSX 先符号扩展,再传送. MOVZX 先零扩展,再传送. PUSH 把字压入堆栈. POP 把字弹出堆栈. PUSH...转载 2020-01-19 21:51:09 · 166 阅读 · 0 评论 -
[转载] 32位汇编指令笔记
32位CPU所含有的寄存器有: PQJI~u9te}4个数据寄存器(EAX、EBX、ECX和EDX) <,\Op=$l3I2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) ']'V?@H]46个段寄存器(ES、CS、SS、DS、FS和GS) ZaKT~f%%z1个指令指针寄存器(EIP) 1个标志寄存器(EFlags) f*HEw1、数据寄存器 s ~ Xa...转载 2020-01-19 21:48:38 · 16242 阅读 · 0 评论