汇编语言第一章------汇编语言基础

汇编语言基础

  • 一、个人计算机系统概述
    • 1.1、计算机的硬件
    • 1.2、计算机的软件
    • 1.3、程序设计语言
  • 二、8086处理器
    • 2.1、功能结构
    • 2.2、8086的寄存器
      • 1、存储器从应用角度分类
      • 2、可编程寄存器详细分类
      • 3、8086寄存器组成及其详细介绍
    • 2.3、8086的存储组织
      • 1、存储单元和存储单位
      • 2、物理地址和逻辑地址(重点)
      • 3、存储器的分段管理
  • 三、汇编语言程序的格式
    • 3.1、指令代码格式
    • 3.2、语句格式
      • 1、标号和名字
      • 2、助记符
      • 3、操作数和参数
      • 4、注释和分隔符
    • 3.3、源程序框架
  • 四、汇编语言程序的开发
    • 4.1、开发环境

本章节任务:
①、了解软硬件开发环境
②、熟悉通用寄存器和存储器组织
③、掌握汇编语言的语句格式、程序框架和开发方法

一、个人计算机系统概述

计算机系统
软件
硬件
物理设备
程序和文档

计算机系统组成图
汇编语言第一章------汇编语言基础_第1张图片

1.1、计算机的硬件

冯·诺依曼计算机由五大组成部分组成,结构如下:

诺依曼计算机
控制器
运算器
存储器
输入设备
输出设备

现代计算机很多方面都对冯·诺依曼计算机进行了改进,改进结构如下:

现代计算机
处理器
存储系统
输入输出系统

与此同时,现代计算机广泛采取总线结构,总线连接系统中的各个部分,使得计算机系统组合更加灵活,扩展更加方便。
汇编语言第一章------汇编语言基础_第2张图片
下面详细介绍下处理器,存储器,外设和系统总线。
①、处理器
处理器是计算机的运算和控制核心部件,在微机中又称为微处理器。

微型计算机简称“微型机”、“微机”,由于其具备人脑的某些功能,所以也称其为“微电脑”。微型计算机是由大规模集成电路组成的、体积较小的电子计算机。

②、存储器
存储器是计算机的记忆部件,用来存放程序和数据。存储系统的组成如下:

存储系统
处理器内部的寄存器
高速缓冲寄存器
主存储器
辅助存储器

③、外设
外部设备是指计算机上配备的输入设备和输出设备,作用是让用户与计算机实现更好的交互,比如说鼠标、键盘、屏幕,让打游戏,追剧成为可能。
④、系统总线
总线(Bus)是用于多个部件相互连接,传递信息的公共通道,其实就是一组公用的导线。对于汇编语言程序员而言,处理器,存储器和外设依次被抽象为寄存器,存储器地址,输入输出地址

1.2、计算机的软件

作用
介绍
软件
系统软件
应用软件
简化使用,维护,管理计算机系统
解决某个问题的程序和文档

汇编语言第一章------汇编语言基础_第3张图片

1.3、程序设计语言

程序设计语言
机器语言
汇编语言
高级语言
形成目标程序
底层的计算机语言,对应机器指令
将机器指令用助记符号代替而形成的一种语言
本质上是机器语言
需要汇编程序汇编翻译
面向问题的程序设计语言
需要编译或解释后执行

汇编语言与该机语言进行对比:

汇编语言 高级语言
汇编语言与处理器密切相关,可移植性较差 高级语言与具体计算机无关,便于移植
汇编语言功能有限、涉及硬件细节,编写繁琐困难 高级语言功能强大,语法自然,容易掌握和应用
汇编语言的优势:直接、有效地控制硬件,容易产生运行速度快、指令序列短小的高效率目标程序 高级语言不易直接控制计算机的各种操作,编译程序产生的目标程序往往比较庞大

二、8086处理器

2.1、功能结构

汇编语言第一章------汇编语言基础_第4张图片
如上图:
虚线右部分是总线接口单元BIU:

总线接口单元
指令队列
指令指针
段寄存器
地址加法器
总线控制逻辑
6字节指令寄存器
IP:图第五个
CD,DS,SS,ES:图前四个

2.2、8086的寄存器

1、存储器从应用角度分类

处理器内部需要高速的存储单元,用于暂时存放程序执行过程中的代码和数据,这些存储单元就是寄存器。

