【汇编学习笔记】绪论

目录

1 学习汇编语言的理由

1.1 这门课学什么?

2 由机器语言到汇编语言

2.1 机器语言与机器指令

2.2 汇编语言和汇编指令

 2.3 用汇编语言编写程序的工作过程

3 计算机的组成 

3.1 指令和数据的表示

3.2 计算机中的存储单元

3.3 计算机中的总线

4 内存的读写与地址空间 

4.1 CPU对存储器的读写

4.2 内存地址空间

 5 汇编语言实践环境的搭建


1 学习汇编语言的理由

  • 汇编语言仍在发挥不可替代的作用
    • 效率
      • 运行效率∶开发软件的核心部件,快速执行和实时响应。
      • 开发效率∶做合适的事,开发效率无敌
    • 底层∶计算机及外围设备的驱动程序
      • 操作系统的内核
      • 嵌入式系统:家用电器、仪器仪表、物联网....
  • 汇编语言在学习计算机中起到的独特作用——直击计算机系统的核心
    • 便于加深对计算机原理和操作系统等课程的理解。
    • 通过学习和使用汇编语言,能够感知、体会和理解机器的逻辑功能
      • 向上为理解各种软件系统的原理,打下技术理论基础
      • 向下为掌握硬件系统的原理,打下实践应用基础。
    • 学会底层的程序调试和错误分析方法。

1.1 这门课学什么?

汇编语言程序设计
定位:理解硬件结构、掌握指令集、理解程序的运行过程。
内容:8088、8086指令集与汇编语言程序设计。
本课只解决入门:降低入门难度、关注核心思维与方法。
进一步延伸:Inter80x86汇编、Linux汇编、ARM汇编

学习方法:贯穿实践的方法、学会观察机器的内部状态

2 由机器语言到汇编语言

2.1 机器语言与机器指令

机器语言是机器指令的集合。
机器指令是一台机器可以正确执行的命令。
机器指令由遗传二进制数表示,例01010000
计算机内 电平脉冲

【汇编学习笔记】绪论_第1张图片


早期程序员工作状态:将0、1数字编程的程序代码打在纸带或卡片上,1打孔,0不打孔,再将程序通过纸带机或卡片机输入计算机,进行运算。

例:计算s = 768 + 12288 - 1280的程序
机器码∶  101100000000000000000011
                000001010000000000110000
                001011010000000000000101

 如果打错了,找程序错哪儿了很麻烦。

2.2 汇编语言和汇编指令

汇编语言的主体是汇编指令。
汇编指令和机器指令的差别在于指令的表示方法上
汇编指令是机器指令便于记忆的书写格式。
汇编指令是机器指令的助记符

机器指令:1000100111011000
操作:将寄存器BX的内容送到AX中
汇编指令:MOV AX BX
寄存器:CPU中可以存储数据的器件,一个CPU有多个寄存器。

【汇编学习笔记】绪论_第2张图片

 2.3 用汇编语言编写程序的工作过程

【汇编学习笔记】绪论_第3张图片

3 计算机的组成 

主板上有:

  • CPU
  • 总线
  • 内存(条) :
  • 拓展槽(接外部设备)

【汇编学习笔记】绪论_第4张图片

  • CPU是计算机的核心部件,它控制整个计算机的运作并进行运算。要想让一个CPU工作,就必须向它提供指令和数据。
  • 指令和数据在存储器(内存)中存放。(可放外存,但CPU工作时得从内存读取)
  • 离开了内存,性能再好的CPU也无法工作。

3.1 指令和数据的表示

  • 计算机中的数据和指令,存储在内存或磁盘上。
  • 数据和指令,都是二进制信息。
  • 问题:二进制信息1000100111011000是数据,还是指令?(看CPU怎么决定)
    • 1000100111011000 -> 89D8H (数据)
    • 1000100111011000 -> MOV AX,BX (程序)
  • 数据如何表示?(写程序如何去做)
    • 1000100110111000B(二进制)
    • 89D8H(十六进制)
    • 104730O(八进制)
    • 35288D(十进制)
  • 数据量∶B、KB、MB、GB、TB...

