美文网首页
汇编语言学习笔记(二)内存

汇编语言学习笔记(二)内存

作者: Rui哥 | 来源:发表于2018-02-03 11:34 被阅读68次

一、汇编语言学前须知

  • 想要学好汇编语言,首先要对CPU等硬件结构有一定的了解.

  • 软件 \ 程序 的执行过程

    软件\程序的执行过程.png
  • 最为关键的是要了解CPU内存.

  • 在学习汇编语言的过程中,遇到的绝大部分指令都是跟内存CPU相关的指令.

二、总线

  • 每一个CPU芯片都有许多的管脚,这些管脚和总线相连,CPU通过总线和外部器件进行交互.
  • 总线: 一根根的导线的集合.
  • 总线的分类:
地址总线 数据总线 控制总线
总线.png

CPU 从内存的3号单元读取数据的过程.

CPU数据操作过程.png
  • 地址总线

(1)它的宽度决定了CPU的寻址能力
(2)8086的地址总线宽度是20,所有他的寻址能力是1M (220)

  • 数据总线

(1)他的宽度决定了CPU单次数据传送量,也就是数据的传送速度.
(2)8086 的数据总线宽度是16,所以单次最大传送2个字节的数据.

  • 控制总线

它的宽度决定了CPU对其他器件的控制能力,能有多少种控制.

三、数据总线

  • 8088的数据总线宽度是8, 8086的数据总线宽度是16,分别向内存中写入89D8H.
    8088CPU 分两次传送89D8H,第一次传送D8,第二传入89.
8088CPU.png 8086CPU.png

四、思考

  • 1个CPU的寻址能力为8KB,那么他的地址总线宽度为 13

  • 8080 8088 80286 80386 的地址总线宽度分别为: 16根\20根\24根\32根,则他们的寻址能力分别为: 64KB 1MB 16MB 4GB

  • 8080 8088 8086 80286 80386 的数据总线宽度分别为: 8根\8根\16根\16根\32根,则他们一次的数据传送能力为: 1B 1B 2B 2B 4B

  • 从内存中读取 1024 字节的数据,8086至少读** 512** 次,80386 至少读取256次.

五、内存

  • 各种存储器的逻辑连接情况


    存储器逻辑结构.png
  • 所有的内存单元都有唯一的地址,叫做物理地址

  • 各类存储器的物理地址情况

    • 内存地址空间的大小受CPU地址总线宽度的限制.8086的地址总线宽度为20,可以定位 220 个不同的内存单元(内存地址范围: 0x00000 ~ 0xfffff),所以8086的内存空间大小为1MB.
    • 0x00000 ~0x9ffff: 主存储器,可读可写
    • 0xAffff ~ 0xBffff: 向显存中写入数据,这些数据会被显卡输出到显示器.可读可写.
    • 0xc0000 ~ 0xfffff : 存储各种硬件\系统信息. 只读.
8086内存地址划分.png Snip20180130_8.png

六 8086的寻址方式

古怪的寻址方式

  • CPU 访问内存单元时,要给出内存单元的地址

  • 8086 有20位(根)地址总线,可以传送20位的地址,即1M的寻址能力.

  • 但是,但是 8086 又是16位的CPU结构,他的内存能一次性处理\传输\暂时存储的地址为16位.如果将地址从内部简单的发出,那么他只能送出16位的地址,表现出来的寻址能力只有64KB.

  • 8086 采用一种在内部用2个16位地址合成的方法来生成一个20位的物理地址

    8086CPU地址合成原理.png
  • 地址加法器采用 物理地址= 段地址x16+偏移地址的方法用段地址和偏移地址合成物理地址.例如: 8086CPU 要访问地址为123C8H 的内存单元,此时地址加法器的工作过程:

地址加法器的工作过程.png

地址合成:
段 地 址: 1200H (16位)
偏移地址: 1000H (16位)
物理地址 = 段地址 x 16 + 偏移地址
物理地址 = 段地址 x 10H + 偏移地址
物理地址 = 1200H x 10H + 1000H = 12000H + 1000H = 13000H

  • 疑问


    段地址与偏移地址的组合.png

七 内存的分段管理

  • 8086 是用起始地址 (端地址 X 16 ) + 偏移地址 = 物理地址 的方式给出物理地址.
  • 为了开发方便,我们可以采用分段的方式来管理内存,比如:
    -地址为10000H ~ 100FFH的内存单元组成一个段,该段的起始地址为10000H, 段地址为 1000H 大小为 100H. (00H ~ FFH 大小就是100H)
内存地址的分段.png
  • 偏移地址为16位,16位地址的寻址能力是64kB ,所以一个段的最大是64KB.
Snip20180130_23.png

相关文章

  • 汇编语言学习笔记(二)内存

    一、汇编语言学前须知 想要学好汇编语言,首先要对CPU等硬件结构有一定的了解. 软件 \ 程序 的执行过程软件\程...

  • C++学习:机器中没有随机

    这是我不知道第几次学习C++了,这次我打算从汇编语言开始学习来理解C++的内存机理。 汇编语言中,内存分为RAM和...

  • 汇编语言之基础

    本系列为学习<汇编语言> 王爽版 的学习笔记 [TOC] 汇编语言是什么? 汇编语言是直接在硬件之上工作的编程语言...

  • 汇编语言 学习笔记(三)

    汇编语言学习笔记 四、汇编语言程序格式 语句基本格式 汇编语言程序中的语句由 4 项组成,格式如下: 名字(nam...

  • 汇编语言 学习笔记 (二)

    汇编语言学习笔记 三、8086基本指令 数据传送指令 通用数据传送指令 1. MOV传送指令 a. 对标志位无影响...

  • 笔记——第一章

    @(读书笔记)[汇编语言,计算机] 基础知识 为什么要有汇编语言 CPU——电平脉冲(高低平)——二进制数字——机...

  • 技术领导力

    吃透基础技术 编程 C 直接和内存地址打交道,C语言设计第二版,内存管理,网络 了解汇编语言 编程范式算法 数据库...

  • JavaScript学习笔记三

    JavaScript学习笔记三 个人学习笔记参考阮一峰的JavaScript教学类型转换,内存,深拷贝,关于内存的...

  • JVM学习笔记(3)-垃圾收集算法

    JVM学习笔记(1)-内存管理机制 JVM学习笔记(2)-内存分配与回收 垃圾收集算法 JVM垃圾收集算法有四种:...

  • [035][x86汇编语言]第十四章 √√文件的OO的XX特权级

    ■ 学习笔记 《x86汇编语言:从实模式到保护模式》https://www.jianshu.com/p/d481c...

网友评论

      本文标题:汇编语言学习笔记(二)内存

      本文链接:https://www.haomeiwen.com/subject/xyqqzxtx.html