汇编学习之路(1)CPU 数据传输

来源:互联网 发布:淘宝拍摄工作室 编辑:程序博客网 时间:2024/06/05 02:54

摘自《汇编语言——第2版·王爽》

Q:什么是机器指令?

A:机器指令是计算机能“读懂”的语言,用一系列的 0、1 来表示(如:1000100111011000  能看懂是神马鬼??)


Q:为什么会产生汇编语言?

A:汇编语言是为了代替羞涩难懂的机器语言而产生的,用一些容易记忆的汇编指令来书写程序

例如:把 寄存器 BX 的内容传送到 寄存器 AX 中

操作:寄存器 BX 的内容送到 寄存器 AX 中

机器指令:1000100111011000

汇编指令:mov  ax , bx(就是这么简洁,666)


Q:但是计算机只能读懂机器语言,如何让计算机“读懂”汇编语言?

A:这需要用到一个程序,能把汇编指令翻译成机器指令,而这个程序就叫做“编译器


汇编语言的组成:

1、汇编指令(有对应的机器码,亦是汇编语言的核心部分)

2、伪指令(没有对应的机器码,由编译器执行,计算机不执行)

3、其它符号(+、-、*、/ 由编译器识别,没有对应机器码)

                                                                                                                                                                                                     —2015/09/01

Q:指令和数据分别是什么?

A:指令和数据是应用上的概念,在内存或硬盘上,指令和数据都是二进制信息,而CPU把有的信息看作是指令,有的看作是信息

例如:二进制信息 1000100111011000,计算机可以看作是 86D8h 的数据,也可以看做是 mov  ax , bx 的指令来执行

CPU 与 存储器 的信息传递

Q:CPU 是怎样从存储器(内存或硬盘)中读写数据?

A:CPU 读写数据要与外部器件进行以下 3 步信息交互

1、获取存储单元的地址(地址信息交互)

2、获取“读”或“写”的命令(控制信息交互)

3、获取“读”或“写”的信息(数据信息交互)


Q:那么 CPU 是通过什么将地址、控制、数据信息进行传递?

A:这些信息都是电信号,通过 CPU 与其他芯片连接的导线来传递(统称为总线),在逻辑上,因功能的不同而分为:地址总线、控制总线、数据总线

以下图为 CPU 读取 3 号单元的数据


CPU 对存储器的 3 号单元进行读操作步骤(CPU 的写操作与读操作基本一致):

1、CPU 通过地址总线向 存储器 发出 “3” 信息(CPU 走向 排列整齐的存储单元列(存储器)的 “3号位置”)

2、CPU 通过控制总线向 存储器 发送 “读” 信息(要求 “3号位置” 的 ”同志 08“ 出列)

3、存储器 通过数据总线向 CPU 发送 08 的数据(存储器将出列的 ”同志 08“  发送到 CPU 的 ”家中“)

机器码:101000000000001100000000  

汇编指令:mov  ax , [3]

含义:从 3 号单元读取数据送入到 CPU 的寄存器 AX

地址总线

Q:地址总线是怎样发送信息的,对 CPU 的影响?

A:地址总线的数量决定 CPU 的寻址能力,寻址能力为 2 的 N 次方(N 为地址总线的根数)


上图传输的地址是 11 单元

数据总线

Q:数据总线怎样传输数据,对 CPU 的影响?

A:数据总线的宽度决定 CPU 一次可传送的字节,8 根数据总线一次可传送 8 位二进制,8088 的数据总线宽度是 8,8086 的数据总线宽度是 16

以下图分别是 8088 , 8086 向内存写入 89D8h 

控制总线

Q:控制总线对 CPU 的影响?

A:控制总线的宽度决定 CPU 拥有多小种对外部器件的控制能力,一根”读信号输出“的控制线负责向外发送”读“信号,一根”写信号输出“的控制线负责向外发送”写“信号

计算机内部构成

