ASM-基础知识-CPU的工作原理

机器语言是机器指令的集合,电子计算机的机器指令是一列二进制数字,计算机将之转变为一列高低电平,使计算甲的电子器件收到驱动,进行运算
汇编语言的主题是汇编指令,汇编指令和机器指令的差别在与指令的表示方法上,汇编指令是机器指令便于以及书写格式
寄存器简单地讲是CPU中可以存储数据的器件,一个CPU有多个寄存器,AX是其中一个寄存器的代号,BX是另一个寄存器的代号,更详细的内容我们在以后的课程中将会讲到
汇编语言的组成
汇编语言由三部分组成
1 汇编指令:机器码的助记符,有对应的机器码
2 伪指令:没有对应的机器码,有编译器指令,计算机并不执行
3 其他符号:如加减乘除,有编译器识别,没有对应的机器码
汇编语言的核心是汇编指令,决定了汇编语言的特性
存储器
CPU是计算机的核心部件,控制整个计算机的运作并进行运算,但是前提是需要向它提供指令和数据,指令和数据在存储器中存放,也就是我们平时说的内存,离开了内存,再好性能的CPU也无法进行工作,就像最聪明的大脑,没有了记忆也无法进行思考,磁盘上的数据或程序如果不读到内存中,就无法被CPU使用
在内存或磁盘中,指令和数据没有任何区别,都是二进制信息
存储器被划分为若干个存储单元,每个存储单元从0开始顺序编号,一个存储器有n个存储单元,就有n个Byte,微机存储容量是以字节为最小单位来计算的。
CPU要从内存中读数据要找到那条街,街上哪个人,指定存储单元的地址,CPU不能独立工作,需要外部器件的配合才能完成交互运算
存储单元的地址(地址信息)
器件的选择,读或写的命令(控制信息)
读或写的数据(数据信息)
计算能处理,传输的信息都是电信号,电信号当然要用导线传送,在计算甲中专门有链接CPU和其他芯片的导线,通常称为总线,总线从物理上来讲,就是一根根导线的集合,根据传送信息的不同,总线从逻辑上有分为3类,地址总线,控制总线和数据总线
CPU从内存中读取数据的过程
1 CPU通过地址线将地址信息3发出
2 CPU通过控制线发出内存读命令,选中存储芯片,并通知它,讲要从中读取数据
3 存储器讲3号单元的数据通过数据线送入CPU
CPU向内存写入数据的过程
1 CPU通过地址线将地址信息3发出
2 CPU通过控制线发出内存写命令,选中存储器芯片,并通知它,要向其中写入数据
3 CPU通过数据线将数据写入内存的3号单元中
地址总线
CPU通过地址总线来指示存储器单元的,可见地址总线上能传送多少个不同的信息,CPU就可以对多小个存储单元进行寻址
一个CPU有N根地址线,则可以说这个CPU的地址总线的宽度为N,这样的CPU最多可以寻找2的N次方个内存单元(内存单元是字节)
数据总线
CPU与内存或其他器件之间的数据传送是通过数据总线来进行的,数据总线的宽度决定了CPU和外检的数据传送速度,n根数据总线一次可以传送一个n位二进制数据,16根数据总线可以一次传送两个字节

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

小结
1 汇编指令是机器指令的助记符,同机器指令一一对应
2 每一种CPU都有自己的汇编指令集
3 CPU可以直接使用的信息在存储器中存放
4 在存储器中指令和数据没有任何区别都是二进制信息
5 存储单元从零开始顺序编号
6 一个存储单元可以存储8个bit 
7 每个CPU芯片都有许多管脚,这些管脚和总线相连,也可以说,这些管线引出总线,一个CPU可以引出3中总线的宽度标志了这个CPU的不同方面的性能
地址总线的宽度决定了CPU的寻址能力
数据总线的宽度决定了CPU对其他器件进行数据传送时的一次数据传送量
控制总线的宽度决定了CPU对系统中其他器件的控制能力

