zoukankan      html  css  js  c++  java
  • 小甲鱼系列→第一章.基础知识

    学习的网站

    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角度考虑问题。

  • 相关阅读:
    Linux-05安装python3,jupyter(朱皮特)
    Linux-04Vim
    calloc()的使用
    根目录挂载位置错误记录
    arm裸机通过uboot运行hello world程序测试结果
    编译Uboot——错误记录
    将make的输出重定向到文件(转)
    Linux下JDK+Eclipse安装
    使用gdb+core查看错误信息
    Ubuntu下安装tftp
  • 原文地址:https://www.cnblogs.com/love-zf/p/6146970.html
Copyright © 2011-2022 走看看