1.1机器语言
*机器语言是机器指令的集合
*机器指令:就是一台机器可以正确执行的命令
指令:010100011110001(PUSH AX)
电平脉冲:
1.2汇编语言的产生
*汇编语言的主体是汇编指令
*汇编指令和机器指令的差别在于指令的表示方法上。汇编指令是机器指令便于记忆的书写格式。
*汇编指令是机器指令的助记符。
由于机器指令的太不友好,所以汇编语言应运而生。
*与人类语言接近,便于阅读和记忆。
*Demo
汇编指令:MOV AX,BX
解析:是将寄存器BX中内容移到寄存器AX中,即将後面位置的内容放到前面位置中去。
*寄存器:CPU中可以存储数据的器件,一个CPU中有多个寄存器。
*程序猿(编写)→汇编指令→编译器→机器码(机器就可以读懂了)
*可以写一个最简单的C代码,然后反编译为汇编语言。(在vs中编译了一个.exe文件,想用Reflector反编译一下,结果提示:C.exe' is not a .NET module….)
*HA_OllyDBG,可以反汇编的一个软件,可以将.exe反汇编为汇编语言,可以玩下。本来还以为打开的.exe是安装完之后的运行文件,原来是安装包也可以。
1.3汇编语言的组成
汇编语言由一下3类组成
*1、汇编指令(机器码的助记符)
*2、伪指令(由编译器执行)
*3、其它符号(由编译器识别)
其实上面的2、3是可以归为一类的。
《编码的奥秘》?
汇编语言的核心是汇编指令,它决定了汇编语言的特性。
1.4存储器
*CPU是计算机的核心部件,它控制整个计算机的运作并进行运算,要想让一个CPU工作,就必须向它提供指令和数据
*指令和数据在存储器中存放,也就是平时所说的内存。
*PC中内存的作用仅次于CPU
*离开了内存,性能再好的CPU也无法工作
*磁盘不同于内存,磁盘上的数据或程序如果不读到内存中,就无法被CPU使用。
(比如,一个游戏,就需要想将游戏需要的程序加载到内存中进行让人家Play)
1.5指令和数据
*指令和数据是应用上的概念
*在内存或磁盘上,指令和数据没有任何区别,都是二进制信息。
比如-二进制信息:1000 1001 1101 1000
数据→89D8H(0x89D8)
指令→MOV AX,BX
要二进制信息表示数据还是指令,人来确定,而不是电脑确定。
1.6存储单元
*存储器被划分为若干个存储单元,每个存储单元从0开始顺序编号
Demo、一个存储器有128个存储单元;编号从0~127.
*对于大容量的存储器一般还用以下单位来计量容量(以下用B来代表Byte)
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
*磁盘上的容量单位同内存的一样,实际上以上的单位是微机中常用的计量单位。
1.7CPU对存储器的读写
*CPU要想进行数据的读写,必须和外部的器件(标准的说法是芯片)进行三类信息的交互:
→存储单元的地址(地址信息)
→器件的选择,读或写命令(控制信息)
→读或写的数据(数据信息)
*CPU通过什么将地址、数据和控制信息传到存储芯片中的呢?
→计算机能处理、传输的信息都是电信号,电信号当然要用导线传送。
*在计算机中专门有链接CPU和其它芯片的导线,通常称为总线。
→物理上:一根根导线的集合
→逻辑上划分为:1、地址总线2、数据总线3、控制总线
*总线在逻辑上的划分的图示↓
Flash文件:读写flash…
*对于8086CPU,下面的机器码能够完成从3号单元读数据:
(为什么都喜欢分析8060CPU,因为经典啊,并且和最新的也差别不大)
→机器码:101000000000001100000000
→含义:从3号单元读取数据送入寄存器AX
→CPU接收这条机器码后将完成上面所述的读写工作
1.8地址总线
*CPU是通过地址总线来指定存储单元的。
*地址总线上能传送多少个不同的信息,CPU就可以对多少个存储单元进行寻址。(可以简单理解为64位就是有64条线。)
**64位的系统速度就是64位的?答:不是。首先CPU要是64位,2.系统64位,3.软件是64位的。
**地址总线如何发送地址信息的?
*一根CPU有N根地址总线,则可以说这个CPU得地址总线的宽度为N
*这样的CPU最多可以寻找2的N次方个内存单元。
1.9数据总线
*CPU与内存或者其它器件之间的数据传送是通过数据总线来进行的。
*数据总线的宽度决定了CPU和外界的数据传送速度。
**不同CPU向内存中写入数据89D8H(其实还是习惯这么写0x89D8)的情况(区别不过是数据总线的宽度8位和16位)
→8088CPU数据总线上的数据传送情况
→8086CPU数据总线上的数据传送情况(16位的数据宽度)
1.10控制总线
*CPU对外部器件的控制是通过控制总线来进行的。在这里控制总线是个总称,控制总线是一些不同控制线的集合。
*有多少根控制总线,就意外着CPU提供了对外部器件的多少控制。所以,控制总线的宽度决定了CPU对外部器件的控制能力。
*控制总线发送控制信息
*前面所讲的内存读或写命令是由几根控制线综合发出的:
→其中有一根名为读信号输出控制线负责由CPU向外传送读信号,CPU向该控制线上输出低电平表示将要读取数据;
→有一根名为写信号输出控制线负责由CPU向外传送写信号。
*****小结
→1.汇编指令是机器指令的助记符,同机器指令一一对应;
→2.每一种CPU都有自己的汇编指令集;
→3.CPU可以直接使用的信息在存储器中存放;
→4.在存储器中指令和数据没有任何区别,都是二进制信息。
→存储单元从〇开始顺序编号;
→一个存储单元可以存储8个bit(用作单位写成’b’),即8位二进制数
→1B = 8b
→每个CPU都由许多管脚,这些管脚 和总线相连。也可以说,这些管脚引出总线。一个CPU可以引出三种总线的宽度标志了这个CPU的不同方面的性能:1、地址总线的宽度决定了CPU的寻址能力;2、数据总线的宽度决定了CPU与其它器件进行数据传送时的一次数据传送量;3、控制总线宽度决定了CPU对系统中其它器件的控制能力。
编辑时间:二〇一六年十二月十二日 00:09:20
这周又过去了、离过年又近了。
看视频有快有慢,有的需要快进来进行看,有的需要一节课中的一段来循环来看。
检测点功课添加时间:二〇一六年十二月十二日 21:41:17
检测点1.1
1、一个CPU的寻址能力为8KB,那么它的地址总线宽度为(13)
知识点:一个CPU的地址总线为N,那么这个CPU最多可以寻找2的N次方个内存单元;微机存储器的存储单元可以存储一个Byte,即8个二进制位。所以:2的N次方=8KB,2的N次方=81024=(2三次方)(2的10次方),N为13
纠错:我开始填的3!!!把Byte和KB搞错了!!!
2、1KB的存储器有(1)个存储单元。存储单元的编号从(0)到(0)。
纠错:我开始填的1!!!编号从0到0!!!把Byte和KB搞错了!!!
3、1KB的存储器可以存储(2^13)个bit,(1024)个Byte。
4、1GB、1MB、1KB分别为(10243)(10242)(1024)个Byte。
5、8080、8088、80286、80386的地址总线宽度分别为16根、20根、24根、32根,则它们的寻址能力分别为:(64)KB、(1)MB、(16)MB、(4)GB。
6、8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根,则它们一次可以传送的数据为:(1)B、(1)B、(2)B、(2)B、(4)B。
7、从内存中读取1024字节的数据,8086至少要读(520)次,80386至少要读(256)次。
8、在存储器中,数据和程序以(二进制)形式存放。
1.11内存地址空间(概述)
*一个CPU的地址线宽度为10,那么可以寻址1024个内存单元,这1024个可寻到的内存单元就构成这个CPU的内存地址空间。
1.12主板
*每一台PC机中都由一个主板,主板上有核心器件和一些主要器件。
*这些器件通过总线(地址、数据、控制总线)相连。
1.13接口卡
计算机系统中,所有可用程序控制其工作的设备,必须受到CPU的 控制。
CPU对外部设备不能直接控制,如显示器、音响、打印机等。直接控制这些设备进行工作的是插在扩展插槽上的接口卡。
1.14各类存储器芯片
*从读写属性上看分为两类:随机存储器RAM、只读存储器ROM
*只读存储器ROM:装有BIOS
*BIOS(Basic Input/Output System),即基本输入输出系统。BIOS是由主板和各类接口卡(如:显卡、网卡等)厂商提供的软件系统,可以通过它利用该硬件设备进行最基本的输入输出。在主板和某些接口卡上插有存储相应BIOS的ROM。
*从功能和连接上分类:随机存储器RAM、装有BIOS的ROM、接口卡上的RAM;
*PC机中各类存储器的逻辑连接情况
1.15内存地址空间
*将各类存储器看作一个逻辑存储器
→所有的物理存储器被看作一个由若干存储单元组成的逻辑存储器;
→每个物理存储器在这个逻辑中占有一个地址段,即一段地址空间;
→CPU在这段地址空间中读写数据,实际上就是在相对应的物理存储器中读写数据。
*不同的计算机系统的内存地址空间分配情况是不同的。
*8086PC内存地址空间分配的基本情况↓
*最终运行程序的是CPU,我们用汇编编程的时候,必须要从CPU角度考虑问题。