逆向基础--汇编语言介绍(003)

news/2025/10/31 22:31:19/文章来源:https://www.cnblogs.com/MrHSR/p/19178120

逆向基础--汇编语言介绍(003)

一.前言

  汇编语言是直接工作在硬件上的一门编程语言,是除了机器语言外的最低层的编程语言了,学习汇编可以帮助我们更加深入的了解cpu,内存等硬件的工作原理。

  汇编语言和机器语言一般都是一 一对应的,被编译成机器语言后,程序执行的效率更高。

  对于从事嵌入式行业相关的人员来讲,学习汇编语言可以写出效率更高的程序。并不要求用汇编进行大型程序开发,能够看懂一些常用的汇编代码即可。

  由于机器语言(0和1)难以辨别和记忆,人们发明了另一种方法来进行程序编写,这种方法也就是汇编语言。汇编语言的主体是汇编指令,相对于机器语言来说,汇编指令在记忆上有了极大的改善,不同于机器码,汇编采用的是机器指令便于记忆的格式。

  例如:机器指令1000100111011000表示把寄存器BX的内容送到AX中。而汇编指令则为:mov ax, bx (把bx内容放到ax中)。其中mov就是一个汇编指令。在x86架构的CPU中,指令 1000100111011000(可以写成十六进制 89 D8)的含义是“将寄存器BX的值传送到寄存器AX”, 其中100010 操作码表示这是一个 MOV 操作。

  汇编指令直接输入到计算机中是不能识别的,需要编译器将汇编指令转换为机器指令。

  汇编语言有三种指令:

    1)汇编指令:机器码的助记符,有对应的机器码

    2)伪指令:对有对应的机器码,由编译器执行,计算机并不执行

    3)其它符号:如+ - * / 等,由编译器识别,计算机并不执行

  汇编语言不区分大小写,MOV AX, BX等于mov ax, bx

  通常后缀为B(Binary)表示二进制,H(hex)表示十六进制,D(Decimal)表示十进制

 

二.寄存器  

  在学习汇编过程中,经常需要操作寄存器,下面讲下寄存器的概念

  一个典型的CPU由:运算器、控制器、寄存器等器件组成,这些器件靠内部总线连接,内部总线实现CPU内部各个器件之间的联系,而CPU与外设(主板上的其它器件)之间的联系则由外部总线连接。

   简单来说,在CPU中:

    1)运算器进行信息处理

    2)寄存器进行信息存储

    3)控制器控制各种器件进行工作

    4)内部总线连接各种器件,在它们之间进行数据传送

image

  寄存器主要用来存储指令和数据,对于一个汇编程序员来说,CPU的主要部件是寄存器。 

  程序员通过改变寄存器中的内容实现对CPU的控制,不同的CPU,寄存器的个数、结构是不同的,如下所示:

代表性 CPU  CPU位数 通用寄存器的宽度 单个通用寄存器容量(字节)
Intel 8080 8位 8位, 7个主要寄存器 1 字节,每个字节8位bit
Intel 8086/8088 16位 16位, 8个通用寄存器 2 字节
 Intel 80386 32位 32位, 8个通用寄存器 4 字节
AMD Opteron 64位 64位, 16个通用寄存器 8 字节

  通用的寄存器包括:AX、BX、CX、DX,

  8086CPU所有的寄存器都是16位,可以存放2个字节,上面这四个寄存器通常用来存放一般性的数据,称为通用寄存器。 

  8086CPU下AX寄存器有16位,如下所示:

image

  8086CPU为了兼容上一代8位寄存器,AX可以分为AH,AL;同理BX分为BH、BL;CX分为CH、CL ; DX分为DH,DL。 其中H代表high,  L代表low

  以AX为例,它拆分成两个独立的8位寄存器,其中AL寄存器为低8bit;AH寄存器为高8bit。AH与AL都是可以独立使用的寄存器,表示如下:

image

   思考:mov ah 78H(已知该指令是将78H的数据传入ah寄存器中,是将十六进制数值: 78 传送到8位的AH 寄存器中),会影响AL的值吗?

     答:不会,AH与AL都是可以独立使用的寄存器.

 

  

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文档抽取技术的实现原理及其在法律行业的应用价值分析

想象一位律师,面对堆积如山的案卷:数千页的交易合同、错综复杂的证据材料、浩如烟海的裁判文书。他必须从中精准找出关键条款、锁定矛盾陈述、串联案件事实。这曾是法律工作的常态,耗时耗力且充满疏漏风险。而今,文…

【算法导论】2分治法

