当前位置: 首页 > news >正文

32位汇编——通用寄存器

通用寄存器

什么是寄存器呢?

计算机在三个地方可以存储数据,第一个是把数据存到CPU中,第二个把数据存到内存中,第三个把数据存到硬盘上。

那这个所谓的寄存器,就是CPU中用来存储数据的地方。那这个寄存器有多大呢?那取决于你CPU的位数,比如说如果你是一个32位的CPU。那它这个CPU里边能够提供的这个容器就会有三种类型。分别是8位的,16位的和32位的。那如果这个CPU呢?是64位的CPU,那它能提供的这种容器,也就是说能提供的这种寄存器就会有四种类型。分别是8位的,16位的,32位的和64位的。那么,大家可能感兴趣,想知道自己当前的CPU是32位的还是64位的,其实你都可以不用查了。因为只要你从零五年以后买的机器,几乎都是64位的,

大家现在不太可能用那么老的机器了。那这就意味着我们当前的计算机其实都是支持64位的。

为什么要学32位的汇编?

那么现在CPU 64位已经普及了,为什么还要学32位的CPU,还要学32位的汇编呢?其实大家可能对这个硬件的发展历史不是特别的了解,因为我们现在用的这个32、64位的CPU都是从32位的CPU拓展过来的,也就是说从32位到64位,它并没有整体结构上的变化,只是在原来的基础上增加了一些新的寄存器,汇编指令都是一样的

那么也就是说,如果没有32位的汇编的底子,想直接学64位的汇编的话,学起来是非常吃力的。那换句话说,如果你掌握了32位的汇编,想看64位的汇编,可以直接看懂。只是查一查资料,了解一下新增的那些寄存器而已。所以呢,这也是为什么我们无论是学CPU,还是学操作系统,还是学应用程序,都是要先学32位的。

还有一点,虽然现在我们的CPU和操作系统都支持64位了,但是现在我们运行的程序大多数仍然是32位的程序。这也就意味着,我们不可能彻底把32位抛弃,直接进入64位的这个时代。所以呢,我们的汇编还是要从32位开始学。

寄存器是什么呢?接下来主要给大家介绍介绍8个通用寄存器。大家知道32位的CPU,它能提供的寄存器就会有三种类型,分别是8位、16位、32位的,那我给大家介绍的就是32位的寄存器,而且是通用寄存器。

为什么叫通用寄存器呢?

因为在32位的CPU里边呢,它的寄存器有很多种。其它的寄存器都有自己特殊的用途,比如说eip寄存器,它的宽度也是32位,但是这个寄存器里边存储的值是CPU下一次要执行的指令的地址,不能用作其他用途。所以它不能叫通用寄存器。那么我给大家介绍的寄存器是你想存什么就存什么,你需要它存什么它就存什么,所以呢,称为通用寄存器。

通用寄存器一共有8个,分别是eax、ecx、edx、ebx、esp、edp、esi、edi。这8个通用寄存器都是32位的,那这就意味着我们向这些寄存器里边的任何一个存储数据,不能超过32个0和1,如果超过的话,多余的部分就会被丢弃。

如何使用32位的通用寄存器?

mov指令

汇编是什么?汇编简单点说,其实大家可以理解成就是寄存器跟寄存器或者寄存器跟内存之间数据的来回流动,汇编要做的事情就是这个,那也就是说,如果你想学好汇编,你只要记住几个关键词就可以了。寄存器、内存、指令

我们就围绕这三点就可以把汇编学好,而且我个人感觉汇编是所有语言里边最简单的语言。因为它很好理解,很好做实验。

那我们简单介绍一下mov指令,mov指令,move指令是用来移动数据的。

mov指令的作用:

  1. 把一个立即数(就是一个普通的数)存到寄存器里。
  2. 把其他寄存器的值存到另外的寄存器

在ollyICE里演示一下mov指令的用法

首先我们打开ollyICE动态调试软件,可以看到如下界面:

将HelloWorld.exe拖入窗口后,可以看到如下界面:

比如说我要向eax这个寄存器里边存储一个数,那就可以写mov eax,1。然后逗号后边跟一个值。

比如说我还想往ecx这个寄存器里边也存一个值2,写mov ecx,2

那同样的道理,除了可以把立即数存到寄存器里以外,还可以把其他寄存器的值,存到另外的寄存器里,比如说我现在我可以这么写move eax,ebx,意思就是把寄存器ebx的值存到寄存器eax中。

这个位置,这意味当前这个程序中CPU将要执行位置(004011A0)了。那当我们想执行这行指令的时候呢,我们可以按一下快捷键F8。

