前言:

本文内容:内存的理解、结语

推荐免费计算机底层入门讲解视频:【狂神说】最通俗易懂的计算机底层教学,二进制到汇编学习!_哔哩哔哩bilibili

内存的理解

寄存器小,不够用,所以数据放到内存中!(内存条)

每个应用程序都有4G的内存空间,空头支票。

4NDw36

程序真正运行的时候,才会用到物理内存。

1b=8bit

1Kb=1024b

1Mb=1024Kb

1Gb=1024Mb

4G的内存,4096->最终计算为位,就是可以存储的最大容量。

计算机中内存地址很多,空间很大。

内存地址

存一个数:占用的大小,数据宽度!存到哪里?

计算机内存地址很多,空间很大,每个空间分配一个地址,名字。(32位 8个 16进制的值)

32位:寻址能力!4GB

1
FFFFFFFF+1 =100000000

位是如何限制内存大小的。

1
2
3
100000000 内存地址*8 =位:800000000
转位10进制/8: 4,967,296
按规则/1024,最后就是4GB

64位:

每个内存地址都有一个编号,可以通过编号来存值。

4NrszV

内存如何存值?

  • 数据宽度:byte word dword

  • 地址的位置 0xFFFFFFF

  • 不是任意的地址都可以写值的,申请使用,程序申请过的内存地址才能使用。

    1
    2
    3
    4
    5
    6
    #汇编如何向内存写值
    mov 数据宽度 内存地址 值
    mov (byte/word/dword/qword)
    #写法举例:
    mov byte ptr ds:[0x19FF90],1
    #注意传值大小,一定要与数据宽度相等

    4Ns1w4

内存地址有多种写法

1
2
3
4
5
6
7
8
9
10
# 内存地址偏移
ds:[0x19FF70+4]
# 寄存器
ds:[eax]
# 寄存器偏移
ds:[eax+4]
# 数组[]
ds:[reg+reg*{1,2,4,8}]
# 偏移
ds:[reg+reg*{1,2,4,8}+4]

结语

努力的你一定绽放光芒!