汇编(1)- 基础知识

CPU体系结构、汇编、C++、操作系统,是程序员的护身法宝,几乎可利用它们任意开发操作系统和编译器,甚至开发一种新的程序设计语言。

汇编语言是直接运行在硬件上的编程语言,要实现汇编,首先要了解硬件结构。

1)机器语言

机器语言即机器指令集合,电子计算机的机器指令是一列二进制数,计算机将其转换为高低电平,是计算机的硬件受到驱动进行计算。
例如8086CPU要完成计算s = 768 + 12288 – 1280,机器码如下:
1011,0000,0000,0000,0000,0011
0000,0101,0000,0000,0011,0000
0010,1010,0000,0000,0000,0101

2)汇编语言

为了克服机器语言的弊端,让编程语言变得易于辨别和记忆,就产生了汇编语言,汇编语言的主体是汇编指令,汇编指令和机器指令的区别在于表示方式上的不同,汇编指令是机器指令便于记忆的书写格式。
例如:把BX寄存器的内容送入AX
机器指令:1000,1001,1101,1000
汇编指令:mov ax,bx
指令解释:将BX中的内容送入AX中
*寄存器:CPU中用于存放数据的器件,一个CPU有多个寄存器,AX和BX就是其中的两个。
汇编指令的执行过程:汇编指令组成源程序,经过编译器(准确的说是汇编器)的编译,称为计算机可以执行的二进制机器码。

3)汇编语言的组成

  • 汇编指令:机器码的助记符,有机器码与其对应
  • 伪指令:只由编译器执行的没有对应机器码的指令
  • 其他符号:由编译器识别的符号,如加减乘除符号

4)存储器

CPU是计算机的核心,要CPU工作,必须向其提供数据和指令,而数据和指令都存放于存储器中,也就是常说的内存。另外还有一种存储器叫外存,存放的是非易失性数据,但是其中的数据也必须要读到内存中才可以被CPU所使用。所以了解CPU和内存之间的信息存取是汇编学习的重要部分。

5)指令和数据

两者存储在存储器上没有任何的区别,都是一串二进制信息,由CPU把某些信息看成指令,把另一些看成数据。
例如以下机器码:

1000,1001,1101,1000

CPU可以将其看成数据89D8H,也可以看成是指令mov ax,bx。

6)存储单元

存储器被分成若个相等的分配单位,称为存储单元,一个存储单元可存放1 Byte(1字节)信息,例如某个存储器有256M个存储单元,就可以存储256M字节信息。存储单元从0开始编号,这些编号可以看成存储单元的地址。

CPU要从存储器中存取信息,首先要指定存储单元的地址,即从哪个存储单元中存取信息。当然,机器中与CPU发生信息存取关系的器件不止存储器这一个,所以还需要CPU指定器件。最后还需要CPU决定从器件中读数据还是写数据。

总结起来,CPU要对信息进行存取操作,需要告知外部三个信息:

  • 存储单元的地址(地址信息)
  • 读操作还是写操作(控制信息)
  • 操作的信息(数据信息)

CPU通过芯片导线连接其他器件,这种导线称为总线。这些总线又根据传递信息的不同分为地址总线、数据总线和控制总线。CPU从3号存储单元读取数据的过程为:

  1. CPU通过地址总线发出3号存储单元地址信息;
  2. CPU通过控制总线发出读命令,通知存储器将从中读取信息;
  3. CPU将3号存储单元中的数据通过数据总线接收到CPU中。

使用汇编指令表示就是:

MOV AX, [3]

将[3]存储单元的数据读取到寄存器AX中。 

7)地址总线

CPU是通过地址总线进行存储单元寻址的,所以地址总线的宽度决定了CPU可以寻址的大小,地址总线的宽度为N,则CPU可以寻2^N个内存单元。

  • 16位:可寻64KB空间
  • 20位:可寻1024KB空间(1M)
  • 24位:16MB(1M*2^4)
  • 28位:256MB(16M*2^4)
  • 32位:4GB(256M*2^4)

8)数据总线

CPU是通过数据总线传送数据的,所以数据总线决定了CPU和其他部件进行数据传递的速度,8根数据总线一次传递1个字节,16根则传递一个字。所以一般情况下,数据都是分次进行传送的。

9)控制总线

控制总线决定了CPU对外部器件的控制能力,有多少种控制总线就意味着CPU对外部器件有多少种控制。

10)主板

计算机的主板上集成了核心器件和主要的外部器件,CPU、存储器、芯片组和扩展插槽等,扩展插槽可扩展RAM内存条和接口卡。

11)接口卡

计算机系统中,所有使用程序进行工作的的器件都必须受到CPU的控制,但CPU不直接控制这些外设(显示器、音箱、打印机),而是由接口卡来控制,接口卡插在计算机的扩展插槽上,CPU通过三总线控制接口卡进而间接控外设。

12)存储器分类

从读写属性上存储器可以分成两类:随机存储器(RAM)和只读存储器(ROM),RAM具有掉电易失性,计算机的主存就是RAM,计算机的外存即常说的硬盘就是一种ROM。连接在接口卡上的RAM用来与CPU配合控制外设,比如显卡上的RAM,一般称为显存,随时将其中的内容显示在显示器上,所以只要将想显示的内容写入显存就可以显示到显示器。

13)内存地址空间

CPU可以寻址的内存空间大小,比如地址总线宽度为10的CPU的寻址空间是1024,那么这1024个内存单元构成了该CPU的内存地址空间。

所有的存储器在物理上是独立的,但是有一个共同点是都通过总线与CPU连接,所以CPU将所有的存储器整合在一起,当作一块由若干内存单元组成的假想存储器来进行操作,这个假想存储器称为逻辑存储器。逻辑存储器的大小就等于计算机的寻址的空间大小,也就是内存地址空间。

所有的物理存储器都在这个逻辑存储器中占据一定的地址空间,CPU在逻辑存储器中存取数据实际上就是在对应的物理存储器中操作。

内存地址空间受到CPU的地址总线宽度的影响,要对某个硬件系统进行编程,就必须知道其内存地址空间的分配情况,因为只有知道某个存储器所占的内存地址空间的范围,才能正确的对其进行数据存取。比如想在显示器上显示内容,就必须知道显存所占据的内存地址空间段,向这个段中写数据才能在显示器上正确的显示内容。

【参考】

https://www.jianshu.com/p/0cfcf7cddbb5

《汇编语言》-王爽

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值