汇编语言(一)——80x86 计算机组织

本文介绍了80x86微处理器,详细讲解了计算机系统构成,包括CPU、存储器、I/O系统和总线。CPU由运算器、控制器和寄存器组成,存储器分为内存和外存。此外,文章还阐述了中央处理机的组成,特别是8086CPU的总线接口部件和执行部件。最后,探讨了存储器的地址和寻址方式,以及实模式下的存储器寻址。

2.1 80x86 微处理器

  • 计算机的主要组成:运算器、控制器、存储器和输入输出设备。
  • 运算器和控制器集成在一个芯片上,构成中央处理器(CPU)

2.2基于微处理器的计算机系统构成

2.2.1硬件

  • 四个主要组成部分:CPU、存储器、输入输出(I/O)子系统和系统总线
  • 系统总线把以上三个连接在一起
    HIT
  • CPU:核心部件,集成了运算器、控制器和寄存器组,执行程序指令,完成所有算术和逻辑运算及全机的控制工作。
  • 存储器:存放程序和数据。
    主存:内存,ROM(只读存储器)和RAM(随机存取存储器)。
    辅存:外存,速度慢,容量大。
  • I/O接口电路:主要完成数据缓冲、信号变换、以及与CPU联络等工作。
  • I/O设备:微型计算机配备的输入输出设备,也称外围设备。
  • 系统总线:CPU、存储器和I/O接口电路之间通过数据总线、地址总线和控制总线相连,这三组总线称为系统总线。数据总线:传送数据信息。地址总线:传送地址信息。控制总线:传送控制信息。

2.2.2软件

软件分为系统软件和应用软件两大类

  • 系统软件:面向所有用户的一类软件。系统软件的核心是操作系统,所有应用的程序都是在操作系统构筑的平台上运行的。
  • 应用软件:主要指用户围绕某项应用编写的各种程序。

2.3 中央处理机

2.3.1 中央处理器CPU的组成

8086CPU从功能上可分为两部分:总线接口部件BIU和执行部件EU

  • 总线接口部件(BIU):由段寄存器、指令指针寄存器、地址加法器、指令队列和输入输出控制电路等组成。
  • 执行部件(EU):由算术逻辑部件(ALU)、通用寄存器、标志寄存器和执行部件控制电路等组成,它负责指令的执行和数据的运算。

80x86寄存器组
在这里插入图片描述
寄存器是CPU内部重要的数据存储资源(寄存器的分类如上图)

1.通用寄存器

数据寄存器:共有四个AX、BX、CX、DX,用于保存操作数或运算结果等信息。

  • AX寄存器:称为累加器,用于算术、逻辑运算以及与外设传送信息等。
  • BX寄存器:称为基址寄存器,常用于存放存储器地址。
  • CX寄存器:称为计数器,一般作为循环或串操作等指令中的隐含计数器。
  • DX寄存器:称为数据寄存器,常用来存放双字数据的高16位。

变址寄存器:SI和DI称为变址寄存器,主要用于存放某个存储单元的偏移地址。

  • SI是源变址寄存器
  • DI是目的变址寄存器
    SI和DI一般都与数据段寄存器DS联用,用来确定数据段中某存储单元的地址
    在字符串操作中:
    SI与DS联用——确定源操作数地址
    DI与ES联用——确定目的操作数地址

指针寄存器:BP和SP称为指针寄存器,主要用于存放堆栈内存储单元的偏移量,用它们可实现多种存储器操作数的寻址方式

  • SP:堆栈指针寄存器,用于存放当前堆栈段中栈顶的偏移地址
  • BP:基址指针寄存器,用于存放堆栈段中某一存储单元的偏移地址

2.专用寄存器:IP、FLAGS

指令指针寄存器IP:它总是保存下一次将要从主存中取出指令的偏移地址,IP与CS段寄存器联用,可以确定下一条要取得指令的物理地址。

