一.代码 和 汇编 和 二进制之间的关系

二.复习一下计算机组成原理的知识

1.寄存器

计算机中有三个存储

32位cpu提供的寄存器有三种类型8位 16位 32位

64位的只是32位的扩展 并且程序大多是32位

以下是32位的8个通用寄存器(有宽度)

2.MOV指令

mov eax ,1(向eax寄存器存1)

mov  edx , eax(把edx里面的值存到eax)

例子:  EAX:32位通用寄存器 假如FFFFFFFF   一个F(16进制)化为2进制 1111,也就是4位

所以为什么叫32(四个字节) ? 4*8=32

三.内存

1.内存

内存空间和物理内存都不是内存条!物理内存和内存条之间还有一层映射关系。

  下面的话其实并不是真正的给每一个进程分了4g的内存条,等进程  真正要去写/读内存的时候就把4g内存映射到物理内存上去。

  

2.内存地址

内存太多起不了名字 只能用编号。

每一行的内存编号代表一个字节

3.mov指令向内存写数据

与往寄存器里面写是不一样的 内存 eax32位 ax16位 他是自带数据宽度的,

而内存不一样,内存是连起来的一大片

所以 !

不同点:向内存写的时候必须明确告诉其宽度。

byte = 1字节

word = 2字节

dword = 4字节

<1>

那么就有一个问题,就是一行的内存地址编号是一个字节。

现在村的数据是四个字节,那么可行吗?

可行 ,它会从你指定的内存编号接着往后写。

<2>

  

  不可以写成 mov dword ptr ds:[18FFFC] ,ax   宽度不一样

<3>

  

  记住一点 ,汇编里面绝大部分的指令是不可以从内存到内存。必须得经过寄存器。

  

四.内存地址的五种形式

 

也就是第二种形式就是先把内存存到寄存器中去了

先往寄存器写入一个地址 然后寄存器+4,将立即数写入(寄存器+4)后的内存地址中去

第四种形式主要就是高级语言生成的数组,汇编之后就是这样的形式

汇编,寄存器,内存,mov指令的更多相关文章

  1. 汇编寄存器(内存访问)基础知识之三---mov指令

     1 内存中字的存储 一个字型数据占2个内存单元,内存里面一个内存单元一个字节(8位),高地址单位放高8位,低地址单元放低8位. 注意:0号是地址单元,1是高地址单元(上是低地址,下面是高地址) (1 ...

  2. 为什么X86汇编中的mov指令不支持内存到内存的寻址?

    在X86汇编中,MOV [0012H], [0016H]这种指令是不允许的,至少得有一个操作数是寄存器.当然,这种问题在用高级语言的时候看不到,感觉好像基本上都是从内存到内存啊,为毛到了汇编就不行了? ...

  3. 汇编总结:mov指令

    mov指令的作用: mov指令可能是汇编里用的最多的指令了,完成c语言里的赋值. mov指令种类: 1.普通的mov指令 2.做符号扩展的movs 3.做零扩展的movz 1.普通mov的种类有: m ...

  4. LEA指令与MOV指令的区别——发现一本汇编好书

    一.汇编语言中PTR的含义及作用mov ax,bx ;是把BX寄存器“里”的值赋予AX,由于二者都是word型,所以没有必要加“WORD”mov ax,word ptr [bx];是把内存地址等于“B ...

  5. ARM 汇编 内存访问指令

    一. 单个寄存器操作读写内存 内存访问指令格式:<opcode><cond> Rd, [Rn] Rn 中保存的是一个内存的地址值 1. 内存写指令  [ str,strb,st ...

  6. 汇编中中括号[]作用以及lea和mov指令的区别

    现在总结一下:其中牵扯到lea指令,mov指令,[] 一.lea指令:对于寄存器来说:第二个操作数是寄存器必须要加[],不然报错,这里lea就是取[寄存器]的值,如:mov eax,2lea ebx, ...

  7. 汇编-MOV指令

    知识点:  MOV指令  基址  内联汇编  把OD附加到资源管理器右键菜单 一.MOV指令 aaa=0x889977;//MOV DWORD PTR DS:[0x403018],0x8899 ...

  8. ARM汇编之MOV指令

    http://blog.csdn.net/lsywk/article/details/8799837 一.指令格式 MOV{条件}{S}  目的寄存器,源操作数 二.指令详解 MOV指令可完成从另一个 ...

  9. ARM指令集——条件执行、内存操作指令、跳转指令

    ARM 汇编指令条件执行 在ARM模式下,任何一条数据处理指令可以选择是否根据操作的结果来更新CPSR寄存器中的ALU状态标志位.在数据处理指令中使用S后缀来实现该功能. 不要在CMP,CMN,TST ...

随机推荐

  1. 5.6 Nginx Rewrite模块配置

  2. git+jenkins jar包代码的发布加新建项目

    1.本地仓库  java开发 把代码上传上来 ,问一下他要上传到的主机ip , 分支 2.本地 , 设置-->仓库 更新数据,让他同步到南阳gitlab, 若没有这个项目,需要创建相同名字的项目 ...

  3. Bug的等级及定位

    缺陷等级一般划分为四个等级:致命.严重.一般.低 一.致命(一级bug) 通常表现为:系统无法运行,崩溃或严重资源不足,应用模块无法启动或者异常退出,主要功能模块无法使用. 比如: 1.系统崩溃(蓝屏 ...

  4. 热门提示输入之AutoCompleteTextView

    前言: 在我们百度时,经常会遇到在你输入一个内容后在你的输入框的下面会提示一些别的热门的东西,接下来我们来简单实现这种功能 正文: 直接上代码,和之前的东西都大同小异 下面是Java代码 public ...

  5. 学习Linux让我进入了知名企业

    说起我学习Linux的原因是多方面的,大学时我学的是物理学师范专业,有部分计算机课程,但我觉得这些课程没什么实际作用,我自己对计算机比较感兴趣,我利用业余时间学习了很多计算机技术.在大学期间我参加了很 ...

  6. HihoCoder第一周与POJ3974:最长回文字串

    这个题目是hihoCoder第一周的题目,自己打算从第一周开始做起,不知道能追上多少,更不知道这一篇写完,下一篇会是什么时候... 题意很简单. 输入: abababa aaaabaa acacdas ...

  7. JVM配合IDEA远程调试

    前言 如果测试环境中运行的jar包项目报错,需要排错时,会不太方便,这个时候就可以通过远程调试的方式,在本地打断点的方式进行调试 正文 一.首先,运行测试环境的jar包需要加以下参数: java -j ...

  8. 新闻网大数据实时分析可视化系统项目——18、Spark SQL快速离线数据分析

    1.Spark SQL概述 1)Spark SQL是Spark核心功能的一部分,是在2014年4月份Spark1.0版本时发布的. 2)Spark SQL可以直接运行SQL或者HiveQL语句 3)B ...

  9. C++面试常见问题——10派生类的构造与析构

    派生类的构造与析构 派生类的构造 派生时构造函数与析构函数不会被继承,需要重新定义派生类的构造函数与析构函数.派生类对象包含了基类对象的值,创建派生类时首先会调用基类的构造函数,若派生类中含有其它类对 ...

  10. html的适配

    html值得一说的应该就是适配 !!适配是与手机同时存在的 写好一个页面在手机端打开,会发现这个页面显示很小,那是因为设备的视口宽度viewport不等于设备宽度device-width,而页面是根据 ...