码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 汇编语言入门学习(有栈协程铺垫,32位寄存器,未完待续06/28)


    文章目录

      • 一、进制
      • 二、数据寄存器
        • 1)数据寄存器介绍
        • 2)数据寄存器分类
      • 三、指针寄存器
        • 1)指针寄存器分类
        • 2)操作指针寄存器实例
      • 四、变址寄存器
        • 1)变址寄存器介绍
        • 2)作用介绍(了解一下,没啥特点)
      • 五、指令指针寄存器
      • 六、标志寄存器
        • 1)标志寄存器介绍和作用
        • 2)举例标志寄存器中:ZF寄存器的作用
        • 3)举例截图说明
      • 七、段寄存器
      • 八、数据传送指令
      • 九、加减运算指令
      • 十、逻辑运算
      • 十一、移位指令
      • 十二、test、cmp指令
      • 十三、push、pop指令
      • 十四、jmp、nop指令
      • 十五、jcc指令
      • 十六、call、retn指令

    • 背景举例
    操作举例:把ebx的内容移动到eax中
    机器指令:由0和1组成的序列
    汇编指令:mov    eax  ,ebx (寄存器)
    
    • 1
    • 2
    • 3

    一、进制

    16进制

    89D8
    1000 1001 1101 1000
    
    • 1
    • 2

    在这里插入图片描述

    二、数据寄存器

    • 寄存器介绍
      CPU上的一个元件,CPU的组成部分之一,读写速度非常快

    1)数据寄存器介绍

    保存操作数,保存需要传递的数据(0和1),保存计算结果

    2)数据寄存器分类

    1)EAX:累加寄存器,也称之为累加器。举例1+1=2,会把2放到eax里面
    2)EBX:基地址寄存器,存放地址的寄存器
    3)ECX:计数器寄存器,比如说写一个for循环,循环5次,5这个放在计数寄存器
    4)EDX:数据寄存器,一般放需要的数据,for循环有个值是5,一般放在EDX

    EAX,EBX,ECX,EDX为32位寄存器
    AX,BX,CX,DX位16位寄存器
    低八位:al
    高八位:ah

    • 使用指令结果展示
      1)mov eax , 0x100
      在这里插入图片描述
      2)mov ax ,0x10 (16位寄存器)
      在这里插入图片描述
      3)mov ah,0x1 (高8位)
      在这里插入图片描述

    三、指针寄存器

    1)指针寄存器分类

    操作栈的寄存器

    ESP:保存指向栈顶的指针
    EBP:保存指向栈底的指针

    • 补充:栈的定义

    保存栈的参数和变量
    在这里插入图片描述

    2)操作指针寄存器实例

    1)push eax前
    eax的值: 0019FFCC
    堆栈信息:(0019FF70存的是0019FF80,栈底的地址)
    在这里插入图片描述
    2)push eax后
    栈数据的变化:(由于是32位的exe,0019FF70栈顶向栈底偏移4个字节的长度,就是0019FF6C)
    0019FF6C变为栈顶指针,栈顶指针存的数据变成原先eax的值0019FFCC
    在这里插入图片描述

    四、变址寄存器

    1)变址寄存器介绍

    指寄存器ESI,EDI,SI,DI的寄存器,主要用于存放存储单元在段内的偏移量

    2)作用介绍(了解一下,没啥特点)

    ESI:存放地址的寄存器
    EDI:存放地址的寄存器

    在这里插入图片描述

    五、指令指针寄存器

    EIP寄存器:由存断点的位置表示出来(保存CPU下一次将要执行代码的地址)
    在这里插入图片描述
    当执行到004013A5 68 D41E4000 push TraceMe.004040D0,push指令会把下一步执行代码的地址压栈,原先栈顶指针0019FF6C就变成0019FF68,且值变为004040D0,这就是EIP寄存器的作用

    六、标志寄存器

    1)标志寄存器介绍和作用

    EFL标志寄存器:也叫flag寄存器,占16位的大小
    在这里插入图片描述

    2)举例标志寄存器中:ZF寄存器的作用

    (做运算就会影响ZF位)
    在这里插入图片描述

    3)举例截图说明

    EFL:246的16进制

    1001000110
    在这里插入图片描述
    sub esp,0x58 (由于esp减0x58不为0,ZF位置为0;当结果为0,ZF就置为1)
    在这里插入图片描述

    七、段寄存器

    八、数据传送指令

    九、加减运算指令

    十、逻辑运算

    十一、移位指令

    十二、test、cmp指令

    十三、push、pop指令

    十四、jmp、nop指令

    十五、jcc指令

    十六、call、retn指令

    传送门

  • 相关阅读:
    KMP算法
    Nginx进阶 配置-Nginx auth_basic 身份认证
    MySQL安全性策略:用户认证与数据加密
    弘辽科技:拼多多店铺可以改名字吗?店铺名字怎么取?
    读写/dev/kmsg设备编程实例
    2022年小美赛“认证杯”数学建模ABCD题初步分析&选题建议
    SeaTunnel 学习笔记
    Linux下C语言实现HTTP文件服务器和TCP协议实现网络数据传输
    ESP8266-Arduino编程实例-OPT3001数字环境光传感器
    特征交叉系列:FM和深度神经网络的结合,DeepFM原理简述和实践
  • 原文地址:https://blog.csdn.net/weixin_43679037/article/details/125511623
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号