【汇编先导】-- 2

汇编先导

6. 寄存器

  • 存储数据:CPU > 内存 > 硬盘(固态、机械)

CPU还可分为:

  1. 32位CPU 8 16 32

  2. 64位CPU 8 16 32 64(增加了寻址能力)

  • 通用寄存器
shell 复制代码
# 32位的通用寄存器只有8个
# 可以在任意软件的底层看到
# 通用寄存器可以存储任何值

存值的范围:0~FFFFFFFF

计算机如何向寄存器中存值呢?对于二进制来说,直接在对应的内存地址修改值即可。

  • mov指令:
shell 复制代码
mov 存的地址 存的值
mov 存的地址1 存的地址2

mov指令:可以将数值写入寄存器;将寄存器中的数值写到寄存器

  • 计算机中不同的寄存器:
shell 复制代码
8个F		4个F		2个F 	# 1个F即4个1,1111
32位		16位		8位(L代表低8位,H代表高8位)
EAX		 AX		  AL
ECX		 CX		  CL
EDX		 DX		  DL
EBX		 BX		  BL
ESP 	 SP		  AH
ENP		 NP		  CH
ESI		 SI		  DH
EDI		 DI		  BH

除了上述这些通用寄存器之外,计算机中还存在许多其他寄存器,每一位都有其相应的特定功能!

7. 内存

寄存器相对来说比较小,故需用到内存来存放数据。

每个应用程序都有4GB的内存空间,但实际上这只是一种"空头支票"的说法,程序在真正运行时才会用到物理内存。

1B = 8 bit

1 KB = 1024 B

1 MB = 1024 KB

1 GB = 1024 MB

所以4G的内存,最终计算为位可存储的最大容量约有三百多亿位的空间,即计算机中内存地址很多。

  • 内存地址

计算机中内存地址很多,空间很大,需要给每个空间分配一个地址,名字

上图所示给内存起的编号,就是所谓的内存地址。--> 由32位 即8个16进制的值构成

这里的32位代表了寻址能力!FFFFFFFF

  • 内存如何存值?

数据宽度:byte word dword

地址位置:0xFFFFFFFF(注意并非任意地址都可以进行存值,只有程序申请过的内存地址才可以使用)

shell 复制代码
# 汇编如何向内存中写值
mov 数据宽度 内存地址, 1

mov byte ptr ds:[0x19FF70], 1

# 传递的值的大小一定要和数据宽度相等

此外,内存有多种写法。

shell 复制代码
ds:[0x19FF70+4]	# 内存地址偏移
ds:[eax]	# 寄存器
ds:[eax+4]	# 寄存器偏移

相关推荐
叼烟扛炮10 分钟前
Linux 学习笔记(四十一):TCP 并发演进——从单进程到多线程服务器
linux·运维·服务器·网络·笔记·学习·tcp/ip
叼烟扛炮34 分钟前
Linux 学习笔记(四十三):网络编程进阶——自定义协议解决 TCP 粘包与守护进程
linux·开发语言·网络·笔记·tcp/ip
songyuc1 小时前
【Manskill3】TableSceneBuilder学习笔记
pytorch·笔记·学习
LMT流氓兔1 小时前
第五单元——第十六课:给书店助手加上网页界面
java·开发语言·jvm·人工智能·oracle·langchain·1024程序员节
wangbing11253 小时前
平台介绍-modbus设备调试
java
西索斯coding3 小时前
gpt-image-2.5-sunburst 和 gemini-3.1-flash-image 差多少?60 组项目素材的成功成本评测框架
java·linux·gpt·ai
゛凌乱的记忆づ3 小时前
好用的md文件编辑器——TyporaS与Typora
笔记·git·typora·markdown
zroooo4 小时前
计算机学习-知识庞大而繁杂
笔记·学习
wuminyu4 小时前
Java字节码学习总结:字节码如何加载、解析和执行
java·linux·c语言·jvm·c++
坤坤子吖4 小时前
算法学习——单调队列
开发语言·c++·笔记·学习·算法