汇编语言基础

寄存器

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

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,偏移地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.地址总线,数据总线,控制总线在哪里,它们有什么作用?答:它们都是cpu连接外部组件的线路。地址总线:地址总线A...
    MagicalGuy阅读 1,496评论 0 1
  • 汇编基础教程 16位和32位的80x86汇编语言的区别 需要注意的是汇编不是一种语言,不同平台有不同的汇编语言对应...
    inwunwe阅读 9,524评论 2 19
  • 计算机通过执行指令序列来使机器得以工作,所以对于每一系列的计算机都有指定的一组指令集供计算机使用,这组指令...
    未来科技工作室阅读 8,098评论 1 10
  • 1. 堆栈操作 1). 运行时栈 PUSH 操作 作用:32位PUSH操作将堆栈指针递减4并将值复制到该位置堆栈指...
    _凌浩雨阅读 2,386评论 0 5
  • 一篇前言 这是一系列的汇编语言学习的读书笔记,以及一些自己的理解系列文章。我想我会在循序渐进的学习中,写下对汇编的...
    华落阅读 5,085评论 0 7