从0开始的汇编语言
本文是总结自王爽老师的《汇编语言》第四版
加上部分笔者的个人理解,如有错误,请及时指出
汇编语言是直接在硬件之上的工作编程语言,第一次,我们要先简单了解下硬件系统的结构,才能有效的使用汇编语言进行编程。
1.从机器语言到汇编
简单来说,机器语言是机器指令的集合,即二进制代码,计算机将二进制代码转换为一列高低电平,使电子元件受到驱动,进行运算。
在这里插入图片描述
由此可见,机器语言不便于我们阅读和分析,由此产生了汇编语言
相较于机器语言,汇编语言显得简单易读,因此,我们便可以用汇编语言写程序,通过编译器转换为机器码,再交给计算机运行。
2.学习汇编语言的理由
效率
运行效率:开发软件的核心部件,快速执行和实时响应。
开发效率∶做合适的事,开发效率无敌
底层︰计算机及外围设备的驱动程序操作系统的内核
嵌入式系统:家用电器、仪器仪表、物联网…
汇编语言在学习计算机中起到的独特作用——直击计算机系统的核心
便于加深对计算机原理和操作系统等课程的理解。
通过学习和使用汇编语言,能够感知、体会和理解机器的逻辑功能
向上为理解各种软件系统的原理,打下技术理论基础
向下为掌握硬件系统的原理,打下实践应用基础。学会底层的程序调试和错误分析方法。
3.汇编语言的组成
汇编语言发展至今,有以下3类指令组成。
(1)汇编指令:机器码的助记符,有对应的机器码。
(2)伪指令:没有对应的机器码,由编译器执行,计算机并不执行
(3)其他符号:如+、一、*、/等,由编译器识别,没有对应的机器码。
4.存储器
CPU是计算机的核心部件,它控制整个计算机的运作并进行运算。要想让一个CPU工作,就必须向它提供指令和数据。指令和数据在存储器中存放,也就是我们平时所说的内存。在一台PC 机中内存的作用仅次于CPU。离开了内存,性能再好的CPU也无法工作。磁盘不同于内存,磁盘上的数据或程序如果不读到内存中,就无法被CPU使用。
要灵活地利用汇编语言编程,我们首先要了解CPU是如何从内存中读取信息,以及向内存中写入信息的。
5.存储单元
一个二进制位为1bit——即0或1
8个bit组成1Byte(字节)
1KB=1024B
1MB=1024KB
1GB=1024MB
1TB=1024GB
6.CPU对存储器的读写
CPU对存储器的读写,即CPU与存储器的信息交互,一般为以下三种
存储单元的地址(地址信息);
器件的选择,读或写的命令(控制信息);
读或写的数据(数据信息)。
电子计算机所处理、传输的都是电信号,故需要导线传送。计算机中专门连接CPU和其他芯片的导线,通常称为总线,总线从逻辑上分为3类——地址总线、控制总线、数据总线。
地址总线
CPU通过地址总线来指定存储器单元,可见地址总线能传送多少不同的信息,CPU就可以对多少个存储单元进行寻址。
假设一CPU有10根地址总线,一根导线有高低电平两种状态(高电平或低电平(1或0)),即每次可以传送2^10种状态,也就是最小数为0,最大为1023。
即,一个CPU中有N根地址先,则说这个CPU的地址总线宽度为N,可以寻找2^N个内存单元。
数据总线
与地址总线类似,也由导线的高低电平传输数据,即8根数据总线一次可传输8位的二进制数据(1字节),16根可传输2字节。
例:8088CPU数据总线宽度为8, 8086宽度为16,则他们同样传输一个16进制数据,情况不同
控制总线
CPU对外部器件的控制是通过控制总线来进行的。
在这里控制总线是个总称,控制总线是一些不同控制线的集合。有多少根控制总线,就意味着CPU提供了对外部器件的多少种控制。所以,控制总线的宽度决定了CPU对外部器件的控制能力。
7.各类存储器
一台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,一般称为显存。显示卡随时将显存中的数据向显示器上输出。换句话说,我们将需要显示的内容写入显存,就会出现在显示器上。
以上存储器在以下两点上相同
1.都和CPU的总线相连。
输出数据进行暂时存储,在其上装有RAM。最典型的是显示卡上的 RAM,一般称为显存。显示卡随时将显存中的数据向显示器上输出。换句话说,我们将需要显示的内容写入显存,就会出现在显示器上。
以上存储器在以下两点上相同
1.都和CPU的总线相连。
2.CPU对他们进行读或写的时候都通过控制线发出内存读写指令