机器只认识0和1
cpu,中央处理单元,直接或间接控制芯片、器件、设备组成的计算机(pc机)
每种微处理器由于硬件设计和内部结构不同,所以用不同的电平脉冲控制,所以每种微处理器有自己独特的机器指令集,也就是机器语言
汇编指令就是将人难以看懂的机器语言转换成了人更容易看懂的语言
将汇编指令翻译成机器语言的工具叫编译器
其他语言〈——〉汇编语言〈——〉机器语言
例如:8086cpu中
操作:机存器BX的内容送到AX中
机器指令:1000100111011000
汇编指令:mov ax,bx
寄存器是cpu内部存放数据的器件,一个cpu中有多个寄存器,例如8086cpu中有14个寄存器,AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW
汇编指令是机器码的助记器,有对应机器码
伪指令只有编译器能看懂,没有对应机器码
其他指令,如+、-、*、/等,只有编译器能看懂,没有对应机器码
要让cpu工作,需要给它提供指令和数据,指令和数据在存储器中存放,就是我们常说的内存
内存或磁盘中的数据都是二进制的,但是当它的类型不同,它的意义就不同,例如1000100111011000当作为数据时就看作89D8H,当它作为程序是就看作mov ax,bx
存储器被分为若干个单元,并从0开始排序,微机存储器每个单元存一个byte,就是8bit
1KB=1024B 1MB=1024KB 1GB=1024MB
1TB=1024GB
cpu要想读写数据需要满足三个方面:
1、存储单元的地址(地址信息)
2、器件的选择,读或写的命令(控制信息)
3、读或写的信息(数据信息)
cpu通过总线与外部芯片建立连接,这些总线在逻辑上分三类地址总线、控制总线、数据总线
地址总线:cpu将地址信息通过地址总线发出,找到对应的存储单元
控制总线:cpu通过控制总线发出读或写指令
数据总线:cpu通过数据总线传送数据信息,或目标存储单元向cpu传送数据信息
现假设cpu有十根地址总线,一根导线可以传送的稳定状态只有两种,低电平或高电平,用二进制表示就是0或1,10根导线可以传送10位二进制数,也就是说可以传送2的10次方个不同的地址,这时就说地址总线的宽度是10。cpu地址总线的宽度决定了cpu的寻址能力。
cpu8根数据总线一次性可以传送一个8位二进制数,16根数据总线一次可传送一个16位二进制数。若传送89D8,8088cpu地址总线宽度为8,明显89D8太大,不可能一次传送出去,这时8088cpu将89D8分成两部分D8和89依次发出去;8086cpu地址总线宽度为16,可以一次性把89D8传送出去。cpu数据总线的宽度就决定了传送数据的速度。
cpu对外部器件的控制依靠控制总线,控制总线由几根不同的控制线组成,有传送读信号的还有传送写信号的,控制总线的数量代表对外部器件有多少种控制。
每台PC机有一个主板,主板上有核心器件和一些主要器件这些器件通过总线相连,这些器件有cpu、存储器、外围芯片组、扩展插槽等,扩展插槽上一般插有PAM内存条和各类接口卡。
cpu不能直接控制外部设备,而是通过接口卡间接控制外部设备
一台PC机上有多个存储器,这些存储器从物理连接上看是独立的,从读写属性上看,分为随机存储器(RAM)和只读存储器(ROM),随机存储器可读可写,但必须带电存储, 关机后存储的内容丢失; 只读存储器只能读取不能写入,关机后其中的内容不丢失。 这些存储器从功能和连接上又可分为以下几类。
随机存储器
用于存放供CPU 使用的绝大部分程序和数据, 主随机存储器一般由两个位置上的RAM组成,装在主板上RAM 和插在扩展插槽上的RAM。
装有BIOS(Basic Input/Output System, 基本输入/输出系统)的ROM BIOS是由主板和各类接口卡(如显卡、 网卡等)厂商提供的软件系统, 可以通过它利用该硬件设备进行最基本的输入输出。 在主板和某些接口卡上插有存储相应BIOS的ROM。例如,主板上的ROM 中存储着主板的BIOS(通常称为系统BIOS);显卡上ROM中存储着显卡的 BIOS;如果网卡上装有ROM,那其中就可以存储网卡的BIOS。
接口卡上的RAM 某些接口卡需要对大批量输入、 输出数据进行暂时存储,在其上装有 RAM。最典型的是显示卡上的 RAM,一般称为显存。 显示卡将显存中的数据向显示器上输出。换句话说, 我们将需要显示的内容写入显存, 就会出现在显示器上。
cpu地址总线可以寻到的内存单元构成cpu的内存地址空间
8086cpu地址总线宽度为20,则内存地址空间大小为1MB,其空间分配如图所示
***一个典型的cpu由运算器、控制器、寄存器等器件组成,这些器件靠内部总线相连,在cpu中
- 运算器进行信息处理
- 寄存器进行信息储存
- 控制器控制各种器件进行工作
- 内部总线连接各种总线,在它们之间进行信息传送
8086cpu有14个寄存器且都是16位的,其中AX、BX、CX、DX是通用寄存器,可分为两个独立的8位存储器使用,如AX分为高八位AH、低八位AL
一个字节由八位组成,一个字由两个字节组成,这两个字节称为高位字节和低位字节
用汇编指令控制cpu,在写一条汇编指令或一个寄存器的名称时不区分大小写。如:mov ax, 18 和 MOV AX, 18的含义相同;bx和BX的含义相同。
程序段中的最后一条指令 add ax, bx,在执行前ax和bx中的数据都为 8226H,相加后所得的值为:1044CH,但是ax为16 位寄存器,只能存放4 位十六进制的数据,所以最高位的1不能在ax 中保存,ax中的数据为:044CH。
程序段中的最后一条指令 add al, 93H,在执行前,al中的数据为 C5H,相加后所得的值为:158H,但是al为8位寄存器,只能存放两位十六进制的数据,所以最高位的1丢失,ax 中的数据为:0058H。(这里的丢失,指的是进位值不能在8 位寄存器中保存,但是CPU 并不真的丢弃这个进位值)
注意,此时al 是作为一个独立的8位寄存器来使用的,和ah 没有关系,CPU 在执行这条指令时认为 ah和 al 是两个不相关的寄存器。不要错误地认为,诸如 add al, 93H 的指令产生的进位会存储在 ah 中,add al, 93H 进行的是8位运算。在进行数据传送或运算时,要注意指令的两个操作对象的位数应当是一致的。
每一个内存单元都有唯一的地址,称为物理地址
16 位结构(16 位机、字长为 16 位等常见说法,与16 位结构的含义相同)描述了一个CPU具有下面几方面的结构特性。
- 运算器一次最多可以处理16位的数据;
- 寄存器的最大宽度为16位
- 寄存器和运算器之间的通路为16位。
8086cpu内部是16位结构,外部总线是20位结构,这是就需要采用一种在内部用两个16位地址合成的方法来形成一个20位的物理地址
地址加法器采用物理地址一段地址×16(基础地址)+偏移地址的方法用段地址和偏移地址合成物理地址。例如,8086CPU 要访问地址为 123C8H的内存单元,此时,地址加法器如图所示