特点
特点
分类
分类
特点
特点
寄存器应用角度分类
透明寄存器
可编程寄存器
不能通过指令直接编程控制
具有引用名称,供编程使用
通用寄存器
专用寄存器
在处理器中数量比较多,使用频率高,用途多
只用于特定的目的

2、可编程寄存器详细分类

汇编语言第一章------汇编语言基础_第5张图片

3、8086寄存器组成及其详细介绍

8086的寄存器
8个16位通用寄存器
4个16位段寄存器
1个16位标志寄存器
1个16位指令指针寄存器

①、通用寄存器
通用寄存器一班指处理器最常使用的整数通用寄存器,可用来保存整数数据,地址等。
8086处理器的8个16位通用寄存器分别被命名为:AX,BX,CX,DX,SI,DI,BP和SP。可以进一步分为高字节部分和低字节部分,形成8个8位通用寄存器AH和AL,BH和BL,CH和CL,DH和DL,这些既是一个整体,又可独立使用。
汇编语言第一章------汇编语言基础_第6张图片
每个寄存器有特定功能,如下所示:

名称 中文名称 作用
AX 累加器 使用频率最高,用于算数与逻辑运算以及和外设传送信息等功能的实现
BX 基址寄存器 常用做存放存储器地址,以方便指向变量或数组中的元素
CX 计数器 常用作循环操作等指令中的计数器
DX 数据存储器 用来存放数据,在输入输出指令存放外设端口地址
SI 源变址寄存器 用于指向字符串或数组的源操作数
DI 目的变址寄存器 用于指向字符串或数组的目的操作数
BP 基址指针寄存器 默认情况下指向程序程序堆栈区域的数据,主要用于在子程序中访问通过堆栈传递的参数和局部变量
SP 堆栈指针寄存器 专用于指向程序堆栈区域顶部的数据,在涉及堆栈操作的指令中会自动增加或减少。

源操作数
被传送或参与运算的操作数
目的操作数
保存传送结果或运算结果的操作数
②、指令指针寄存器
作用:保存将要执行的指令在主存的存储器地址
指令指针寄存器IP是一个专用寄存器,具有自动增量的能力,指向下一条指令。
分支、调用等操作时执行控制转移指令修改,引起程序转移到指定的指令执行。
出现中断或异常时被处理器赋值而相应改变。
汇编语言第一章------汇编语言基础_第7张图片

③、标志寄存器

标志
用来反应指令执行结果或控制指令执行形式
用一个或多个二进制位表示一种标志
用0和1的不同组合表达标志的不同状态
状态标志
控制标志
记录指令执行结果的辅助信息
控制处理器执行指令的方式

④、段寄存器
段寄存器的作用就是将相关代码放在一起,将相关数据放在一起。
有三类基本段,分别是代码段,数据段和堆栈段。

段的分类
代码段
数据段
堆栈段
存放程序中指令代码
存放当前运行程序所用的数据
指明程序使用的堆栈区域

汇编语言第一章------汇编语言基础_第8张图片

2.3、8086的存储组织

1、存储单元和存储单位

主存储器比较大,划分为很多小的单元,称为存储单元,给每个存储单元分配一个编号,叫做存储单元地址。每个存储单元以字节为基本存储单位,即字节编址,一个字节(Byte)等于8个二进制位(Bit)
二进制位是计算机存储信息的最小单位(常用单位),一个二进制位可以表示0和1一位二进制数
8086是16位结构的处理器,也就是说字长为16位,称16个二进制位为一个字(两个字节)。

字节是寻址的最小单位
内存中两个紧挨着的字节,它们的内存地址差1。但是一个字节内的位,就没有地址的概念。你当然也可以定义一种计算机,每个位对应一个内存地址,但是在现代太另类了,估计没有人为你的计算机编程。
字是计算机一次处理数据的最大单位。
1、 CPU的寄存器的长度是一个字;
2、CPU一个指令最多从内存中读取的数据量就是一个字;

16位(2个字节)构成一个字(Word)32位(4个字节)构成一个双字(Double Word)如下图
汇编语言第一章------汇编语言基础_第9张图片

二进制数据右边最低位称为最低有效位LSB(D0),左边最高位称为最高有效位MSB,如下图所示。
汇编语言第一章------汇编语言基础_第10张图片