1、内存地址空间:内存单元构成 CPU 内存地址空间
2、主板:主板上的器件通过总线相连(地址、控制、数据总线)
3、接口卡:接卡口连接外部设备。CPU 直接控制接卡口,利用接卡口间接控制外部设备(CPU 向接卡口发送命令,接卡口再向外部设备发送命令)
4、存储器芯片:存储器从读写属性上分两类:1、随机存储器(RAM)可读可写,必须带点存储,关机后存储内容消失
                                                                                  2、只读存储器(ROM)只读不能写,在出厂时已焊接到硬件上,关机后内容不丢失
                                                  功能上又可分为:1、主随机存储器(内存)RAM,存放供 CPU 使用的程序和数据
                                                                                  2、装有 BIOS(Base Input/Output Style) 的 ROM。例如:主板上的 ROM 存储主板 BIOS,显卡上的 ROM 存储显卡 BIOS
                                                                                  3、接卡口上的 RAM。例如:显卡上的 RAM (显存),显卡把显存上的数据向显示器输出






以下内容摘自网络百度,作课外扩充

CPU 发展史:8086 ->80286 -> 80386 ->80486 ->PENTIUM -> ...... ->至今,后面的CPU兼容前面的功能(多了一些指令集)

CPU 组成:CPU 主要由运算器和控制器组成

                             1、运算器:主要功能是对数据的算术运算、逻辑运算、逻辑判断等操作

                             2、控制器:是计算机指令的解释和执行结构,主要功能是控制运算器、存储器、输出输入设备的协同工作


CPU 性能指标:1、时钟频率(主频):Hz/s ,单位有 Hz、MHz、GHz.。CPU 实际频率 = 主频率 * 核数 * 0.8

                              2、指令周期:执行一条指令所用的时间(一条完整的指令包括 取指令、解释指令、执行指令)

                              3、字长:运算的二进制的数据位数

                              4、CPU 缓存:安装在 CPU 内部的小存储量的快速存储器(SRAM),用于缓解 CPU 与 内存 之间读取速度的差异


CPU 寄存器:寄存器是 CPU 内部元件。1、将寄存器内的数据执行算术、逻辑运算  2、可以指向存放在寄存器中的内存地址(寻址) 3、读取数据到电脑周边设备。

                         8086 CPU 有 8 个 8 位寄存器,这些8位的寄存器分别组成 16 位的寄存器:

                         AH & AL = AX (累加寄存器,用于运算)

                         BH & BL = BX (基址寄存器,用于地址索引)

                         CH & CL = CX (计算寄存器,用于计数)

                         DH & DL = DX (数据寄存器,常用于数据传递)

                         8086 CPU 还设定 4 个段寄存器,用于保存“段”地址:

                         CS (Code Segment)代码段寄存器

                         DS (Data Segment)数据段寄存器

                         SS (Stack Segment)堆栈段寄存器

                          ES (Extra Segment)附加段寄存器

                          当执行一个程序,需要确定程序的代码、数据、堆栈在内存的位置,通过设定"段"寄存器来指向这些位置(通常将 DS 固定,根据需要修改 CS ),因为当时的寄存器只有 16 位(64KB),所以,程序和数据组合起来要限制在 DS 所指的 64 KB内。

                          8086 CPU 特殊的寄存器:

                          IP (Intruction Pointer)指令指针寄存器,与 CS 配合使用,跟踪程序的执行过程

                          SP(Stack Pointer)堆栈指针寄存器,与 SS 配合使用,可指向目前堆栈的位置

                          BP(Base Pointer)基址指针寄存器,可用作 SS 的一个相对基址位置

                          SI (Source Index)源变址寄存器,用于存放相对于 DS 段的源变址指针

                          DI (Destination Index):目的变址寄存器,用于存放相对于 ES 段的目的变址指针
                          FR (Flag Register):标志寄存器,有 9 个标志,用二进制位表示每个标志的状态

8086 地址总线有 20 位,但 8086 能做的运算仅限于 16 位数据,所以必须分段寻址,才能控制整个内存地址。
20 位地址分两部分:1、段基址(段的开始地址) 16 位二进制数后面再加 4 个二进制 0 
                                      2、偏移量,16 位二进制数,指向段基址中的任何一个地址
                                      如:(段基址)2222,(偏移量)3333,实际 20 位地址值是:25553


0 0
原创粉丝点击