[汇编语言]基础知识


一、汇编语言的产生

机器语言(0、1)是机器指令的集合,机器指令就是一台计算机可以正确执行的命令这里的计算机指的是可以执行机器指令,进行运算的机器。在现在,我们常用的PC机中,是由CPU完成上述的功能,CPU是一种微处理器。每一种CPU都有自己的汇编指令集

使用机器语言会带来很多麻烦,难于辨别和记忆,因此产生了汇编语言。
汇编语言的主体是汇编指令,汇编指令是机器指令便于记忆的书写格式

例如:
操作:寄存器BX的内容送到AX中
机器指令:1000100111011000
汇编指令:mov ax, bx

寄存器就是CPU中可以存储数据的器件,一个CPU中有多个寄存器。

但是计算机只能读懂机器指令,因此就需要一个东西将汇编指令转化为机器指令,将其称为编译器。

在这里插入图片描述

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


二、存储器

CPU是计算机的核心部件,控制了整个计算机的运作并进行运算,若想让一个CPU进行工作,就必须向他提供指令和数据,指令和数据在存储器中存放,存储器就是内存在PC机中,内存作用仅次于CPU磁盘不同于内存,磁盘上的数据或程序不读到内存上是无法被CPU使用的CPU可以直接使用的信息在存储器中存放

指令和数据是应用上的概念,在内存或是磁盘中,他们两者没有任何区别,都是二进制信息
如内存中的二进制信息1000100111011000 可以看作是89D8H(数据)也可以看作是mov ax,bx(程序)

存储器被划分为若干个存储单元,每个存储单元从0开始顺序编号,如一个存储器有128个存储单元,编号就是0~127

在这里插入图片描述


微型计算机存储器的存储单元可以存储一个字节,一个存储器上有128个存储单元,则它可以存储128字节Byte。微型计算机存储器的容量是以字节为最小单位进行计算的,对于128个存储单元的存储器,可以说它的容量是128字节。

存储单元从0开始编号,这些编号可以看作是存储单元在存储器中的地址。CPU要从内存中读数据,首先要指定存储单元的地址。CPU在读写数据时,还要指明对哪一个器件进行操作,进行哪种操作(读或写)

因此CPU要进行数据的读写必须和外部器件(芯片)进行三类信息的交互:

  1. 存储单元的地址(地址信息)
  2. 器件的选择,读或写的命令(控制信息)
  3. 读或写的数据(数据信息)

在计算机中,CPU是通过什么将地址、数据和控制信息传到存储器芯片中的?——总线(连接CPU和其他芯片的导线),总线从物理上来说是一根根导线的集合,根据传送信息的不同分为:地址总线、数据总线、控制总线


三、总线结构

3.1 地址总线

CPU是通过地址总线来指定存储单元的,地址总线能传送多少个信息,CPU就可以对多少个存储单元进行寻址。
如CPU用10根地址总线,在计算机中,一根导线可以传送的状态有两种,高电平或是低电平。用二进制0/1表示,10根导线可以传送10位二进制数据,10位二进制数据可以表示2^10个不同的数据,最小为0,最大为1023

在这里插入图片描述

因此,若一个CPU有N根地址线,则可以说这个CPU的地址总线宽度为N,可以寻找2^N个内存单元

3.2 数据总线

CPU与内存或是其他器件之间的数据传送是通过数据总线来进行的,数据总线的宽度决定了CPU与外界数据传送的速度,8根数据总线一次可以传送一个8位二进制数据(一个字节),16根数据总线可以一次传送两个字节

在这里插入图片描述


8088CPU的数据总线宽度是8
8086CPU的数据总线宽度是16

因此若是8088向内存中写入数据89D8H时需要进行两次数据传送

3.3 控制总线

CPU对外部器件的控制是通过控制总线进行的,这里的控制总线是一个总称,控制总线是一些不同控制线的集合,有多少根控制总线,就意味着CPU提供了对外器件的多少种控制,所以,控制总线的宽度决定了CPU对外部器件的控制能力

每一个CPU芯片都有许多管脚,这些管脚和总线连接。


四、主板

每一台PC机上都有一个主板,主板上有核心器件和一些主要器件,这些器件(CPU、存储器、外围芯片、扩展插槽等)通过总线相连。(扩展插槽一般插有RAM内存条和各类接口卡)


五、接口卡

计算机系统中,所有可用程序控制其工作的设备必须收到CPU的控制,CPU对外部设备都不能直接控制,如显示器、音响等,直接控制这些设备工作的是插在扩展插槽的接口卡,扩展插槽通过总线和CPU相连接,因此接口卡也通过总线同CPU相连,CPU可以直接控制这些接口卡,从而实现了CPU对外设的间接控制。也就是CPU通过总线向接口卡发送命令,接口卡根据CPU的命令控制外设工作


六、各类存储器芯片

一台PC机上,装有多个存储器芯片,这些存储器芯片从物理连接上来看是独立的、不同的器件。从读写属性上看分为两类:随机存储器(RAM)和只读存储器(ROM)随机存储器可读可写,但必须带电存储,关机后存储内容消失;只读存储器只能读取不能写入,关机后内容不消失

这些存储器从功能和连接上分为:

  1. 随机存储器
    用于存放供CPU使用的绝大部分程序和数据,主随机存储器上一般由两个位置上的RAM组成,装在主板上的RAM和扩展插槽上的RAM。
  2. 装有BIOS(basic input/output system:基本输入输出系统)的ROM
    BIOS是由主板和各类接口卡(显卡、网卡等)厂商提供的软件系统,可以通过它利用该硬件设备进行最基本的输入和输出。在主板和某些接口卡上插有存储相应的BIOS的ROM,例如,主板上的ROM中存储着主板的BIOS;显卡上的ROM存储着显卡的BIOS
  3. 接口卡上的RAM
    某些接口卡需要对大批量输入、输出数据进行临时存储,在其上装有RAM。最典型的是显示卡上的RAM,一般称为显存,显示卡随时将显存中的数据向显示器上输出,也就是说,我们将需要显示的内容写入显存,就会出现在显示器上

**样式**


七、内存地址空间

一个CPU的地址总线宽度为10,那么可以寻址1024个内存单元,这1024个可寻到的内存单元就构成了这个CPU的的内存地址空间

上述存储器在物理上是独立的器件,但是有两点相同:

  1. 都和CPU总线连接
  2. CPU对他们进行读或写的时候都通过控制线发出内存读写命令

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

下图展示将各类存储器看做为一个逻辑存储器

在这里插入图片描述


在上图中,所有的物理存储器都被看作是一个由若干个存储单元组成的逻辑存储器,每个物理存储器在这个逻辑存储器中占有一个地址段,即一端地址空间,CPU在这段地址空间中读写数据,实际上就是在相对应的物理存储器中读写数据。

地址为0~7FFFH占用了32KB空间(一个地址可存储1Byte)
(7FFFH - 0000H + 1H = 8000H = 1000 0000 0000 0000 = 2 ^ 15 * 1B = 2 ^ 10 ^ 5 = 2 ^ 5 KB = 32KB)

内存地址空间的大小受CPU地址总线宽度的限制。8086的地址总线宽度是20,可以传送2^20个不同的地址信息,则8086PC的内存地址空间大小为1MB

下图展示8086PC机内存地址空间的分配情况:

在这里插入图片描述

对CPU来说,系统中所有存储器中的存储单元都处于一个统一的逻辑存储器中,它的容量受CPU寻址能力的限制,这个逻辑存储器就是内存地址空间

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340