美文网首页
第一章 汇编语言的基础知识上(内容采摘于书籍)

第一章 汇编语言的基础知识上(内容采摘于书籍)

作者: 项辉henry | 来源:发表于2020-03-12 12:39 被阅读0次

    1.1机器语言

    第一代计算机语言为 机器语言 。那什么是机器语言呢?通俗一点的说法就是计算机能够读懂的语言,如下图所示:

    linux系统展示机器语言源码.jpg

    1.2汇编语言的产生

    由于机器语言存在 可读性差、难记忆、易错、可移植性差 等特点,所以人们极力想寻求一种方法来提高编程的效率。这时候汇编语言就在这种背景下产生了

    linux系统展示汇编语言源码.jpg

    汇编语言的主题是汇编指令。汇编指令和机器指令的差别在于指令的表示方法上面。汇编指令是机器指令便于书写的格式

    例如机器指令 1000100111011000 表示把寄存器Bx的内容传送到AX中。汇编指令则写成mov ax,bx。这样的写法与人类的语言接近,便于阅读和记忆。(寄存器简单来说是CPU中可以存储数据的器件,一个CPU可以有多个寄存器。AX是其中一个寄存器的代号,BX是另外一个寄存器的代号。更详细的内容本书后面内容有详细的介绍)

    #表示把寄存器Bx的内容传送到AX中
    mov ax,bx
    

    此后程序员们能够用汇编语言快乐的Coding了。可是计算机能够读懂的只有机器语言。那怎么能够让计算机读懂汇编语言呢?这时候,就需要一个能够将汇编指令转换成机器指令的翻译程序,这样的程序我们称其为 编译器。程序员用编程语言写出程序,再借助编译器将其编译为机器码,由计算机最终执行。整个过程如下图所示:

    汇编语言工作原理

    1.3汇编语言的组成

    汇编语言发展至今,有以下3类指令组成。

      1. 汇编指令:机器码的助记符,有对应的机器码。
      1. 伪指令:没有对应的机器码,由编译器执行,计算机并不执行。
      1. 其他符号:如 +、-、、/*等,由编译器识别,没有对应的机器码。

    汇编语言的核心是汇编指令,它决定了汇编语言的特性。

    1.4存储器

    CPU是计算机的核心部件,它控制整个计算机的运作并进行运算。要想让一个CPU工作,就必须向它提供指令和数据。指令和数据在存储器中存放,也就是我们平时所说的内存。在一台PC机中内存的作用仅次于CPU,离开了内存,性能再好的CPU也无法工作。好比鱼离开了水无法呼吸。
    磁盘不同于内存,磁盘上面的数据或者程序如果不读到内存中,就无法被CPU使用。要灵活的运用汇编语言编程,我们首先要了解CPU是如何从内存中读取信息,以及向内存中写入信息的。

    1.5指令和数据

    指令和数据是应用上的概念。在内存或者磁盘上,指令和数据没有任何区别,都是二进制信息。CPU在工作的时候把有的信息看做指令,有的信息看做数据,为同样的信息赋予了不同的意义。就好比扑克牌,在包装盒里面没有任何区别,在打牌的时候就有了不同的作用和意义。

    例如,内存中的二进制数字1000100111011000,计算机可以把它看作大小为89d8H的数据来处理,也可以将其看作指令来执行:

    
    // 内存中的二进制数字**1000100111011000**,计算机可以把它看作大小为89d8H的数据来处理,也可以将其看作指令来执行:
    mov ax,bx
    
    
    

    1.6存储单元

    存储器被划分成若干个存储单元,每个存储单元从0开始编号,例如一个存储器有128个存储单元,编号从0-127,如下图所示:

    那么一个存储单元能存储多少信息呢?我们知道计算机的最小信息单位是bit,也就是一个二进制位8个bit组成一个Byte,即8个二进制位。一个存储器有128个存储单元,它可以存储128个Byte。

    微机存储器的容量是以字节为最小单位来计算的。对于拥有128个存储单元的存储器,我们可以说它的容量为128个字节。对于大容量的存储器一般还用以下单位来计算容量:

    • 1KB=1024B
    • 1MB=1024KB
    • 1GB=1024MB
    • 1TB=1024GB
      磁盘的容量单位同内存的一样,实际上以上单位是微机中常用的计量单位。

    1.7CPU对存储器的读写

    以上讲到,存储器被划分成多个存储单元,存储单元从零开始顺序编号。这些编号可以看作存储单元在存储器中的地址。就像一条街,每个房子都有门票编号。

    CPU要从内存中读取数据,首先需要制定存储单元,也就是说它要先确定它要读取哪一个存储单元中的数据,好比你要找一个人,先要确定他住在哪个房子里面。

    可见,CPU要想进行数据的读写,必须和外部器件(标准的说法是芯片)进行下面3类信息的交互。

    • 存储单元的地址(地址信息)
    • 器件的选择,读或写的命令(控制信息)
    • 读或写的数据(数据信息)

    那么CPU是通过什么将地址、数据和控制信息传到存储器芯片中的呢?电子计算机能处理、传输的信号都是电信号,电信号当然要用导线传送。在计算机中专门有连接CPU和其他芯片的导线,通常称为总线。总线从物理上来讲,就是一根根导线的集合。根据传送信息的不同,总线从逻辑上又分为3类,地址总线、控制总线和数据总线

    CPU从3号单元中读取数据的全过程如下图所示:


    1 cpu通过地址总线将地址信息3发出
    2 cpu通过控制总线发出内存读取命令
    3 存储器将3号单元中的数据8通过数据线传送到cpu中

    从上面的案例中我们知道了CPU是如何进行数据的读写的。可是如何命令计算机进行数据的读写呢?要让一个计算机活着微处理器工作,应向它输入能够驱动它进行工作的电平信息(机器码)

    对于8086CPU,下面的机器码,能够完成从3号单元读取数据。
    机器码:101000010000001100000000
    含义:从3号单元读取数据送入寄存器AX

    相关文章

      网友评论

          本文标题:第一章 汇编语言的基础知识上(内容采摘于书籍)

          本文链接:https://www.haomeiwen.com/subject/mhkujhtx.html