汇编语言第1章 基础知识
Posted yinghuapiaoluo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编语言第1章 基础知识相关的知识,希望对你有一定的参考价值。
*****本章学习*****
一、学习目标
? 了解机器语言->汇编语言->其他编程语言进化趋势
? 了解汇编语言源程序的组成
? 理解计算机硬件系统的基本结构
? 掌握内存地址空间
二、学习内容
1、计算机编程语言的演进
2、汇编语言源程序的组成
3、计算机硬件系统的基本结构
4、内存地址空间
~~~1、计算机编程语言的演进
机器语言->汇编语言->高级语言
? 机器语言
这样的代码晦涩难懂而且不易查错,如果程序里有一个“1”被误写为“0”,后果不堪设想
&&知识点:
(1)机器语言是机器指令的集合,机器指令是0和1构成的二进制信息
(2)机器语言直接面向机器,与机器的硬件操作一一对应,计算机可以直接识别、执行,使用机器语言可以充分发挥计算机的硬件功能
(3)缺点:依赖机器硬件,机器指令很难记忆,直接使用机器语言编制程序极易出错,并且难以调试
? 汇编语言
汇编语言和机器语言相比就直观很多,更便于记忆
汇编语言能够直接控制硬件,主要用于操作系统的核心程序段
&&知识点:
(1)汇编语言的主体是汇编指令
(2)汇编指令和机器指令的差别在于指令的表示方法上,汇编指令是机器指令的助记符
(3)不同的CPU有不同的汇编指令
eg:
操作:寄存器BX的内容送到AX中
机器指令:1000100111011000
汇编指令:mov ax,bx
? 高级语言
直观,简单,面向人类的语言,比前面两种语言都好记
已经学过或者正在学的语言有C,C++,java三种语言
高级语言的代码结果不会因为不同的CPU而产生不同的结果,具有很强的通用性
&&知识点:
(1)面向程序设计人员,接近于自然语言,使用方便,不依赖具体的计算机
(2)高级语言对计算机操作步骤进行描述有一整套标记符号、表达格式、结构及其使用的语法规则
Conclusions:
? 汇编语言改善了机器语言的不直观性
? 从目标代码的长度和程序运行时间的角度上看,汇编语言程序与机器语言程序是等效的
高级语言程序做对应的目标代码往往比机器语言程序要长得多,当然运行所需时间也更多
机器语言 vs. 汇编语言 vs. 高级语言
~~~2、汇编语言源程序的组成
? 汇编语言源程序示例
? 汇编语言的组成
(1)汇编指令:机器码的助记符,有对应的机器码
(2)伪指令:没有对应的机器码,由编译器执行,计算机并不执行
(3)其他符号:由编译器识别,没有对应的机器码
Conclusions:
汇编语言的核心是汇编指令,它决定了汇编语言的特性。
ps:第三和第四部分相对前两部分我自己不是很熟,做题的时候反应就比较慢,而且理解起来也没有前面那么容易,所以整理的时候内容比较多
~~~3、计算机硬件系统的基本结构
? Review:计算机系统的组成
冯.诺依曼体系结构
? 相关基础知识
(1)寄存器
CPU内部用于存储数据的器件
一个CPU中有多个寄存器
(2)存储器、存储单元
存储器以字节为单位被划分为若干个存储单元
每个存储单元从0开始顺序编号
存储器的容量通常用KB、MB、GB、TB、PB计
eg:
一个存储器有128个存储单元
编号从0~127
(3)指令和数据
在内存或磁盘上,指令和数据都以二进制形式存在,在形式上没有任何区别
指令和数据是应用上的概念
? 计算机硬件系统的基本结构
? 计算机的基本工作原理
? CPU对存储器的读&写
CPU要想进行数据的读写,必须和外部器件进行以下3类信息的交互:
存储单元的地址(地址信息)
器件的选择,读或写的命令(控制信息)
读或写的数据(数据信息)
~~~4、内存地址空间
? 内存地址空间的概念
内存地址空间,也称寻址空间
与CPU地址总线的宽度直接相关,表示CPU所能寻找到的最大地址空间范围
? 基础知识:主板、接口卡
a.主板
(1)在每一台PC机中,都有一个主板,主板上有核心器件和一些主要器件
(2)这些器件通过总线相连,根据总线上传输的信息,从逻辑上分为地址总线、数据总线、控制总线
b.接口卡
(1)计算机系统中,所有可以用程序控制其工作的设备,必须受到CPU的控制
(2)CPU对外部设备不能直接控制,需要通过接口卡控制
? 各类存储器芯片
? 深入理解内存地址空间
(1)各类存储器芯片的小结
这些存储器芯片在物理上是各自独立的器件
但它们都与CPU总线相连,CPU对其读或写时都通过控制线发出内存读写命令
(2)内存地址空间
CPU在操控这些独立的物理存储器时,把它们统一当作一个逻辑存储器看待,这个逻辑存储器即内存地址空间
每个物理存储器都占有一段地址空间,CPU在这个段地址空间中读写数据,实际上就是在相应的物理存储器中读写数据
不同的计算机系统的内存地址空间分配情况是不同的
ps:上面的图让我想到了实验一当中的第三题。
从地址0~9FFFF的内存单元中读取数据,实际上就是在读取主随机存储器中的数据;
向地址A0000~BFFFF的内存单元中写数据,就是向显存中写入数据,这些数据会被显示卡输出到显示器上;
而向地址C0000~FFFFF的内存单元中写入数据的操作是无效的,因为这等于改写只读存储器中的内容
conclusions:
通过这一章的学习,我初步了解的汇编语言的一些内容以及很多计算机硬件方面的知识
*****延伸阅读*****
https://www.tutorialspoint.com/assembly_programming/index.htm
看了这个网站,我现在明白了为什么学汇编语言一开始要学那些计算机的硬件组成,以及对各种编程语言之间关系的基本了解;
这些都是为了帮助我们更好地理解汇编语言并且学得更快;
一个处理器只能识别机器指令,而汇编语言的诞生让机器指令能够转变成汇编指令,就让这些指令变得容易理解;
要执行一个程序,需要系统把它从外部设备拷贝到内存,处理器才能执行这个程序;
一个处理器可以一次获取一个或多个字节
eg:一个十六进制的数0725H
这个数在内存中需要两个字节来存放,07是比较重要的一个字节,07和25存放的位置也有所不同
以上是关于汇编语言第1章 基础知识的主要内容,如果未能解决你的问题,请参考以下文章