zoukankan      html  css  js  c++  java
  • 汇编系列10-内存

     前面我们学了寄存器,它本身就是用来存储数据的。寄存器是位于CPU当中的,无论是16位,32位还是64位,他的寄存器数量都是非常有限的。 如果要存储较多数据,仅靠CPU里面的寄存器是不够的。 我们可以把数据存放在内存当中。

    我们编程时提到的内存,指的是每个进程的虚拟的4GB内存。映射到实际的物理内存。物理内存到内存条还有一层映射。

    所谓4GB,由内存地址数据宽度决定的(寻址能力,寻址宽度),(2^32 +1)/1024/1024/1024= 4GB  1byte = 8 bit; 1kb= 1024b;1Mb= 1024kb;1Gb=1024Mb。

     

     内存格式写法:  mov  内存数据宽度(byte  word dword) ptr ds:[内存编号],要移入内存的东西(立即数,寄存器)

    注意:内存编号,不可以随便乱写,虽然说是每个进程有4G虚拟内存空间,但是不能随便乱用(可能应用程序禁止你使用这块地址)。使用之前要先申请才可以。

    如何知道是否申请了?---使用堆栈区出现的内存地址。

    使用move指令移动数据时,要保持两边数据宽度一致。

    汇编中绝大部分的指令,是不允许从内存到内存的。

    实验--执行前:

     执行后:

  • 相关阅读:
    MYsql 主从复制
    linux下修改apache,nginx服务端口号
    nginx的安装
    oracle启动流程
    openfire源码编译后部署到linux
    openfire重新配置数据库oracle、mysql
    spark安装和登陆配置
    Linux下安装Openfire 4.2.1
    mac toad下建表问题
    linux 下使用exp/imp 或者expdp/impdp导出导入oracle数据表数据
  • 原文地址:https://www.cnblogs.com/RevelationTruth/p/13908543.html
Copyright © 2011-2022 走看看