标志寄存器FLAGS:存放状态标志和控制标志的寄存器。

  • 状态标志:用于记录程序中运行结果的状态信息。
    溢出标志(OF):运算时溢出,则OF为1,否则为0。
    符号标志(SF):记录运算结果的符号,结果为负时置1,否则为0。
    零标志(ZF):运算结果为0时ZF位置1,否则置0。
    进位标志(CF):记录运算时从最高有效位产生的进位值。例如执行加法指令时,最高有效位有进位置1,否则置0.
    辅助进位标志(AF):记录运算时第3位产生的进位值。
    奇偶标志(PF):检验传输数据时可能产生的出错情况。当结果操作数中的1为偶数时置1,否则0.

  • 控制标志:可由程序根据需要用指令设置,用于控制处理器执行指令的方式。
    方向标志(DF):在串处理指令中控制处理信息的方向用。
    陷阱标志(TF):用于调试时的单步方式操作。
    中断标志(IF):IF为1时,允许CPU响应可屏蔽中断请求,否则关闭中断。

  • I/O特权级:在保护模式下,用于控制对I/O地址空间的访问。

3.段寄存器

8086CPU的4个16位的段寄存器分别称为:代码段寄存器CS,数据段寄存器DS,堆栈段寄存器SS,附加数据段寄存器ES。80386起增加了FS、GS两个段寄存器。

段寄存器用来确定该段在内存中的起始地址。

处理器利用CS:IP取得下一条要执行的指令
DS:EA存取数据段中某一存储单元的地址
SS:SP操作堆栈顶的地址

2.4 存储器

IBM PC机的两种主要存储器和主要的存储方式

  • ROM(只读存储器)永久保存计算机的启动程序和处理I/O的例行程序。

  • RAM(随机存储器)暂时保存计算机执行时驻留的程序的数据
    2.4.1 存储单元的地址和内容

  • 存储器以字节为编程单位

  • 地址用无符号整数来表示

  • 一个字要占用相继的两个字节

  • 低位字节存入低地址,高位字节存入高地址(注意:高地址在下,低地址在上,即地址序号是越往下越大)

  • 字单元地址用它的低地址来表示

内存单元的地址和内容的概念及其关系:

  • 若M表示内存单元的地址,则该内存单元的内容可表示为(M)。
  • 如果M单元存放着地址N,则((M))表示地址为N的单元的内容。

2.4.2 实模式存储器寻址

1.存储器地址的分段

  • 机器规定:从0地址开始,每16个字节为一小段。

  • 段起始地址:段起始位置必须是任一小段的首地址开始。

  • 小段:每16个字节一小段,共有64K个小段

  • 段的大小:0-64K范围内的任意字节

  • 段内偏移:存储单元的实际地址预期所在段的段地址之间的距离,也可称为有效地址(EA),偏移地址(Offset)。

  • 有了段地址和偏移地址,就能唯一地确定某一内存单元在存储器内的具体位置(物理位置(PA))。

  • 计算示意图
    在这里插入图片描述

  • 逻辑地址:段地址:偏移地址,机器获得逻辑地址后自动通过某种方法求得物理地址。

寄存器与存储器的比较
在这里插入图片描述

附上思维导图

在这里插入图片描述
在这里插入图片描述

