简要说明
本人当前为一名大二学生,网络工程专业。本学期选修了《汇编语言》这门课程,作为一项作业任务,同时也是为了梳理所学知识,更好地理解和掌握汇编语言撰写了这篇博客。我所用的教材是由清华大学出版社出版的《汇编语言》第3版(图片如下),以下的内容来自于但不限于教材以及老师的课件。
转载请注明出处:https://www.cnblogs.com/kevin234/p/9709042.html
目录
计算机编程语言的演进
过程:机器语言——>汇编语言——>高级语言
- 机器语言:是机器指令(即0和1构成的二进制信息)的集合。它直接面向机器,计算机可以直接识别、执行。缺点是依赖机器硬件,难以记忆和调试。
- 汇编语言:是机器指令的助记符,便于人类记忆和使用。汇编语言的主题是汇编指令,不同的CPU有不同的汇编指令。
- 高级语言:面向程序设计人员,接近自然语言,易学易记,通用性强,不依赖于具体计算机。
实例对比三种语言:
编程完成运算c=a+b
10100000 0000000000000000 00000010 00000110 0000000000000001 10100010 0000000000000010 | mov al,a add al,b mov c,al | c=a+b |
机器语言 | 汇编语言 | c语言 |
三种语言对比:
机器语言 | 汇编语言 | 高级语言 | |
计算机能否直接识别 | 能 | 不能 | 不能 |
易用性 | 差 | 中 | 好 |
占据空间 | 小 | 小 | 大 |
执行速度 | 快 | 快 | 慢 |
用途 | 特殊 加密/解密 | 系统核心要求速度快,代码短的程序 直接操纵I/O信息安全 | 一般性系统级和应用层软件开发 |
汇编语言源程序的组成
- 汇编代码示例
1 ; This is a 8086 assemble program 2 assume cs:code, ds:data 3 data segment 4 string db 'hi~ everyone$' 5 data ends 6 code segment 7 start: mov ax,data 8 mov ds,ax 9 mov dx, offset string 10 mov ah,09h 11 int 21h 12 mov ah,4ch 13 int 21h 14 code ends 15 end start
- 汇编语言组成
-
汇编指令 (机器码的助记符,有对应的机器码)
-
伪指令 (由编译器识别,无对应的机器码)
-
其它符号 (由编译器识别,无对应的机器码)
-
汇编语言的核心是汇编指令,它决定了汇编语言的特性。
计算机硬件系统的基本结构
- 计算机系统的组成
- 相关基础知识
- 寄存器:CPU内部用于存储数据的器件。 一个CPU中有多个寄存器
- 存储器、存储单元:存储器以字节为单位被划分为若干个存储单元。 每个存储单元从0开始顺序编号。
- 指令和数据:在内存或磁盘上,指令和数据都以二进制形式存在, 在形式上没有任何区别。指令和数据是应用上的概念。
CPU对存储器的读写和总线
CPU对存储器的读写
CPU想从内存中读数据,首先要指定存储单元的地址。另外,CPU还要指明它要对哪一个器件进行操作,因为在一台微机中不止存储器这一种器件,还要指明进行哪种操作,是从中读出数据,还是向里面写入数据。
由此可见,CPU要进行数据的读写,必须和外部器件(标准的说法是芯片)进行3类信息的交互。
- 存储单元的地址(地址信息)
- 器件的选择,读或写的命令(控制信息)
- 读或写的数据
3类总线
那么CPU是通过什么将地址、数据和控制信息传到存储器芯片的呢?电子计算机能处理、传输的信息都是电信号,电信号当然由导线来传送。在计算机中专门有连接计算机和其他芯片的导线,通常称为总线。根据传送信息的不同,总线从逻辑上又分为3类:地址总线、控制总线和数据总线。
- 地址总线:其宽度决定了CPU的寻址能力
- 数据总线:其宽度决定了CPU与其他器件进行数据传送时的一次数据传送量
- 控制总线:其宽度决定了CPU对系统中其他器件的控制能力
内存地址空间
- 概念:设一个CPU的地址总线宽度为n,那么可以寻址2n个内存单元,这2n个可寻到的内存单元就构成这个CPU的内存地址空间,也称寻址空间。
- 基础知识
- 主板:在每一台PC机中,都有一个主板,主板上有核心器件和一些主要器件。 这些器件通过总线相连。根据总线上传输的信息,从逻辑上分为地址总线、数据总线、控制总线。
- 接口卡:计算机系统中,所有可以用程序控制其工作的设备,必须受到CPU的控制。 CPU对外部设备不能直接控制,如显示器、音箱、打印机等。直接控制这些设备进行工作的是插在扩展插槽上的接口卡
- 各类存储器芯片
上述那些存储器,在物理上是独立的器件,但有2点是相同的,即:①都和CPU总线相连;②CPU对它们进行读或写的时候都通过控制线发出内存读写命令;
这也就是说,CPU在操控它们的时候,把它们都当作内存来看待,把它们总的看作一个由若干存储单元组成的逻辑存储器,即我们所说的内存地址空间。