3.2 计算机中的存储单元

存储器被划分为若干个存储单元,每个存储单元从0开始顺序编号;

例如:一个存储器有128个存储单元,编号从0~127
实际:内存空间很“大”,8086有20条数据线,寻址空间2^20,为1MB。
2^20=1048576,FFFFFH=1048575O

【汇编学习笔记】绪论_第5张图片

3.3 计算机中的总线

在计算机中专门有连接CPU和其他芯片的导线,常称为总线。
物理上:一根根导线的集合;
逻辑上划分为:地址总线、数据总线、控制总线

地址总线:

  • CPU是通过地址总线来指定存储单元的。
  • 地址总线宽度,决定了可寻址的存储单元大小。
  • N根地址总线(宽度为N ) ,对应寻址空间2N。

【汇编学习笔记】绪论_第6张图片【汇编学习笔记】绪论_第7张图片【汇编学习笔记】绪论_第8张图片【汇编学习笔记】绪论_第9张图片

数据总线:

  • CPU与内存或其它器件之间的数据传送是通过数据总线来进行的。
  • 数据总线的宽度决定了CPU和外界的数据传送速度。
  • 例:向内存中写入数据89D8H时的数据传送

控制总线:

  • CPU通过控制总线对外部器件进行控制
  • 控制总线是一些不同控制线的集合
  • 控制总线宽度决定了CPU对外部器件的控制能力。

 x86CPU性能一览

CPU

地址总线宽度

寻址能力

数据总线宽度

一次传送数据

读取1KB数据要读__次

8080

16

640KB

8

1B

1024

8088

20

1MB

8

1B

1024

8086

20

1MB

16

2B

512

80286

24

16MB

16

2B

512

80386

32

4GB

32

4B

256

4 内存的读写与地址空间 

4.1 CPU对存储器的读写

CPU要想进行数据的读写,必须和外部器件进行三类信息的交互:

  • (地址信息):存储单元的地址。(到哪儿去操作数据)
  • (控制信息):器件的选择,读或写命令(寄存器/内存储空间/端口?;读/写?)
  • (数据信息):读或写的数据

演示:

  • 机器码:101000000000001100000000
  • 16进制:A00300
  • 汇编指令:MOV AL,[3]
  • 含义:从3号单元读取数据送入寄存器AL

【汇编学习笔记】绪论_第10张图片

CPU通过地址线发出3给内存,内存找到3号单位的位置,然后CPU通过控制线发读的命令给内存,最后,内存通过数据线把3号单元的内容发给CPU。

4.2 内存地址空间

  • 什么是内存地址空间
    • CPU地址总线宽度为N,寻址空间为2B
    • 8086CPU的地址总线宽度为20,那么可以寻址1MB个内存单元,其内存地址空间为1MB。
  • 从CPU角度看地址空间分配:
    • RAM:主板上的RAM、扩展槽上的RAM(例显卡)
    • ROM:系统BIOS、接口卡上的BIOS

【汇编学习笔记】绪论_第11张图片

 将各类存储器看做一个逻辑存储器——同一编址

所有的物理存储器被看做一个由若干存储单元组成的逻辑存储器。
每隔物理存储器在这个逻辑存储器中占有一个地址段,即一段地址空间。
CPU在这段地址空间中读写数据,实际上就是再相对应的物理存储器中读写数据。

 以8086PC机为例,内存地址空间的分配方案:【汇编学习笔记】绪论_第12张图片

 5 汇编语言实践环境的搭建

实践方案——DOS环境

DOS操作系统——MS DOS方式——DOS虚拟机——DOS模拟器
具体见:6 汇编语言实践环境搭建_哔哩哔哩_bilibili

网课:通俗易懂的汇编语言(王爽老师的书)

你可能感兴趣的:(汇编学习笔记,汇编,学习,笔记)