2、物理地址和逻辑地址(重点)

地址的分类:
物理地址
逻辑地址
处理器对外连接的物理存储器使用
在处理器内部以及程序员编程时采用
段基地址
在主存中的起始地址
偏移地址
距离段基地址的位移量

某个存储单元可以有多个逻辑地址,但只有一个唯一的物理地址。
汇编语言第一章------汇编语言基础_第11张图片
一个二进制位有0和1两种状态,那么N位二进制数就有2的n次方个不同的编码,8086有20位地址总线,也就是有20个数字信号访问存储器,8086支持2的20个(1M)存储单元,其物理地址空间为0~2^20-1.地址编号习惯用十六进制的数来表示,用五位16进制的数表示为: 00000H ~ FFFFH,如下图:
汇编语言第一章------汇编语言基础_第12张图片
因为8086处理器只有16位寄存器,不可以保存完整的20位物理地址,最多只能表示从0000H~FFFH,所以引入逻辑地址的概念,逻辑地址又包括段基地址和偏移地址,都是用16位表示的,上面已经介绍了,可以通过逻辑地址转换成物理地址。
转换规则:
物理地址=段地址×16+偏移地址
也就是说段地址左移二进制四位(十六进制一位),然后加上偏移地址就得到物理地址了,如下图:
汇编语言第一章------汇编语言基础_第13张图片
同一个物理地址可以有多个逻辑地址。
基本段的逻辑地址如下所示:

基本段
代码段
数据段
堆栈段
段基地址:代码段寄存器CS指示-
偏移地址:指令指针寄存器IP保存
段基地址:数据段寄存器DS指示,有时也用附加段寄存器ES指示
偏移地址:由各种存储器寻址方式计算出有效地址
段基地址:堆栈段寄存器SS指示-
偏移地址:堆栈指针寄存器SP保存

3、存储器的分段管理

8086规定段基地址低4为均为0,每个段最大不超过64KB。并不要求每个段必须是64KB。各段之间可以完全分开,也可以部分重叠,但各段的内容不允许冲突。各段独立分配和相互重叠的分配示例如下:
汇编语言第一章------汇编语言基础_第14张图片
汇编语言第一章------汇编语言基础_第15张图片

三、汇编语言程序的格式

3.1、指令代码格式

汇编语言的主体是处理器指令。

指令
操作码
操作数
表明处理器执行的操作
参与操作的数据对象

汇编语言第一章------汇编语言基础_第16张图片
传送指令MOV
作用:将数据从一个位置传送到另一个位置
mov dest,src
源操作数src:被传送的数据或数据所在的位置
目的操作数dest:数据将要传送到的位置
示意图如下:
汇编语言第一章------汇编语言基础_第17张图片

3.2、语句格式

执行性语句:表达处理器指令(硬指令)
标号: 硬指令助记符 操作数,操作数,…;注释
说明性语句:表达伪指令,控制汇编方式
名字 伪指令助记符 参数,参数,…;注释

1、标号和名字

用户自定义标识符
标号
名字
执行性语句中
冒号分隔
表示处理器指令在主存中的逻辑地址
指示分支,循环等程序的目的地址
说明性语句中
空格或制表符分隔
变量名,段名,子程序名等
反映变量,段和子程序等的逻辑地址

2、助记符

帮助记忆指令的符号。
助记符:DB
功能:在主存中分配若干存储空间,用于保存变量值,该变量以字节为单位存取
助记符:MOV
功能:数据传送
助记符:MSG
功能:指示字符串在主存的逻辑地址,也就是这个字符串的变量名
还有很多。

3、操作数和参数

操作数
具体的常量
保存在寄存器的数据
保存在存储器中的变量
逗号前常是目的操作数,逗号后常是源操作数
参数
常量,变量名,表达式等
可以有多个,之间用逗号分隔

4、注释和分隔符

汇编语言第一章------汇编语言基础_第18张图片

3.3、源程序框架

源程序框架
定义程序的存储模型
定义段
程序开始执行
中间语句段
程序结束执行
汇编结束

四、汇编语言程序的开发

4.1、开发环境

微软宏汇编程序MASM
16位模拟DOS环境
具体开发过程参考我的另一篇博客:
汇编语言之DOSBox的安装和使用
第一章结束!

你可能感兴趣的:(汇编语言,章节复习,dosbox)