mov eax,1执行完毕了,已经把1这个立即数写到这个寄存器eax里去了。

同样的道理,我再按一下F8,就把2这个值存到这个寄存器ecx里了。

同样的道理,我再按一下F8,就把寄存器ebx的值存到这个寄存器eax里了。

相关文章:

32位汇编——通用寄存器

通用寄存器 什么是寄存器呢? 计算机在三个地方可以存储数据,第一个是把数据存到CPU中,第二个把数据存到内存中,第三个把数据存到硬盘上。 那这个所谓的寄存器,就是CPU中用来存储数据的地方。那这个寄存器有多大呢&a…...

vue3项目中实现el-table分批渲染表格

开篇 因最近工作中遇到了无分页情景下页面因大数据量卡顿的问题&#xff0c;在分别考虑并尝试了懒加载、虚拟滚动、分批渲染等各个方法后&#xff0c;最后决定使用分批渲染来解决该问题。 代码实现 表格代码 <el-table :data"currTableData"borderstyle"wi…...

开源办公软件 ONLYOFFICE 深入探索

文章目录 引言1. ONLYOFFICE 创建的背景1. 1 ONLYOFFICE 项目启动1. 2 ONLYOFFICE 的发展历程 2. 核心功能介绍2. 1 桌面编辑器2. 1. 1 文档2. 1. 2 表格2. 1. 3 幻灯片 2. 2 协作空间2. 3 文档编辑器 - 本地部署版 3. 技术介绍4. 安装5. 优势与挑战6. 个人体验7. 强大但不止于…...

原生鸿蒙应用市场:开发者的新机遇与深度探索

文章目录 自动化检测前移&#xff1a;提升开发效率与质量的新利器数据服务&#xff1a;数据驱动的精细化运营助手测试服务&#xff1a;保障应用质量的关键环节应用加密&#xff1a;保护应用安全与权益的利器从开发到运营的全方位支持写在最后 2024年10月22日&#xff0c;华为在…...

MATLAB实现蝙蝠算法(BA)

MATLAB实现蝙蝠算法(BA) 1.算法介绍 蝙蝠算法&#xff08;简称BA&#xff09;是一种受微型蝙蝠回声定位机制启发的群体智能算法&#xff0c;由Xin-She Yang于2010年提出。这种算法模拟了微型蝙蝠通过向周围环境发出声音并监听回声来识别猎物、避开障碍物以及追踪巢穴的行为。…...

WPF使用Prism框架首页界面

1. 首先确保已经下载了NuGet包MaterialDesignThemes 2.我们通过包的项目URL可以跳转到Github上查看源码 3.找到首页所在的代码位置 4.将代码复制下来&#xff0c;删除掉自己不需要的东西&#xff0c;最终如下 <materialDesign:DialogHostDialogTheme"Inherit"Ide…...

Linux中的软硬链接文件详解

概述 在Linux文件系统中&#xff0c;软连接&#xff08;Symbolic Link&#xff09;和硬连接&#xff08;Hard Link&#xff09;是两种重要的文件链接方式。它们都可以创建指向相同文件内容的多个“链接”&#xff0c;但在实现方式和特性上有所不同。 1. 硬连接&#xff08;Ha…...

「Mac畅玩鸿蒙与硬件18」鸿蒙UI组件篇8 - 高级动画效果与缓动控制

高级动画可以显著提升用户体验&#xff0c;为应用界面带来更流畅的视觉效果。本篇将深入介绍鸿蒙框架的高级动画&#xff0c;包括弹性动画、透明度渐变和旋转缩放组合动画等示例。 关键词 高级动画弹性缓动自动动画缓动曲线 一、Animation 组件的高级缓动曲线 缓动曲线&#…...

pgsql数据量大之后可能遇到的问题

当 PostgreSQL 数据量增大时&#xff0c;可能会遇到以下问题&#xff1a; 查询性能下降&#xff1a;随着数据量的增加&#xff0c;查询可能会变得缓慢&#xff0c;尤其是在没有适当索引的情况下。大量的数据意味着更多的行需要被扫描和过滤&#xff0c;这会显著增加查询执行时间…...

Android 解决MTK相机前摄镜像问题

很莫名其妙的&#xff0c;前摄默认镜像&#xff0c;原来是为了前摄拍字体正确显示&#xff0c;比如自拍&#xff0c;前摄拍摄的人像虽左右镜像了&#xff0c;但如果后面有字牌显示&#xff0c;字体会显示正常而不是翻转。但现在需求是满足普遍的前摄原生代码不带镜像修改&#…...

