汇编语言基础

寄存器

寄存器是处理器内部的高速缓冲区,用于暂时存放数据。
寄存器的分类:
透明寄存器:这类寄存器不需要程序员进行操作。
可编程的寄存器:这是我们程序员需要学习的这类寄存器又分为通用寄存器和专用寄存器

32位通用寄存器:eax ebx ecx edx edi esi ebp esp
16位通用寄存器:ax bx cx dx di si bp sp
8位通用寄存器:al ah bl bh cl ch dl dh

专用寄存器的种类
标志寄存器:eflags
指令指针寄存器:eip
段寄存器:cs ds ss es gs fs

我们可以看到通用寄存器有8位16位和32位的,这是发展的结果,比如在一个32的系统中eax寄存器包含32个位,其中al是eax的最后8位,ax是eax的最后16位,因此ax也是包含al和ah的。
下面是一个图来表示各种寄存器关系


寄存器.png

寄存器结构.png

下面是我们通常使用的通用寄存器名称


通用寄存器.png

计算机存储器的分级

按照读取速度进行分等级
硬盘->内存->缓存->寄存器
这个顺序表示存取速度依次递增的顺序进行排序的并且存储器的大小是依次递减的但是价格是依次递增的,通常也是数据传递顺序,一个程序的运行首先从硬盘读入内存,然后将程序的代码按照顺序取指执行进行操作。

内存

内存又称主存储器,现在的内存通常是很大的,根据规定将主存储器分为很多的存储单元,每个存储单元占一个字节,按照存储单元进行编址,从0开始进行编址,这样每个存储单元都有一个唯一的地址,来标志这个存储单元,像这样的地址我们称之为物理地址。


物理地址.png

程序的寻址并不是按照物理地址进行寻址,IA-32处理器有三种存储模型,用于程序访问存储器。

  • 平展存储模型
  • 段式存储模型
  • 实地址存储模型

我们现在主要使用的是段式存储模型,我们现在了解下这种存储模型。
代码段:表示存放代码的即处理器需要执行的指令
数据段:表示存放数据的比如全局变量
堆栈段:用来存放临时地址和临时变量的
这三个段每个都可以达到最大内存

处理器内部和程序员编程时使用的是逻辑地址
逻辑地址=段基地址:偏移地址
段基地址:表示在主存中的起始位置
偏移地址:表示距离段基地址的位偏移量

专用寄存器

指令指针寄存器eip:保存程序执行到的位置顺序执行时进行自增,时刻指向指令执行到的位置.

代码段:段基地址cs,偏移地址eip
堆栈段:段基地址ss,偏移地址esp
数据段:段基地址ds,偏移地址

你可能感兴趣的:(汇编语言基础)