【算法导论】2分治法二分查找 using System;class BinarySearch {// 分治法实现二分查找public static int Search(int[] arr, int target, int left, int right){// 基本情况:查找范围为空if (left > right)retur…

c++写得多不如写得少,同样的逻辑写的多报错逆天

#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<cmath> #include<algorithm> #include<vector> #include<map> #include<uno…

整理数学数据结构

#include<bits/stdc++.h>using namespace std;const int N = 1e5 + 5;//树 struct tree{int to[N << 1], nxt[N << 1], hd[N], idx, w[N << 1];void add(int u, int v, int val) { to[++ idx]…

viewerjs+vue3 using typescript

安装包npm install v-viewer viewerjs npm i fontawesome-4.7 npm install @fortawesome/fontawesome-svg-core npm install @fortawesome/free-solid-svg-icons npm install @fortawesome/vue-fontawesome@prerelease…

题解:B4207 [常州市赛 2021] 战士

题解:B4207 [常州市赛 2021] 战士 前言 题目传送门 思路讲解 思路其实很好想,因为怪物的攻击是固定的,所以战士的死亡时间也是固定的,我们就需要通过计算战士每次死亡前能造成的最大伤害如果可以击败怪物,那就直接…

最小二乘问题详解7:正则化最小二乘

本文系统阐述了正则化最小二乘(岭估计)的动机、理论推导、求解方法与数值实例,揭示其通过L2惩罚项改善病态问题和过拟合的机制。1. 引言 在之前的文章《最小二乘问题详解4:非线性最小二乘》、《最小二乘问题详解5:…

什么是重组蛋白?

重组蛋白的定义与基本概念 重组蛋白是指通过基因工程技术,将外源基因导入宿主细胞,利用细胞的生物合成系统表达产生的蛋白质分子。这项技术的核心在于基因重组,即通过人工手段将编码目标蛋白的DNA序列插入表达载体,…

Day9文字颜色

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0">…

代码大全2{3}

高质量代码要易理解、易扩展。书中关于类设计、接口定义的原则,结合具体示例讲解如何降低代码耦合度,逻辑清晰且实用性强。“单一职责原则” 避免 “万能类 / 函数”带来的问题,划分职责界限,比如一个 “用户管理”…

work3

这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/gjyycx 这个作业要求在哪里: https://edu.cnblogs.com/campus/fzu/gjyycx/homework/13574 学号:102500331 姓名:余武 一.书本第4章4.8编程练习题目中的第…

25.10.31

AGC001D 很早之前看到一度怀疑是错题,然后今天发现我看错题了,原来是说这个序列只包含一种元素啊…… 一个 \(l\) 长的回文串定下了 \(\frac{l}{2}\) 的等价关系,可以视作连边,于是转化出图论模型。 考虑无解是为什…

关于计数

随时施工( 不欢迎来看感觉必须开一个记录计数trick的专栏了,md计数题的式子太e心了(((((

游记2

等出分了,进NOIP了写。

JSON Web Token安全漏洞实战:无需确认令牌验证邮箱与密码重置

本文详细介绍了如何通过篡改JSON Web Token实现邮箱验证绕过、密码重置和账户接管,包含具体的技术操作步骤和漏洞利用方法,展示了JWT在未正确验证签名时的安全风险。玩转JSON Web Token:乐趣与收益并存 大家好,希望…

软考-关于《网络安全法》修订相关题目(10道)

根据2025年10月28日通过的《网络安全法》修改决定,该修正案将于何时正式施行?A. 2025年11月1日 B. 2025年12月1日 C. 2026年1月1日 D. 2026年3月1日 答案:C 解析:文章明确指出"自2026年1月1日起施行"。新…

【算法初步】1插入排序

【算法初步】1插入排序using System;class InsertionSortExample {static void Main(){// 测试数组int[] array = { 12, 11, 13, 5, 6 };Console.WriteLine("排序前的数组:");PrintArray(array);// 执行插入…

WebRTC实时音视频通信核心原理

寻常的WebSocket流程是这样的如果都与服务器进行交流,会造成服务器压力大,通讯时间长,实时效果不好,那么怎么解决? 这就要用到我们接下来讲的WebRTC实时通讯 拿出笔记本,让我们开冲!! 概念 WebRTC(Web Real-Ti…

Python高阶和匿名函数 _ 脱了马甲也要认识

Python高阶和匿名函数 _ 脱了马甲也要认识def calculate_and_print(num, calculator, formatter): result = calculator(num) formatter(num, result)def print_with_vertical_bar(num, result): print(f&quo…

第11天(中等题 滑动窗口)

打卡第十一天 1道简单题+2道中等题越短越合法型滑动窗口: 实例由于子数组越长,乘积越大,越不能满足题目要求;反之,子数组越短,乘积越小,越能满足题目要求。有这种性质的题目,可以用滑动窗口解决。内层循环结束后…