[狂神说]汇编语言笔记 寄存器、内存的理解

通用寄存器

寄存器:

存储数据:CPU > 内存 > 硬盘

32位 CPU 8 16 32

64位 CPU 8 16 32 64
通用寄存器,可以存储任意的东西

32位的寄存器只有8个

 

存值的范围:0 ~ FFFFFFFF

对于二进制来说,直接修改值

计算机如何像寄存器存值。

mov指令
 

mov  存的地址,存的数
mov  存的地址1,存的地址1

可以将数字写入寄存器,可以将寄存器中的值写到寄存器。

计算机的本质:计算力!

不同的寄存器
 

FFFFFFFF    FFFF       FF
  32位       16位       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

 8位:L低8位,H高8位

除了这些通用寄存器之外,那么其他的寄存器每一位都有自己特定的功能!
 


内存

寄存器很小,不够用。所以说,数据放到内存!

平时买的内存条!

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

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

1B = 8bit

1KB = 1024B

1MB = 1024KB

1GB = 1024MB

4G的内存,4096M => 最终计算单位为位,就是这个可以存储的最大容量的。

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

内存地址

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

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

这些给内存起的编号,就是我们的内存地址。32位 8个16进制的值。

32位:寻址能力!4GB。
FFFFFFFF+1=100000000 最大的值
位是怎么限制内存大小的。
100000000 内存地址*8=位:800000000
转换为十进制/8:4,294,967,296字节
按照规则/1024,最终发现就是4GB!

64位:寻址能力!绰绰有余。

所以每个内存地址都有一个编号!可以通过这个编号向里面存值!

指针 =>内存

内存如何存值?

数据宽度:byte word dword

地址的位置:0xFFFFFFFF

不是任意的地址都可以写东西的,申请使用的。只有程序申请过的内存,我们才可以使用。

汇编如何向内存中写值。
mov 数据宽度 内存地址,1

mov byte/word/dword/qword,1
mov byte ptr ds:[0x19FF70],1

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


内存地址有多种写法

ds:[0x19FF70+4] 内存地址偏移

ds:[eax] 寄存器

ds:[eax+4] 寄存器偏移

数组[]

ds:[reg+reg*{1,2,4,8}]

ds:[reg+reg*{1,2,4,8}+4] 偏移

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值