主板:
在每一天PC机中,都有一个主板,主板上有核心器件和一些主要器件,这些器件沟通过总线(地址总线,数据总线,控制总线)相连,这些器件有CPU,存储器,外围芯片组,扩展插槽等,扩展插槽上一般有RAM内存条和各类接口卡

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

PC中有多个存储器芯片,这些存储器芯片从物理连接上看是独立的,不同的器件,从读写属性上看分为两类:随机存储器(RAM)和只读存储器(ROM),RAM可读可写,但是必须带电存储,关机后存储的内容丢失(内存条),只读存储器只能读取不能写入,关机后其中的内容不丢失,这些存储器从功能和连接上可分为以下几类
RAM:用于存放供CPU使用的绝大部分程序和数据,主随机存储器一般由两个位置上RAM组成,装在主板上RAM和插在扩展插槽上RAM
装有BIOS的ROM
接口卡上的RAM

内存地址空间
上述的那些存储器,在物理上是独立的器件,但是在以下两点上相同
都是CPU的总线相连
CPU对它们进行读或写的时候都通过控制线发出内存读写命令
CPU在操控它们的时候,把它们都当做内存来对待,把它们总的看作一个有若干存储单元组成的逻辑存储器,这个逻辑存储器就是我们所讲的内存地址空间
将各类存储器看作一个逻辑存储器
每个物理存储器在这个逻辑存储器中占有一个地址段,即一段地址空间,CPU在这段地址空间中读写数据,实际上就是在相对应的物理存储器中读写数据
内存地址空间的大小受CPU地址总线宽度的限制
我们在基于一个计算机硬件系统变成的时候,必须知道这个系统中的内存地址空间的分配情况,因为当我们想在某类存储器中读写数据的时候,必须知道它的第一个单元的地址和最后一个单元的地址,才能保证读写操作是在语气的存储器中进行,不同的计算系统的内存地址空间的分配情况是不同的,

寄存器
一个典型的CPU有运算器,控制器,寄存器(CPU工作原理)等器件构成,这些器件靠内部总线连接,CPU有内部和外部总线
内部总线实现CPU内部各个器件之间的联系,外部总线实现CPU和主板上其他器件的联系
在CPU中
运算器进行信息处理
寄存器进行信息存储
控制器控制各种器件进行工作
内部总线连接各种器件,在它们之间进行数据的传送
CPU中主要的部件是寄存器,寄存器是CPU中程序员可用指令来读写的部件,程序员通过改变各种寄存器中的内容来实现CPU的控制
不同的CPU,寄存器的个数,结构是不相同的,8086CPU有14个寄存器,每个寄存器有一个名称,这些寄存器是AX,BX,CX,DX,SI,DI.SP
.BP IP,CS,SS,DS,ES,PSW,
8086CPU的所有寄存器都是16位的,可以存放两个字节,AX,BX,CX,DX,这4个寄存器通常用来存放一般性的数据,被称为通用寄存器
16位寄存器可以存储一个16位的数据
为了兼容8086上一代的CPU
AX,BX,CX,DX可以分为两个可独立使用的8位寄存器来用
在写一条汇编指令或一个寄存器的名称时不区分大小写

CPU访问内存单元时,要给出内存单元的地址,所有内存单元构成的存储空间是一个一维的线性空间,每个内存单元在这个空间中都有唯一的地址,这个唯一的地址称为物理地址
CPU通过地址总线送入存储器的,必须是一个内存单元的物理地址,在CPU向地址总线上发出物理地址之前,必须要在内部先形成这个物理地址,不同的CPU可以有不同的形成物理地址的方式

对于8086CPU来说是16位结构(16位机,字长)
描述一个CPU具有西面几个方面的结构特性
1 运算器一次最多可以处理16位数据
2 寄存器的最大宽度为16位
3 寄存器和运算器之间的通路为16位
内存单元的地址在送上地址总线之前,必须在CPU中处理,传输,暂时存放,对于16位CPU,能一次性处理,传输,暂时存储16位的地址
因为8086CPU的地址总线是20根,所以寻址能力是1MB,但是8086CPU是16位结构,只能送出16位的地址,那么表现出来的能力只有64KB
因此,8086CPU采用一种在内部两个16位地址合成的方法来形成20位的物理地址