在 Oracle 数据库中,SERVICE_NAME 和 SERVICE_NAMES 有什么区别?

在 Oracle 数据库中&#xff0c;SERVICE_NAME 和 SERVICE_NAMES 是两个相关的但略有不同的概念。它们都用于标识数据库服务&#xff0c;但使用场景和作用有所不同。下面详细解释这两个概念的区别&#xff1a; SERVICE_NAME 1. 定义&#xff1a; SERVICE_NAME 是一个单一的、…...

【Maven】——基础入门,插件安装、配置和简单使用,Maven如何设置国内源

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 引入&#xff1a; 一&#xff1a;Maven插件的安装 1&#xff1a;环境准备 2&#xff1a;创建项目 二…...

AIGC时代LaTeX排版的应用、技巧与未来展望

文章目录 一、LaTeX简介与基础设置二、常用特殊符号与公式排版三、图片与表格的插入与排版四、自动编号与交叉引用五、自定义命令与样式六、LaTeX在AIGC时代的应用与挑战七、LaTeX的未来展望《LaTeX 入门实战》内容简介作者简介目录前言/序言读者对象本书内容充分利用本书 在AI…...

二叉树的深搜

前言&#xff1a; 本章节更深入学习递归 计算布尔二叉树的值 思路&#xff1a; 1.函数头设计&#xff1a;dfs&#xff08;root&#xff09; 2.函数体&#xff1a;需要一个接收left 和 right 的值 并且根据root的值进行比较 3.递归出口&#xff1a;很明显 当为叶子节点的时候…...

JUC笔记之ReentrantLock

ReentrantLock 相对于synchronized它具备如下特点 可中断 可以设置超时时间 可以设置为公平锁 支持多个条件变量(多个wait set,不同于synchronized的wait set,ReentrantLock的wait set在同一条件下notify才能唤醒WATING状态的线程) 与synchronized一样,都支持可重入 …...

【含文档】基于ssm+jsp的图书管理系统(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: apache tomcat 主要技术: Java,Spring,SpringMvc,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定义了两个…...

pytorch知识蒸馏测试

import torch from torch import nn,optim import torch.utils import torch.utils.data import torch.utils.data.dataloader from torchvision import transforms,datasets...

mutable用法

mutable 关键字用于允许类的某个成员变量在 const 成员函数中被修改。通常&#xff0c;const 成员函数不能改变对象的任何成员变量&#xff0c;但将成员变量声明为 mutable 可以例外 class Hero { public:Hero():m_Hp(0), m_getHpCounter(0){}int getHp() const {m_getHpCounte…...

SQL语言基础

SQL(Struct Query Language)是结构化查询语言的简称&#xff0c;是一种在关系型数据库中定义和操纵数据的标准语言。 不要使用面向对象的思想学习SQL&#xff0c;因为它不是面向对象的语言目标 SQL语言简介(了解)从数据库数据检索数据(重点)子查询(重点)Oracle常用函数(掌握) …...

在USB电源测试中如何降低测试成本?-纳米软件

USB 电源模块在现代电子设备中广泛应用&#xff0c;其性能的稳定性和可靠性至关重要。然而&#xff0c;测试 USB 电源模块的成本可能会很高&#xff0c;这对于企业和研发机构来说是一个重要的问题。因此&#xff0c;寻找降低 USB 电源模块测试成本的方法具有重要的现实意义。 降…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...

Ubuntu系统多网卡多相机IP设置方法

目录 1、硬件情况 2、如何设置网卡和相机IP 2.1 万兆网卡连接交换机&#xff0c;交换机再连相机 2.1.1 网卡设置 2.1.2 相机设置 2.3 万兆网卡直连相机 1、硬件情况 2个网卡n个相机 电脑系统信息&#xff0c;系统版本&#xff1a;Ubuntu22.04.5 LTS&#xff1b;内核版本…...

消息队列系统设计与实践全解析

文章目录 &#x1f680; 消息队列系统设计与实践全解析&#x1f50d; 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡&#x1f4a1; 权衡决策框架 1.3 运维复杂度评估&#x1f527; 运维成本降低策略 &#x1f3d7;️ 二、典型架构设计2.1 分布式事务最终一致…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理

在城市的某个角落&#xff0c;一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延&#xff0c;滚滚浓烟弥漫开来&#xff0c;周围群众的生命财产安全受到严重威胁。就在这千钧一发之际&#xff0c;消防救援队伍迅速行动&#xff0c;而豪越科技消防一体化安全管控平台构建的消防“…...