首页 > 编程语言 >汇编语言

汇编语言

时间:2024-10-23 22:44:09浏览次数:5  
标签:esp 汇编语言 pop rbp a1 eax ebp

寄存器

RIP

存放下一条指令的偏移地址

RSP

存放当前栈帧的栈顶偏移地址

RBP

存放当前栈帧的栈底偏移地址

RAX

通用寄存器。存放函数的返回值

汇编

实际中执行指令时,EIP已经移动到下一行了

cmp

语句 cmp a1,0x61 sub a1,0x61
本质 a1-0x61 a1=a1-0x61
不同 a1不会赋值 a1会赋值

cmp只会判断减去后值是不是为0

lea

把寄存器存储的地址进行加减操作后赋值给另外一个寄存器

lea rax,[rbp-0x18] :rax=rbp-0x18

为什么不用sub

  1. 如果用sub,需要sub rbp,0x18;mov rax,rbp;add rbp,0x18,指令太长了。
  2. mov rax,[rbp-0x18]会直接把[rbp-0x18]存储的信息赋值给rax,而不是地址

xor

xor eax,eax:让eax等于0

不用mov ebx 0

xor eax,eax短

test

test eax,eax => cmp eax,0 exa=0 -> 0 eax!=0 -> !0

相当于and eax,eax,但是不赋值给eax

push

push ebp : esp-4,把ebp放入esp所指的位置

pop

pop ebp :把esp指向的地方赋给ebp,esp+4。esp往下挪

junp

junp 0x11111 -> mov eip 0x11111

call

call : push call的下一条指令(返回地址); jump func;

leave

leave : move esp,ebp;pop ebp;

把esp移到ebp的位置,ebp再到此时栈顶(esp)的地址上,然后esp再加4。也就是往下挪

ret

pop eip ; 从栈中弹出返回地址并存入 EIP

到ret命令时,esp在哪,就把哪里的地址存储的参数给eip

把esp给eip,同时eip加4

对应关系

push ebp; --- pop ebp;

push ebp;pop ebp; --- leave

call; --- ret

标签:esp,汇编语言,pop,rbp,a1,eax,ebp
From: https://www.cnblogs.com/r0xy/p/18498527

相关文章

  • 汇编语言学习笔记(一)基础知识
    指令和数据指令和数据是应用上的概念,在内存或磁盘上,两者没有任何区别,都是二进制信息。如同围棋中的棋子,在棋盒里没有任何区别,在对弈的时候才有不同的意义存储单元计算机最小信息单位为Bit,也就是一个二进制位。8个bit组成一个Byte.通常称之为字节1B=8Bit,1KB=1024B,1M=1024......
  • 汇编语言学习笔记(二)寄存器
    简介上文所说的总线,相对于CPU自身而言,属于外部总线。这些外部总线将CPU与外部芯片串联起来。其内部也有类似结构(运算器/控制器/寄存器/内部总线),组成一个完整的CPU。运算器进行计算处理寄存器进行数据存储控制器控制内部芯片内部总线串联内部芯片不同CPU,寄存器的数量与......
  • 基于x86_64汇编语言简单教程5: 寻址模式与gdb调试
    目录寻址模式gdb调试示例文件打断点办法1:给函数名称和行号打上断点办法2:在地址上打断点打印变量layout命令打印十六进制(特殊)countformatsize再次介绍mov寻址模式我们无非就是频繁的跟数据自己打交道,那么问题来了,我们可以如何找到这些数据呢?这就是我们这篇教......
  • 【汇编语言】寄存器(内存访问)(二)—— DS和[address]
    前言......
  • 【汇编语言】第三章----寄存器(内存访问)(一)—— 内存中字的存储
    文章目录前言1.内存中字的存储2.问题3.问题分析与解答4.结论结语前言......
  • 汇编语言王爽实验七
    代码如下assumecs:codesgdatasegment db'1975','1976','1977','1978','1979','1980','1981','1982','1983' db'1984','1985','1986','......
  • 汇编语言学习路线图
    基础阶段学习重点:了解计算机体系结构基础:熟悉计算机的基本组成,包括CPU、内存、寄存器、总线等硬件部件的功能和作用。理解数据在计算机中的存储和处理方式,以及指令的执行流程。掌握汇编语言基础概念:学习汇编语言的基本语法、指令集、数据类型、存储模式等。了解汇编指令与机器......
  • 菜鸟笔记之PWN入门(1.1.1)汇编语言基础与堆栈入门
    啥是汇编语言?有啥用?深入了解计算机底层,我们会发现,计算机实际上只能执行一些非常基础的操作,但其速度却非常快。计算机的CPU只能执行机器码,即由一系列0和1组成的指令。不同的0和1组合会触发计算机中的不同电路,从而进行各种操作。由于这些0和1的组合很长,阅读起来不方便,因此通常以1......
  • 《ARM Cortex-R 学习指南》-【第四章】-汇编语言简介
    第4章汇编语言简介汇编语言是一种低级编程语言。通常情况下,汇编语言指令(助记符)和处理器执行的实际二进制操作码之间存在一对一的对应关系。许多从事应用级开发的程序员很少需要编写汇编语言代码。然而,在某些情况下,掌握汇编代码的知识可能会非常有用,比如需要高度优化代码......
  • 信息学奥赛初赛天天练-82-NOIP2014普及组-完善程序-机器语言、汇编语言、高级语言、计
    1NOIP2014普及组基础题11以下哪个是面向对象的高级语言()A汇编语言BC++CFortranDBasic2TB代表的字节数是()A2的10次方B2的20次方C2的30次方D2的40次方3二进制数00100100和00010101的和是()A00101000B001010......