第1章 预备知识 1.1 机器语言与汇编语言 1.1.1 机器语言 1.1.2 汇编语言 1.1.3 书中使用符号的说明 1.2 Intel系列机简介 1.2.1 Intel 80X86微处理器简介 1.2.2 Intel 80X86微处理器结构 1.2.3 80X86的3种工作方式 1.3 主存储器和物理地址的形成 1.3.1 主存储器 1.3.2 堆栈 1.3.3 物理地址的形成 1.4 数据在计算机内的表示形式 1.4.1 数值数据在计算机内的表示形式 1.4.2 BCD码 1.4.3 字符数据在机内的表示形式 1.5 标志寄存器 1.5.1 标志位 1.5.2 标志寄存器操作指令 1.6 汇编源程序举例 第2章 寻址方式 2.1 寄存器寻址 2.2 寄存器间接寻址 2.3 变址寻址 2.4 基址加变址寻址 2.5 立即寻址 2.6 直接寻址 2.7 寻址方式的有关问题 2.8 寻址方式综合举例 第3章 宏汇编语言 3.1 宏汇编语言中的表达式 3.1.1 常量与数值表达式 3.1.2 变量、标号与地址表达式 3.2 常用的机器指令语句 3.2.1 数据传送指令 3.2.2 算术运算指令 3.2.3 位操作指令 3.3 伪指令语句 3.3.1 处理器选择伪指令 3.3.2 数据定义伪指令 3.3.3 符号定义伪指令 3.3.4 段定义伪指令 3.3.5 源程序结束伪指令 3.4 常用的DOS系统功能调用 3.4.1 概述 3.4.2 常用的输入/输出系统功能调用 3.5 MASM的功能 3.5.1 MASM的功能 3.5.2 汇编过程 3.5.3 汇编列表文件 3.5.4 符号交叉列表文件 第4章 程序设计的基本方法 4.1 概述 4.2 顺序程序设计 4.3 分支程序设计 4.3.1 转移指令 4.3.2 分支程序设计举例 4.4 循环程序设计 4.4.1 循环程序的结构和控制方法 4.4.2 单重循环程序设计 4.4.3 多重循环程序设计 4.5 子程序设计 4.5.1 子程序的概念 4.5.2 子程序的定义 4.5.3 子程序的调用与返回 4.5.4 子程序调用现场的保护方法 4.5.5 主程序与子程序之间传递参数的方式 4.5.6 子程序及其调用举例 4.5.7 子程序的嵌套 4.6 程序设计中的注意事项 第5章 程序设计的其他方法和技术 5.1 字符串操作 5.1.1 串操作指令简介 5.1.2 串操作指令 5.2 宏功能程序设计 5.2.1 宏定义 5.2.2 宏调用 5.2.3 宏定义与宏调用中的参数 5.2.4 重复汇编伪指令 5.2.5 条件汇编伪指令 5.2.6 宏库的使用 5.2.7 宏指令与子程序的比较 5.3 模块化程序设计 5.3.1 组合方式 5.3.2 通信方式 5.3.3 连接程序(LINK)的功能 5.3.4 地址分配文件举例 5.4 源程序综合举例 5.4.1 模块程序设计中的注意事项 5.4.2 模块程序设计举例 第6章 输入/输出和WIN32编程 6.1 输入/输出指令和数据的传送方式 6.1.1 输入/输出指令 6.1.2 数据的传送方式 6.2 中断与异常 6.2.1 中断的概念 6.2.2 中断矢量表 6.2.3 软中断及有关的中断指令 6.2.4 中断处理程序的设计 6.3 浮点运算 6.3.1 浮点数据格式 6.3.2 FPU中的寄存器 6.3.3 浮点指令与程序设计 6.4 WIN32编程 6.4.1 WIN32编程基础 6.4.2 WIN32程序的结构 6.4.3 Windows API函数简介 6.4.4 编程实例 第7章 上机操作 7.1 在DOS环境下运行汇编源程序的方法 7.1.1 在DOS环境下运行汇编源程序的必备软件 7.1.2 DOS环境下运行汇编源程序的流程 7.1.3 DOS环境下运行汇编源程序的命令(MASM 6.0及以下版本) 7.2 多模块程序的运行及子程序库的使用 7.2.1 多模块程序的运行 7.2.2 子程序库的使用 7.3 在Windows环境下运行汇编源程序的方法 7.3.1 在Windows环境下运行32位汇编源程序的必备软件 7.3.2 在Windows环境下运行汇编源程序的特点 7.3.3 在Windows环境下32位汇编源程序的运行命令 7.4 调试程序Turbo Debugger的使用 7.4.1 TD的启动和退出 7.4.2 利用TD调试汇编语言程序 7.4.3 调试举例 附录 附录Ⅰ ASCII码字符表 附录Ⅱ 80X86指令系统简表 附录Ⅲ 伪指令表 附录Ⅳ DOS的软中断与系统功能调用 附录Ⅴ 常用BIOS子程序的功能及其调用参数 附录Ⅵ 汇编连接程序错误信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值