C语言&嵌入式嵌入式 Linux C ARM

混子汇编语言学习之01笔记

2021-10-08  本文已影响0人  那个混子

第一章 基础知识

1、指令

机器指令:CPU能直接识别并执行的二进制编码,就是一些二进制数。
汇编指令:汇编指令是机器指令的助记符,同机器指令一一对应。
指令:指令通常由操作码和地址码(操作数)两部分组成
指令集:每种CPU都有自己的汇编指令集。

汇编语言由3类指令组成。

(1) 汇编指令:机器码的助记符,有对应的机器码。
(2)伪指令:没有对应的机器码,由编译器执行,计算机并不执行。
(3)其他符号:如+、-、*、1等,由编译器识别,没有对应的机器码。

编译器:够将汇编指令转换成机器指令的翻译程序每一种CPU都有自己的汇编指令集。


在内存或磁盘上,指令和数据没有任何区别,都是二进制信息!

2、储存器

指令和数据在存储器中存放,也就是我们平时所说的内存。在一台PC机中内存的作用仅次于CPU。
随机存储器(RAM)在程序的执行过程中可读可写,必须带电存储
只读存储器(ROM)在程序的执行过程中只读,关机数据不丢失

王道考研思维导图:

3、总线

总线是连接各个部件的信息传输线,是各个部件共享的传输介质。
主板上有核心器件和一些主要器件,这些器件通过总线(地址总线、数据总线、控制总线)相连。这些器件有CPU、存储器、外围芯片组、扩展插槽等。扩展插槽上一般插有RAM内存条和各类接口卡。

总线根据位置分类:
片内总线(芯片内部总线)
系统总线(计算机各部件之间的信息传输线)

根据传送信息的不同,系统总线从逻辑上又分为3类,地址总线、控制总线和数据总线。
CPU要想进行数据的读写,必须和外部器件(标准的说法是芯片)进行以下3类信息的交互。

  • 存储单元的地址(地址信息);
  • 器件的选择,读或写的命令(控制信息);
  • 读或写的数据(数据信息)。
  1. 地址总线:CPU通过地址总线来指定存储单元
    1根导线可以传送的稳定状态只有两种,高电平或是低电平。用二进制表示就是1或0

    图示有10根地址线即一次可以传输10位,访问存储单元地址为1011(即地址为11),寻址范围为0 ~ (210 - 1)。
一个CPU有N根地址线,则可以说这个CPU的地址总线的宽度为N,这样的CPU,最多可以寻找2的N次方个内存单元。
  1. 数据总线
    CPU与内存或其他器件之间的数据传送是通过数据总线来进行的。数据总线的宽度决定了CPU和外界的数据传送速度。8根数据总线一次可传送一个8位二进制数据(即一个字节)。16根数据总线一次可传送两个字节。
8088CPU的数据总线宽度为8,8086CPU的数据总线宽度为16。 8088CPU数据传输

8086一次性就可以直接传输16位数据,故8086直接一次性传输89D8。

  1. 控制总线
    CPU对外部器件的控制是通过控制总线来进行的。有多少根控制总线,就意味着CPU提供了对外部器件的多少种控制。所以,控制总线的宽度决定了CPU对外部器件的控制能力。
4、CPU对存储器的读写

1、 CPU通过地址线将地址信息3发出。
2、 CPU通过控制线发出内存读命令,选中存储器芯片,并通知它,将要从中读取数据。
3、 存储器将3号单元中的数据8通过数据线送入CPU。写操作与读操作的步骤相似。

后续这个过程对应的代码为:

5、储存芯片及内存地址空间

储存器

从读写属性上看分为两类:

  • 随机存储器(RAM)可读可写,关机后存储的内容丢失;
  • 只读存储器(ROM)只能读取不能写入,关机后其中的内容不丢失。

这些存储器从功能和连接上又可分为以下几类:

  • 随机存储器 (RAM)

用于存放供CPU使用的绝大部分程序和数据,主随机存储器一般由两个位置上的RAM组成,装在主板上RAM和插在扩展插槽上的RAM。

  • 装有BIOS(Basic Input/Output System,基本输入/输出系统)的ROM
    BIOS是由主板和各类按口卡(如显卡、网卡等)商提供的软件系统,可以通过它利用该硬件设备进行最基本的输入输出。
  • 接口卡上的RAM
    某些接口卡需要对大批量输入、输出数据进行暂时存储,在其上装有 RAM。最典型的是显示卡上的RAM,一般称为显存。显示卡随时将显存中的数据向显示器上输出。

内存地址空间

CPU在操控储存芯片的时候,把它们都当作内存来对待,把它们总的看作一个由若干存储单元组成的逻辑存储器,这个逻辑存储器就是我们所说的内存地址空间。


虽然储存器有很多,但是在CPU中相当于只当做一个内存来看待,对不同的储存器分配不同的地址空间。

小结易错:

1、一个储存单元相当于是1byte,也就是占8bit。
2、寻址能力计算:cpu的寻址能力=2^n ,其中n代表地址总线的个数;cpu的寻址能力就是指其一次性能读取的二进制数个数。
比如一个地址总线的个数为1的cpu,那它的寻址能力就为2个二进制数。如果它的寻址能力为8k,其中k=2^10 个二进制数。那8K=2^13个二进制数。所以地址总线个数为13。CPU寻址能力也就是寻址空间,通俗地说,就是能最多用到多少内存的一个问题。
CP的寻址能力以字节为单位,如32位的CPU,那对应的最大的寻址能力为2^ 32 =4GB。
3、1Byte=8bit, 1KB=1024B ,1MB=1024KB ,1GB=1024MB。
4、储存单元从0开始顺序标号的。(这也是计算需要减1的原因)
5、往只读储存器(ROM)中写东西是无效的,没有用的。所以在操作时需要注意操作地址对应的是哪种存储器。
参考资料 王爽《汇编语言第三版》,小甲鱼视频,博客分享
欢迎关注本人微信公众号:那个混子
记录自己学习的过程,分享乐趣、技术、想法、感悟、情感!
上一篇下一篇

猜你喜欢

热点阅读