32位汇编基础_内存_每个应用进程都会有自己独立的4GB内存空间
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内存空间的更多相关文章
- 32位汇编基础_cpu 寄存器
32位通用寄存器 EAX EBX ECX EDX EBP ESP ESI EDI 八个寄存器都可以作为普通的数据寄存器使用.但有的有特殊的用途: EAX 为累加器, ECX 为计数器, E ...
- 32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数
32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数 (如果想看所有代码,请下载课堂资料,里面有所有代码,这里会讲解怎么生成一个窗口程序) 一丶32位汇编编写Windows窗口程序 首 ...
- 32位汇编第四讲,干货分享,汇编注入的实现,以及快速定位调用API的数量(OD查看)
32位汇编第四讲,干货分享,汇编注入的实现,以及快速定位调用API的数量(OD查看) 昨天,大家可能都看了代码了,不知道昨天有没有在汇编代码的基础上,实现注入计算器. 如果没有,今天则会讲解,不过建议 ...
- 32位汇编第六讲,OllyDbg逆向植物大战僵尸,快速定位阳光基址
32位汇编第六讲,OllyDbg逆向植物大战僵尸,快速定位阳光基址 一丶基址,随机基址的理解 首先,全局变量的地址,我们都知道是固定的,是在PE文件中有保存的 但是高版本有了随机基址,那么要怎么解决这 ...
- 32位汇编第一讲x86和8086的区别,以及OllyDbg调试器的使用
32位汇编第一讲x86和8086的区别,以及OllyDbg调试器的使用 一丶32位(x86也称为80386)与8086(16位)汇编的区别 1.寄存器的改变 AX 变为 EAX 可以这样想,16位通 ...
- 32位汇编第三讲,RadAsm,IDE的配置和使用,以及汇编代码注入方式
32位汇编第三讲,RadAsm,IDE的配置和使用,以及汇编代码注入方式 一丶RadAsm的配置和使用 用了怎么长时间的命令行方式,我们发现了几个问题 1.没有代码提醒功能 2.编写代码很慢,记不住各 ...
- GDB调试32位汇编堆栈分析
GDB调试32位汇编堆栈分析 测试源代码 #include <stdio.h> int g(int x){ return x+5; } int f(int x){ return g(x)+ ...
- 20145314郑凯杰《信息安全系统设计基础》GDB调试32位汇编堆栈分析
20145314郑凯杰<信息安全系统设计基础>GDB调试32位汇编堆栈分析 本篇博客将对第五周博客中的GDB调试32位汇编堆栈进行分析 首先放上以前环境配置的图: 图1: 测试代码: #i ...
- 64位gcc编译32位汇编
由于使用as和ld来编译链接汇编程序,在使用C库的时候比较麻烦,需要输入比较多的指令,所以使用gcc进行编译链接.由于书中内容是32位汇编程序,但是机器使用的是64位操作系统,自带的gcc也是64位的 ...
随机推荐
- hdu 4739 Zhuge Liang's Mines DFS
http://acm.hdu.edu.cn/showproblem.php?pid=4739 题意: 给定100*100的矩阵中n(n<= 20)个点,每次只能一走能够形成正方形的四个点,正方形 ...
- python 执行字符串中的python代码
mycode = 'print("hello world")' code = """ def mutiply(x,y): return x*y pri ...
- css输入框的圆角
转载:http://jingyan.baidu.com/article/73c3ce28f0b38fe50343d926.html 1.原理是四张圆角的图片放在四个角上,就是圆角矩形的四个角,但这种方 ...
- 使用扩展方法(Chapter3 P39-41)
namespace LanguageFeatures { public class ShoppingCart { public List<Product> Products { get; ...
- 十款效果惊艳的Html案例(一)
http://www.html5tricks.com/10-html5-image-effect.html
- 转载 ORACLE中实现表变量的方法
源文地址:http://blog.itpub.net/750077/viewspace-2134222/ 经常看到SQLSERVER 中用表变量类型的方式就能做到缓存一个比较大的中间结果, 然后再对这 ...
- Java——基本语法
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
- timer Compliant Controller project (3)--bom and sch
After optimization of structural solution , I must prepare the bom and drawing circuit diagram as ...
- html5实现本页面元素拖放和本地文件拖放
HTML5拖放 拖放本地数据 1.HTML拖放 拖放(Drag 和 Drop)是HTML5标准的组成部分 2.拖放开始: ondragStart:调用了一个函数,drag(event),它规定了被 ...
- 【maven】mvn 命令
===========maven参数打包================== 在使用mvn package进行编译.打包时,Maven会执行src/test/java中的JUnit测试用例,有时为了跳 ...