当8086CPU要读写内存时:
1 CPU中的相关部件提供两个16位的地址,一个称为段地址,一个称为偏移地址
2 段地址和偏移地址通过内部总线送入一个称为地址加法器的部件
3 地址加法器讲两个16位地址合成一个20位的物理地址
4 地址加法器通过内部总线讲20位物理地址送入输入输出控制电路、
5 输入输出控制电路将20位物理地址送上地址总线
6 20位物理地址被地址总线传送到存储器

地址加法器采用物理地址=段地址x16+偏移地址的方法用段地址和偏移地址合成物理地址,
CPU访问内存单元时,必须向内存提供内存单元的物理地址,8086CPU在内部用段地址和偏移地址移位相加的方法形成最终的物理地址

段寄存器
8086CPU在访问内存时要由相关部件提供内存单元的段地址和偏移地址,送入地址加法器合成物理地址。是什么部件提供段地址。段地址在8086CPU的段寄存器中存放,8086CPU有4个段寄存器:CS DS SS ES,当8086CPU要访问内存时有这4个段寄存器
CS和IP是8086CPU中两个最关键的寄存器,它们指示了CPU当前要读取指令的地址。CS为代码段寄存器,IP位指令指针寄存器,从名称上我们可以看出它们和指令的关系
CS中内容是M,IP中的内容为N,8086CPU讲从内存Mx16+N单元开始
任意时刻CPU将CS:IP指向的内容当做指令执行
8086CPU的工作过程
1 CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器
2 IP=IP+所读取指令的长度,从而指向下一条指令
3 执行指令,转到步骤1 ,重复这个过程

在8086CPU加电启动或复位后(即CPU刚开始工作时)CS和IP被设置为CS=FFFFH IP=0000H,即在8086PC机刚启动时,CPU从内存FFFF0H单元中读取指令执行,FFFF0H单元中的指令是8086PC机开机后执行的第一条指令
我们在第一章中讲过,在内存中,指令和数据没有任何区别,都是二进制信息,CPU在工作的时候把有的信息看作指令,有的信息看做数据 

问题:CPU是根据什么将内存中的信息看作指令
CPU将CS:IP指向的内存单元中的内容看作指令,因为在任何时候CPU将CS IP中的内容当做指令的段地址和偏移地址用它们合成指令的物理地址,到内存中读取指令码,执行,如果说,内存中的一段信息曾被CPU执行过的话,那么它所在的内存单元必然被CS:IP指向过

修改CS:IP的指令
mov能用于通用寄存器中,但是不能在CS:IP寄存器中使用,能够改变CS,IP的内容的指令被统称转移指令,jmp jump指令
用形如jmp 段地址:偏移地址的指令完成,如jmp 2AE3:3
jmp 某一合法寄存器指令的功能为用寄存器中的值修改IP
jmp ax


代码段
CPU只认CS:IP指向的内存单元中的内容为指令。所以要让CPU执行我们放在代码段的指令必须要将CS:IP指向所定义的代码段中的第一条指令的首地址

小结
1段地址在8086CPU的段寄存器中存放,当8086CPU要访问内存时,有段寄存器提供内存单元的段地址,8086CPU有4个段寄存器,其中CS用来存放指令的段地址
2CS存放指令的段地址,IP存放指令的偏移地址
在8086机中,任意时刻,CPU将CS:IP指向的内容当做指令来执行
3 8086CPU的工作过程
从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器
IP指向下一条指令
执行指令转到步骤1,重复这个过程
4 8086CPU提供转移指令修改CS,IP的内容

查看,修改CPU中寄存器的内容:R命令
查看内存中的内容:D命令
修改内存中的内容:E命令(可以写入数据,指令,在内存中,它们实际上没有区别)
讲内存中的内容解释为机器指令和对象汇编指令:U命令
执行CS:IP指向的内存单元处的命令:T命令
以汇编指令的形式向内存中写入指令:A命令


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值