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里了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/906175.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

强大的接口测试可视化工具:Postman Flows

Postman Flows是一种接口测试可视化工具,可以使用流的形式在Postman工作台将请求接口、数据处理和创建实际流程整合到一起。如下图所示 Postman Flows是以API为中心的可视化应用程序开发界面。它提供了一个无限的画布用于编排和串连API,数据可视化来显示…

JavaScript 实战技巧:让你成为前端高手的必备知识3(进阶版)

一、DOM概述 (一)DOM操作 是指使用‌JavaScript操作文档对象模型(Document Object Model)的过程。‌文档对象模型是一种表示网页文档结构的方式,它将整个网页文档表示为一个树形结构,每个元素都是一个节点…

Python 网络爬虫教程:从入门到高级的全面指南

Python 网络爬虫教程:从入门到高级的全面指南 引言 在信息爆炸的时代,网络爬虫(Web Scraping)成为了获取数据的重要工具。Python 以其简单易用的特性,成为了网络爬虫开发的首选语言。本文将详细介绍如何使用 Python …

【抖音】a_bogus参数逆向分析

抖音回复评论: 点击——展开xxx条回复﹀就会出现 https://www.douyin.com/aweme/v1/web/comment/list/reply 直接搜又搜不到 分析调用堆栈 可以看到这个栈是有请求相关的数据的 上面一个栈 所以就是在bdms.js里面生成的 就在这里打上日志断点:“T…

基于SpringBoot的宠物健康咨询系统的设计与实现

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,宠物健康知识信息因为其管理内容繁杂,管理数量繁多导致手工进行处理不…

基于大语言模型(LLM)自主Agent 智能体综述

近年来,LLM(Large Language Model)取得了显著成功,并显示出了达到人类智能的巨大潜力。基于这种能力,使用LLM作为中央控制器来构建自助Agent,以获得类人决策能力。 Autonomous agents 又被称为智能体、Agent。指能够通过感知周围环境、进行规划以及执行动作来完成既定任务。…

jmeter脚本-请求体设置变量and请求体太长的处理

目录 1、查询接口 1.1 准备组织列表的TXT文件,如下: 1.2 添加 CSV数据文件设置 ,如下: 1.3 接口请求体设置变量,如下: 2、创建接口 2.1 见1.1 2.2 见1.2 2.3 准备创建接口的请求体TXT文件&#xff…

elasticsearch 8.x 插件安装(六)之Hanlp插件

elasticsearch 8.x 插件安装(六)之Hanlp插件 elasticsearch插件安装合集 elasticsearch插件安装(一)之ik分词器安装(含MySQL更新) elasticsearch 8.x插件(二)之同义词安装如何解决…

2024Python安装与配置IDE汉化教程

【一】Python解释器下载【运行环境】 【1】Python官网 [https://www.python.org](官网进不去的可以点击点击领取,100%免费!安装包) 包含编程资料、学习路线图、源代码、软件安装包等!【[点击这里]】! 【…

华为自研仓颉编程语言官网上线 首个公测版本开放下载

仓颉编程语言官网正式公开上线,同时首个公测版本开放下载。本次仓颉编程语言官网上线了首页、在线体验、文档、学习、下载、动态以及三方库共六个模块,可供开发和学习和体验。 据悉,仓颉编程语言是在今年6月的华为开发者大会上正式公布&…

论文翻译 | PROMPTAGATOR : FEW-SHOT DENSE RETRIEVAL FROM 8 EXAMPLES

摘要 最近的信息检索研究主要集中在如何从一个任务(通常有丰富的监督数据)转移到其他各种监督有限的任务上,其隐含的假设是从一个任务可以泛化到所有其他任务。然而,这忽略了这样一个事实,即存在许多多样化和独特的检索…

Virtuoso使用layout绘制版图、使用Calibre验证DRC、LVS、PEX抽取RC

1 绘制版图 1.1 进入Layout XL 绘制好Schmatic后,在原理图界面点击Launch,点击Layout XL进入版图绘制界面。 1.2 导入元件 1、在Layout XL界面左下角找到Generate All from Source。 2、在Generate Layout界面,选中“Instance”&#…

微信小程序服务通知

项目中用到了小程序的服务消息通知,通知订单状态信息,下边就是整理的一下代码,放到项目中,把项目的小程序appid和小程序的secret写进去,直接运行即可 提前申请好小程序服务信息通知短信模板,代码需要用到模…

QT(图表)

目录 QChart的继承关系 基本组件和概念 常见图表类型及其系列类 常用的图表配置 一、折线图示例 二、柱状图示例 三、饼图示例 四、类波形图(折线图)示例 QChart 模块提供了直观的图表绘制接口,支持创建各种常见的图表类型&#xff0…

day13:FTP服务

一,FTP概述 概述 FTP(File Transfer Protocol,文件传输协议)是用于在计算机之间传输文件的协议。它工作在网络的应用层,通过 TCP 协议进行数据传输,默认端口号为 21(命令端口,另外…

2024年末Meme币市场分析:最后两个月的走势预测

进入2024年最后的两个月,Meme币市场正面临复杂的内外部环境,行情波动增大,许多投资者希望对年底走势做出预测,以便更好地调整投资策略。在这篇文章中,我们将从市场情绪、监管政策、技术创新和宏观经济等几个关键因素出…

ssm+vue657基于spring和vue开发的web新闻流媒体平台

博主介绍:专注于Java(springboot ssm 等开发框架) vue .net php phython node.js uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不…

家电智能屏方案新选择,乐鑫SoC高集成触控语音控制,启明云端乐鑫代理商

随着科技的飞速发展,智能家居系统正逐渐成为现代生活的一部分。在这一变革中,LCD屏幕作为人机交互的核心界面,扮演着至关重要的角色。 它们不仅提供实时信息的展示,还支持丰富的交互式体验,使得家庭管理变得更加直观和…

ceph补充介绍

SDS-ceph ceph介绍 crushmap 1、crush算法通过计算数据存储位置来确定如何存储和检索,授权客户端直接连接osd 2、对象通过算法被切分成数据片,分布在不同的osd上 3、提供很多种的bucket,最小的节点是osd # 结构 osd (or device) host #主…

(六)Python结构数据类型

一、集合类型(Sets) Sets(集合)是一个无序不重复的元素集。主要功能是自动清除重复的元素。创建集合时使用大括号{}包含其中元素。 Food{西瓜,南瓜,冬瓜,北瓜} print(Food) 输出结果: 增加重复元素,则会…