1、每个应用进程都会有自己独立的4GB内存空间

这句话很多人听起来可能会很矛盾很不解。

例如,我的电脑只有2GB的内存,打开个软件机会占用4GB内存,而我的电脑内存只有2GB,显然不够用,但是为什么程序还能在我的电脑上流畅运行呢?因为程序占用的这4GB内存是一个空头支票,知识口头上说给你4GB内存,其实没有全部给你,而是你用到多少就会从物理内存中给你多少。

2、内存地址

内存地址不像寄存器那样只有几个,内存地址有非常多所以起名字的时候都是用编号,每块内存地址都有其唯一的编号,就像寄信的地址一样,我们灭此用到这块内存时都会根据它的地址去寻找这块内存。

每个编号(内存地址)对应的内存块的容量最少是8位,一个字节。

一个内存地址有32位。像0x00000000,是由8个16进制的数组成,1个16进制的数对应着4个2进制的位,所以4x8=32,一个内存地址有32位。

我们来算一下32位的内存空间有多大:

内存地址一共有多少个(包括0x00000000)  FFFFFFFF+1=100000000

16进制内存空间:              800000000

换算成十进制 Bit:                34359738368

Byte:                    4294967296

KB:                    4194304

MB:                    4096

GB:                    4

现在你可以知道,32位的程序最大就是寻址空间就是4GB,所以每个程序占用4GB的内存空间。

向内存中存放数据

MOV  指令

mov指令移动数据时要保证左右两边的数据宽度是一样的。

绝大部分指令是不能把数据从内存移动到内存的。

(1)、立即数到内存

    mov byte ptr ds:[0146FCF4],1

   将立即数,写入内存地址为0146FCF4 的地方

  mov :指令

  byte:写入数字的大小(1个字节)   word:2个字节  dword:4个字节

  ptr ds:[] :写入内存的哪个地址

  1    :要写入的数据

(2)、寄存器到内存

   mov dword ptr ds:[0146FCFC],esp

  将esp寄存器里面的值写入内存地址为014FCFC的内存空间

(3)内存到寄存器

  mov esp,dword ptr ds:[0x0146FCF8]

  将内存中的值存入寄存器。

32位汇编基础_内存_每个应用进程都会有自己独立的4GB内存空间的更多相关文章

  1. 32位汇编基础_cpu 寄存器

    32位通用寄存器 EAX EBX ECX EDX EBP ESP ESI EDI 八个寄存器都可以作为普通的数据寄存器使用.但有的有特殊的用途: EAX    为累加器, ECX    为计数器, E ...

  2. 32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数

    32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数 (如果想看所有代码,请下载课堂资料,里面有所有代码,这里会讲解怎么生成一个窗口程序) 一丶32位汇编编写Windows窗口程序 首 ...

  3. 32位汇编第四讲,干货分享,汇编注入的实现,以及快速定位调用API的数量(OD查看)

    32位汇编第四讲,干货分享,汇编注入的实现,以及快速定位调用API的数量(OD查看) 昨天,大家可能都看了代码了,不知道昨天有没有在汇编代码的基础上,实现注入计算器. 如果没有,今天则会讲解,不过建议 ...

  4. 32位汇编第六讲,OllyDbg逆向植物大战僵尸,快速定位阳光基址

    32位汇编第六讲,OllyDbg逆向植物大战僵尸,快速定位阳光基址 一丶基址,随机基址的理解 首先,全局变量的地址,我们都知道是固定的,是在PE文件中有保存的 但是高版本有了随机基址,那么要怎么解决这 ...

  5. 32位汇编第一讲x86和8086的区别,以及OllyDbg调试器的使用

    32位汇编第一讲x86和8086的区别,以及OllyDbg调试器的使用 一丶32位(x86也称为80386)与8086(16位)汇编的区别 1.寄存器的改变 AX 变为 EAX  可以这样想,16位通 ...

  6. 32位汇编第三讲,RadAsm,IDE的配置和使用,以及汇编代码注入方式

    32位汇编第三讲,RadAsm,IDE的配置和使用,以及汇编代码注入方式 一丶RadAsm的配置和使用 用了怎么长时间的命令行方式,我们发现了几个问题 1.没有代码提醒功能 2.编写代码很慢,记不住各 ...

  7. GDB调试32位汇编堆栈分析

    GDB调试32位汇编堆栈分析 测试源代码 #include <stdio.h> int g(int x){ return x+5; } int f(int x){ return g(x)+ ...

  8. 20145314郑凯杰《信息安全系统设计基础》GDB调试32位汇编堆栈分析

    20145314郑凯杰<信息安全系统设计基础>GDB调试32位汇编堆栈分析 本篇博客将对第五周博客中的GDB调试32位汇编堆栈进行分析 首先放上以前环境配置的图: 图1: 测试代码: #i ...

  9. 64位gcc编译32位汇编

    由于使用as和ld来编译链接汇编程序,在使用C库的时候比较麻烦,需要输入比较多的指令,所以使用gcc进行编译链接.由于书中内容是32位汇编程序,但是机器使用的是64位操作系统,自带的gcc也是64位的 ...

随机推荐

  1. [SpringBoot] - 配置文件的多种形式及优先级

              学习两个注解: @PropertySource   @ImportResource  ↓   @ConfigurationProperties  与 @Bean 结合为属性赋值 与 ...

  2. Flask 3 程序的基本结构2

    NOTE 1.hello.py 通过修饰器的route方法添加动态路由: #!/usr/bin/env python from flask import Flask app = Flask(__nam ...

  3. 10_MySQL DQL_子查询(嵌套的select)

    #子查询/* 含义:出现在其他语句中的select语句,称为子查询(内查询)           内部嵌套其他select语句的查询,称为主查询(外查询) 特点: 1.子查询都会放在小括号内 2.单行 ...

  4. 设计点滴&css效果点滴

    走向设计师的第一步, 做一个自由的设计师. 优秀的移动端设计的:http://www.cnblogs.com/coding4/p/6842849.html 一些好的设计图片的收藏,一些好的设计理念,一 ...

  5. session放数据库里解决丢失的问题

    在编程里是会话的意思Session 对象存储特定用户会话所需的信息.这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去. ...

  6. 从零开始新建一个Maven 、springMVC工程

    相关代码:http://pan.baidu.com/s/1jIBUr1G 目标: 新建一个名为testSpringMvc的spring MVC工程,maven管理jar包: 1.新建maven管理的w ...

  7. JAVA模块以及未来(转)

    Java 9,OSGi以及模块化的未来 Java 9.OSGi以及模块化的未来(第二部分) Java 9终于要包含Jigsaw项目了

  8. sgu 142. Keyword 暴力,hash 难度:0

    142. Keyword time limit per test: 0.5 sec. memory limit per test: 16384 KB Kevin has invented a new ...

  9. fatal error: openssl/evp.h: 没有那个文件或目录

    在陆佳华<嵌入式系统软硬件协同设计实战指南 第2版>一书的第13章节 编译U-boot时会遇到2个错误.原因很简单,就从一开始的错误提示着手: fatal error: openssl/e ...

  10. jQuery的无new创建方法

    一般我们去写一个框架,会采用什么样的设计呢?比如设计一个jQuery框架,一般我们会创建一个函数对象 function jQuery(params){ //构造函数 }jQuery.prototype ...