汇编—内存

2.内存

寄存器和内存有什么区别呢?

​ 计算器也有算的快的和算的慢的,那么,计算速度快的叫做寄存器,计算速度慢的叫做内存。它们的结构差不多,都是定宽。但是寄存器由于速度快,所以价格贵,那么在CPU内部,寄存器的数量就会非常有限,只有8个,所以我们可以命名。然而内存速度慢,便宜,所以数量比较多,那么久没必要取名字了,所以只能取个编号。内存中寄存器的编号是32位的。

ds:[个数],表示内存单元。
ptr指的是指针point
word是两个字节
byte是一个字节
dword是四个字节

如:dword/word/byte ptr ds:[32位的数]。[]里面不仅仅可以写一个具体的数,还可以写某一个寄存器的值。

第一个寄存器叫做BASE寄存器(8个寄存器都可以),第二个寄存器是INDEX也是8个寄存器之一。后面乘一个数scale(2的次幂),后面再加一个数(DISP)

BASE+INDEX(1,2,4,8)+DISP

可以有5种组合

BASE
INDEX*(1,2,4,8)
DISP
BASE+INDEX×(1,2,4,8)
BASE+INDEX×(1,2,4,8)+DISP

cpu 实现了将地址赋给寄存器:LEA 指令把方括号里面内存的编号给目标寄存器:load
effective address。

​ 当一个值不好确定宽度时,使用 dword ptr 或者 word ptr,byte ptr,源可以是
内存或寄存器,也可以是立即数,但是目标不能是立即数。两方都可以是内存,但是内存只能在一个地方出现。两边的数据宽度要一样。所以指令是由操作码和操作数组成,操作码是表明我想干什么。复杂的指令也是由简单的指令组合而成。

内存地址的用处是什么?

​ 当用户运行程序时,cpu 需要不停地去从存储区取代码和数据,这样非常耗时,于是
cpu 先将可能用到的代码和数据从存储区全部放入内存,再从内存中取数据和代码。看似多了一个过程,但是从内存中获取比存储区快得多,所以节省了很多时间。

内存地址的表示方法有哪些?

​ 内存地址的表示方法有很多,除了上图中的表示方法外,还有其他四种表示方法。
​ 以下是内存地址表示方法的组成成员:
·位移(Displacement) - 8 位、16 位或 32 位值
·基(Base) - 通用目的寄存器
·索引(Index) - 除 ESP 外的通用目的寄存器
·比例因子(Scale Factor) - 1,2,4 或 8
​ 下列五种地址模式为常用组合:
·位移
·基
·基 + 位移
·(索引×比例因子)+ 位移
·基 + (索引×比例因子)+ 位移

内存的通用格式:reg+reg*数+立即数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值