【汇编笔记】初识汇编-内存读写

汇编语言的由来:

CPU是计算机的核心,由于计算机只认识二进制,所以CPU执行的指令是二进制。

我们要想让CPU工作,就得给他提供它认识的指令,这一系列的指令的集合,称之为指令集。

指令集:

不同的体系的CPU使用的是不同的指令集,常见的有intel、AMD的X86结构CPU使用的是X86/X64指令集,ARM结构CPU使用的是ARM指令集。

汇编指令和机器指令的差别在于指令的表示方法上,汇编指令与机器指令是一一对应的。
理解CPU工作方式:

CPU整体的工作分为3类:

  1. 读取指令
  2. 指令译码
  3. 执行单元(计算、读写内存、设置寄存器、跳转)

读取指令、内存读写都需要CPU控制其他硬件,比如:内存、显卡等

指令格式:

指令由操作码和操作数两部分组成。

操作数是指令执行的参与者,分三种

寄存器、内存地址、立即数

例如:

MOV EAX,0X123

MOV 操作码,目的操作数,源操作数

寄存器:

CPU不仅仅只能进行运行,它还有许多存储器,具有存储功能,可以存储一些diam运行时 的临时信息,他们被称为寄存器。

32位通用寄存器:

4个数据寄存器(EAX、EBX、ECX和EDX)

2个变址和指针寄存器(ESI和EDI)

2个指针寄存器(ESP和EBP)

打开OD工具 随便打开一个exe文件

查看右则寄存器窗口

EIP 表示程序该执行哪一行

对应左侧被标记的地址

操作八个通用寄存器

双击地址后的汇编代码 编辑

修改后 点击步过按钮 或 按F8执行

寄存器的值被修改

被标记的地址进入下一行

EIP同步

内存读写

其他寄存器

只有AX、CX、DC、BX相当于32位的砍一半

再砍一半分为8位的 前一半AH、后一半AL

演示:

初始值

后半变成5555

5555的前一半变成22

5555的后一半变成33

注意编辑时取消保持大小复选框

取寄存器的值

内存大小

BYTE 一字节

WORD 两字节

DWORD四字节

读内存地址的值给寄存器

生成的汇编

PTR表示数据段

执行结果(右下角可看到内存地址的数值)

读取两个字节

写内存 演示

不能全部都是内存地址

直接插入数值 演示


相关推荐
Thanks_ks19 小时前
计算机组成原理核心剖析:CPU、存储、I/O 与总线系统全解
计算机组成原理·计算机技术·存储系统·cpu 结构·i/o 设备·总线系统·硬件原理
染指11101 天前
35.x64汇编写法(二)
汇编·windows·x64游戏·x64汇编·游戏攻防
Jacen.L2 天前
逆向工程开篇(连载中)
汇编
薛定谔的猫_C8T63 天前
程序人生-Hello’s P2P
c语言·汇编·程序人生·shell·二进制·计算机系统·hello
God_archer3 天前
程序人生-hello’s P2P
linux·c语言·汇编·程序人生
南玖yy3 天前
x86 汇编逻辑运算全解析:从【位操作】到实际应用(AND,OR,NOT,XOR,TEST)
开发语言·汇编·arm开发·后端·架构·策略模式
apcipot_rain3 天前
【计算机组成原理 第5版】白、戴编著 第三章多层次的存储器 题型总结2 cache部分
缓存·计算机组成原理
南玖yy3 天前
深入理解 x86 汇编中的重复前缀:REP、REPZ/REPE、REPNZ/REPNE(进阶详解版)
开发语言·网络·汇编·后端·算法·bochs
Jacen.L3 天前
四、函数调用包含单个参数之Double类型-mmword,movsd,mulsd,addsd指令,总结汇编的数据类型
汇编
网安INF4 天前
深入理解汇编语言中的顺序与分支结构
开发语言·汇编·编程