码迷,mamicode.com
首页 > 其他好文 > 详细

汇编,寄存器,内存,mov指令

时间:2020-01-30 21:07:16      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:映射关系   告诉   程序   不同   类型   http   图片   写入   font   

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

技术图片

 

 

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

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指令

标签:映射关系   告诉   程序   不同   类型   http   图片   写入   font   

原文地址:https://www.cnblogs.com/cat47/p/12243785.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!