微机原理与接口(含汇编语言)

微机原理与接口(含汇编语言)

Ⅰ.课程简介

一、内容概述与要求

微机原理与接口(含汇编语言)考试是为招收计算机类专业专科升本科学生而实施的入学考试。
参加本课程考试的考生从理论和实践上应掌握微型计算机的基本组成及工作原理、汇编语言程序设计及常用接口技术,建立微机系统整体概念。重点掌握 8086 微处理器基本结构及工作原理,存储器的构成及扩展技术,汇编语言程序设计(包括寻址方式、指令系统及程序设计方法),输入输出方式、中断系统及常用接口技术,使学生具备微机应用系统软、硬件开发的初步能力。
本课程考试从两个层次上对考生进行测试,较高层次的要求为“理解”和“掌握”,较低层次的要求为“了解”和“会”。这里“理解”和“了解”是对概念与理论提出的要求。“掌握”和“会”是对方法、运算能力及应用能力提出的要求。

二、考试形式与试卷结构

考试采用闭卷、笔试形式,全卷满分为 150 分,考试时间为 75 分钟。
试卷包括选择题、填空题(或判断题)、简答题和应用题。选择题是四选一型的单项选择题;填空题(判断题)只要求直接填写结果;简答题需要用文字说明知识要点;应用题应写出问题的分析思路及解题步骤。选择题和填空题分值合计为 75 分。其余类型题目分值合计为 75 分。 Ⅱ.知识要点与考核要求

一、微型计算机基础

(一)知识范围

微型计算机的基本组成及各部分的功能与作用;微型机的基本工作过程;计算机中的编码、数制
及其转换;无符号二进制数的算术运算和逻辑运算;运算中的溢出;机器数的表示及运算;基本逻辑
门及常用逻辑部件。

(二)考核要求

  1. 理解微处理器、微型计算机和微型计算机系统的概念及其相互关系。

  2. 理解微机系统各部件的功能分工及计算机的工作过程。

  3. 掌握计算机中各种信息的表示及运算。

  4. 熟悉基本逻辑门及常用逻辑部件的使用。

    1. 微处理器(Microprocessor)是一种集成电路芯片,包含了一个或多个中央处理器(CPU)核心、输入输出(I/O)等组件,可以进行数据处理和控制操作,并支持运行各种软件和应用程序。

      微型计算机(microcomputer)指由微处理器、存储器、输入输出设备、系统总线等组件组成的小型计算机系统。
      它通常包含一个中央处理器、内存、磁盘、键盘、显示器等设备,可以进行各种应用程序和操作系统。

      微型计算机系统(microcomputer system)则指微型计算机及其相关的软、硬件系统。包括了微处理器、内存、输入输出设备、操作系统及其附属软件、接口卡等组件,以及各种支持和管理这些设备和软件的系统程序。

      微处理器是微型计算机系统的核心部件,承担着处理和控制的重要任务。
      微型计算机则是微处理器的应用平台,提供各种输入输出功能和用户接口等。
      在这里插入图片描述

      微型计算机系统则包含了多种硬件和软件组件,提供了一个完整的计算机系统。三者相互关联、相互作用,形成了计算机技术中的重要组成部分。
      从单个的微处理器芯片,到基于微型计算机的个人计算机、嵌入式系统、网络设备和服务器等,都离不开这些概念的理解和应用。

    2. 微机系统各部件的功能分工如下:
      微处理器:执行指令,控制系统功能。
      存储器:存储数据和指令。
      输入设备:将人类输入的信息装转化为计算机可以接受的信号,如键盘、鼠标等。
      输出设备:将计算机处理得到的信息转化为人类可以理解的信号,如显示器、喇叭等。
      计算机的工作过程:
      指令取出→指令解码→数据存储→数据处理→结果输出

      微机系统通常由微处理器、存储器、输入输出设备、总线、时钟、电源等部分组成。
      微处理器是整个微机系统的核心,它负责执行所有的指令和控制微机的各种功能,是微机系统内部运算和控制的中心,承担着微机的数据处理和控制任务。
      存储器主要包括主存储器和辅助存储器两部分。
      主存储器用来存放处理器的指令和数据,并提供指令和数据的读写功能。
      辅助存储器则是主存储器的扩展,可提供大容量的存储空间用于长期保存数据和程序。
      输入输出设备指计算机与外界信息交换的接口,通过它们可以实现数据的输入、输出和控制功能。
      总线是微机系统内部各部件间传输信息的通道,负责指令和数据的传输和控制。

      计算机的工作过程可以简单地描述为:输入、处理和输出三个基本部分。
      在输入过程中,计算机通过输入设备获得外部信息;
      在处理过程中,计算机通过中央处理器对这些信息进行处理、运算和决策;
      在输出过程中,计算机通过输出设备将处理结果反馈给用户或其他设备。
      其中,输入、处理和输出三部分之间通过总线进行数据传输和控制。
      电源则为整个系统提供电力保证。

      总之,微机系统各部件之间的功能分工清晰、协同配合,保证了计算机的高效稳定运行和实现各种计算任务。

    3. 计算机中各种信息的表示及运算如下:
      二进制数:用0和1表示数字;八进制数:用0~7表示数字;
      十进制数:用09表示数字;十六进制数:用09和A~F表示数字。
      运算:包括四则运算、移位运算、逻辑运算、比较运算等。
      在这里插入图片描述

      计算机中的信息主要包括数据和指令两种类型。
      其中,数据是计算机程序中的变量、常量、数组等类 型的数据项,可以用二进制、十进制、十六进制等多种方式表示;
      指令则是计算机执行操作的基本语句,通常用二进制代码表示。

      对于数据的运算,计算机支持包括加减乘除等基本运算,其中加法和减法通常使用二进制补码表示,乘法和除法则使用硬件或软件算法实现。
      此外,还可以进行逻辑运算、位运算等,如与(&)、或(|)、异或(^)等。
      在运算过程中,计算机会通过算数逻辑单元(ALU)和累加寄存器(ACC)等部件执行计算操作。

      在指令执行方面,计算机采用指令周期的方式进行,包括取指令、译码、执行、访问存储器和写回等阶段。
      在这些阶段中,计算机依次获取指令、解析指令、执行指令、从存储器中读取或写入数据以及将执行结果写回到存储器中。

      总之,计算机中各种信息的表示和运算是计算机实现各种计算和操作的基础。
      它是计算机硬件和软件紧密结合的重要部分,需要系统学习和掌握。

    4. 基本逻辑门是计算机中硬件实现逻辑运算的重要组成部分,
      其中包括与门、或门、非门、异或门等。以下是各种逻辑门的定义和使用:

      1. 与门(AND Gate):当所有输入信号均为1时,输出信号为1,否则输出信号为0。

      2. 或门(OR Gate):只要有一个输入信号为1,输出信号则为1,否则输出信号为0。

      3. 非门(NOT Gate):将输入信号取反,即当输入信号为1时,输出信号为0,反之亦然。

      4. 异或门(XOR Gate):只有输入信号不同,输出信号才为1,同则输出0。

      在计算机中,常用逻辑部件包括:

      1. 与非门(NAND Gate):当所有输入信号均为1时,输出信号为0,否则输出信号为1。

      2. 或非门(NOR Gate):只要有一个输入信号为1,输出信号则为0,否则输出信号为1。

      3. 与或非门(AOI Gate):与与非门和或非门的组合,当所有输入信号均为1时,输出信号为0,否则输出信号为1。

      4. 或与非门(OAI Gate):与或门和非门的组合,只要有一个输入信号为1,输出信号则为0,否则输出信号为1。
        在这里插入图片描述

      逻辑门和逻辑部件的使用可以通过数字电路设计语言(如VHDL和Verilog)进行实现,常用于开发硬件电路、嵌入式系统和集成电路等领域。

二、80X86 微处理器

(一)知识范围

8086/8088CPU 的内部结构和外部引线; 8086/8088CPU 的工作方式;8086/8088CPU 系统总线的形成;8086/8088 的存储器结构;总线操作及时序。

(二)考核要求

  1. 掌握 8086/8088CPU 的功能构成及流水线技术,理解流水线管理规则。

  2. 掌握 8086/8088CPU 寄存器的组成及其应用。

  3. 理解 8086/8088CPU 的内存分配,掌握实地址模式下的存储器地址变换方法。

  4. 掌握 8086/8088CPU 的引脚构成,理解其引脚复用的特性。

    1.8086/8088CPU的功能构成
    8086/8088CPU的功能组成主要包括数据总线、地址 总线、控制总线、寄存器组、算术逻辑单元(ALU)、时序与控制单元(TACU)、存储单元等。
    其中,寄存器组是CPU中最重要的部件之一,包括通用寄存器、段寄存器、指令指针寄存器等,用于存储和操作数据和程序。
    在这里插入图片描述

    8086/8088CPU的流水线技术

    流水线技术是一种提高CPU处理效率的技术,它将CPU的执行各个操作分为一系列阶段,使得整个处理过程能够同时进行,提高处理效率。
    在8086/8088CPU中,流水线包括取指阶段、译码阶段、执行阶段和写回阶段。

    流水线管理规则

    为了保证流水线的正常运行,也需要遵循一系列管理规则,例如避免数据冒险、控制分支预测、避免数据冗余等。

    其中,数据冒险是指由于指令之间存在数据依赖关系,导致某些指令无法按预定时间完成,进而影响整个流水线的正常运行。
    为了避免数据冒险,可以采用一些方法,例如提前准备数据、推迟数据使用、数据绑定等。

    控制分支预测是指CPU在执行代码时预测下一条指令的执行方式,
    当预测正确时,可以有效提高流水线效率,但是当预测失败时,会导致浪费时间和资源。
    为了避免这种情况,需要采用一些分支预测技术,例如静态分支预测、动态分支预测、混合分支预测等。

    数据冗余是指在流水线处理中,某些数据被重复计算多次,浪费计算资源和时间。
    为了避免数据冗余,我们需要利用数据缓存、流水线中断、指令联合等技术,提高处理效率。

    总的来说,了解8086/8088CPU 的功能构成和流水线技术以及流水线管理规则,
    可以帮助程序开发人员更好地理解CPU的内部工作原理,从而编写更加高效、可靠的程序。

    2.8086/8088CPU是一种16位的微处理器,它具有许多寄存器来存储数据和控制执行过程。在程序开发中,掌握8086/8088CPU寄存器组成和应用非常重要,可以更好地进行寄存器的操作和优化程序的执行效率。
    下面是关于8086/8088CPU寄存器组成及其应用的详细介绍。

    1. 寄存器组成

      8086/8088CPU中包括通用寄存器、段寄存器、指令指针寄存器等。具体如下:

      (1)通用寄存器

      8086/8088CPU中有四个16位通用寄存器AX、BX、CX、DX,这些寄存器可以被程序设计者自由使用,不会对程序执行产生影响。
      此外,每一个通用寄存器都可以被分成较小的8位寄存器AH、AL、BH、BL、CH、CL、DH、DL。这些寄存器可以被单独使用,用来存储8位数据。

      (2)段寄存器

      8086/8088CPU中有4个段寄存器:CS(代码段寄存器)、DS(数据段寄存器)
      、SS(堆栈段寄存器)和ES(附加段寄存器),用于存放指向内存区域的段地址,构成物理地址。
      段寄存器在程序执行时具有重要作用,能够提高程序执行效率。

      (3)指令指针寄存器

      8086/8088CPU中有两个指令指针寄存器:IP(指令指针寄存器)和FLAGS(标志寄存器)。
      IP寄存器是指向代码段中下一条将要执行的指令的内存地址的指针。
      FLAGS寄存器是一个标志寄存器,包括16个标志位,用于存放各种条件、状态标志等。

    2. 寄存器应用

      在8086/8088CPU的程序开发中,寄存器的应用非常广泛:

      (1)通用寄存器的应用

      通用寄存器通常用于存储临时数据,例如进行算术运算、逻辑运算、移位运算等。
      CPU在执行指令时,通用寄存器可以存放各种不同类型的数据,根据需求进行不断地变化。

      (2)段寄存器的应用

      段寄存器主要用于寻址,可以指向不同的内存区域。
      程序中的代码、数据、栈等都存在不同的区域中,如果使用不同的地址来访问这些区域的数据,将会导致非常混乱。
      有了段寄存器,程序员可以更加方便、自由地访问不同内存区域中的数据,有效提高CPU处理数据和程序运行的速度。

      (3)指令指针寄存器的应用
      指令指针寄存器IP在8086/8088CPU中的应用非常广泛,主要包括以下几个方面:

      1. 程序跳转和分支:程序跳转是指CPU执行到某个指令时,根据该指令的操作码或数据
        ,将IP寄存器的值修改为相应的偏移量,以便执行其他指令,实现程序的分支和跳转。

      2. 子函数调用和返回:子函数调用和返回是通过修改IP寄存器的值来实现的。
        当调用子函数时,CPU会将指令指针的当前值压入堆栈,并将IP的值更新为子函数的入口地址;
        当子函数执行完成后,将堆栈中存储的IP值弹出,将控制权返回给调用函数。

      3. 循环和迭代:循环和迭代是程序中常用的结构之一。
        循环执行过程中,CPU需要不断地修改IP寄存器的值,使其指向下一条要执行的指令。
        循环结束时,跳转回循环判断指令,决定是否继续循环,以及跳转到循环体外的指令。

      4. 系统中断处理:系统中断处理是指在CPU执行过程中,受到外部中断信号,需要改变程序的执行流程
        。在这种情况下,CPU会将当前IP、CS等寄存器的值压入堆栈,并将IP、CS的值设置为中断处理程序的执行地址。

    总之,指令指针寄存器IP在cpu的指令控制流程中起着至关重要的作用,是程序员处理分支、跳转、调用子函数等任务的基础。
    在这里插入图片描述

    3.8086/8088CPU是早期的英特尔芯片,采用的是实地址模式,其内存分配以64KB为单位,能够访问最大1MB的内存空间。
    在实地址模式下,CPU通过段寄存器和偏移地址来指定实际物理地址。

    具体的存储器地址变换方法如下:

    1. 段地址的计算:段地址存储在CPU的段寄存器中,通过左移4位并加上偏移地址的高16位来计算,
      即segment address = segment register * 16 + offset high。

    2. 实际物理地址的计算:实际物理地址由段地址和偏移地址的低16位组成,即physical address = segment address + offset low。

      例如,当程序需要访问内存地址0xABCD时,它会将地址分解为段地址0xAB00和偏移地址0x00CD两部分。
      CPU会首先将0xAB存储在段寄存器中,然后将0xCD存储在指令指针寄存器IP中,计算出实际物理地址为0xABCD,然后访问这个地址上的数据。

      需要注意的是,在实地址模式下,CPU只能访问最大1MB的内存空间,每个程序只能拥有最大64KB的内存,并且在内存分配和使用时需要谨慎处理,以避免出现内存溢出等问题。
      在这里插入图片描述

    4.8086/8088CPU的引脚构成包括40个引脚,其中20个引脚为地址总线,16个引脚为数据总线,3个引脚为控制信号,1个引脚为时钟信号。
    下面分别介绍每个引脚的作用:

    1. 地址总线:A0-A19,用于传输CPU发出的地址信号,共可以寻址2的20次方个内存单元,即1MB的内存空间。

    2. 数据总线:D0-D15,用于传输CPU和存储器之间的数据和指令。

    3. 控制信号:RD(读)、WR(写)和ALE(地址锁定使能信号)

      1. RD:当CPU需要从存储器读取数据时,它会向存储器发出RD信号,使存 储器将数据放到数据总线上。

      2. WR:当CPU需要将数据写入存储器时,它会向存储器发出WR信号,使存储器将数据写入指定的内存地址中。

      3. ALE:地址锁定使能信号,当CPU在进行地址总线输出时,它会向外部发出ALE信号,保持地址总线上的地址保持稳定,以便外设捕捉到地址信息。

      4. 时钟信号:CLK,用于同步CPU与存储器之间的读写操作。

      8086/8088CPU的引脚复用特性指的是两个或多个功能可以通过同一个引脚实现。
      例如,D0-D7引脚可以用作数据传输,而在输入输出端口模式下,它们也可以用来传输控制信号。
      ALE引脚也可以用作输入输出端口的片选信号等。
      这种引脚复用的设计,使得CPU在连接外设时,可以通过合理的引脚配置和控制机制来实现多样化的功能。
      在这里插入图片描述

三、指令系统与汇编语言程序设计

(一)知识范围

指令系统的概念、指令格式;对操作数的寻址方式;常用指令(传送指令、算术运算指令、逻辑
运算和移位指令、串操作指令、程序控制指令与处理器控制指令);汇编语言程序的基本结构;常用
伪指令(数据定义、符号定义、段定义、设定段寄存器);DOS 功能调用(输入/输出字符、输入/输
出字符串、结束程序);三种结构(顺序结构、分支结构和循环结构)程序设计;常用程序设计举例。

(二)考核要求

  1. 理解指令系统的概念及指令格式。

  2. 掌握常用的寻址方式并能熟练地使用它们。

  3. 掌握常用指令的格式、功能和使用方法,分析各种指令执行后的结果。

  4. 掌握指令对状态标志的影响。

  5. 掌握常用伪指令的格式和功能。

  6. 掌握汇编语言源程序的构成,熟练掌握汇编语言程序上机调试运行过程。

  7. 理解程序的三种基本结构,能够使用汇编语言解决常见的问题。

    1. 指令系统(Instruction Set)是计算机处理器支持并能执行的指令(Instruction)的集合,
      用于定义并规范计算机系统的指令集合,从而使计算机能够进行各种数据处理操作。

      指令格式(Instruction Format)是指令在计算机中的存储格式和处理格式,其主要包括以下几个方面:

      1. 操作码(Opcode):用于指出所要执行的操作的类型,指令格式中通常占据最高位或者最左边的若干位。
        在这里插入图片描述

      2. 寻址方式信息:可以指示操作数所在的寻址方式,例如寄存器操作数、立即数操作数、直接寻址操作数、变址寻址操作数等等。
        在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述

      3. 操作数:指令中的操作数通常分为目的操作数和源操作数,目的操作数是操作指令的是要进行操作的寄存器或存储单元,
        而源操作数是要用来进行操作的数据寄存器或存储单元。

      4. 寄存器地址:对于所有的寄存器操作都需要给出目标寄存器的地址信息。

      5. 指令附加信息:指令附加信息是指一些与指令相关的额外信息,例如指令长度、中断屏蔽等等。

      6. 操作数长度:操作数的长度通常取决于计算机系统的字长,例如在64位计算机上,一般会有64位和32位的操作数。

        总的来说,指令系统是计算机硬件和软件密切相关的一个重要方面,它影响着计算机系统的性能和功能,
        一个良好的指令系统可以使计算机系统更加高效、功能更加完善。而指令格式则是指令系统中的重要组成部分,
        决定了计算机能够处理的指令类型以及操作数的格式,也影响着计算机系统的效率和灵活度。

      2.计算机指令中的寻址方式是指,处理器为定位操作数指定一个有效地址的方法。
      计算机中有很多种不同的寻址方式,以下是其中的几种常用的寻址方式:

      1. 直接寻址

      直接寻址(Direct Addressing)是最简单的寻址方式,使用一个操作数获得目标地址。即在指令中直接给出操作数的有效地址。

       例如,MOV AX, [1000H] 
      

      表示将1000H地址单元中的内容放到AX中。
      在这里插入图片描述

      1. 立即寻址

      立即寻址(Immediate Addressing)用于将常数或变量的值直接放在指令中,常用于一些数据预处理。

       例如,MOV AX, 5 
      

      表示将立即数5装入AX中。
      在这里插入图片描述

      1. 寄存器寻址

      寄存器寻址(Register Addressing)是将操作数从寄存器中获取。

       例如, ADD AX, BX 
      

      表示将BX内容加到AX中。
      在这里插入图片描述

      1. 间接寻址

      间接寻址(Indirect Addressing)是通过指针寄存器索引来访问内存单元,用于处理变量值存放在变量表中的情况。

       例如,MOV AX, [BX] 
      

      表示将BX所指示的内存单元地址中的内容送到AX中。
      寄存器间接寻址

      1. 相对寻址

      相对寻址(Relative Addressing)用于执行跳转指令,即将下一条要执行的指令地址作为参考值,得出跳转指令要跳转的目标地址。

       例如,JMP SHORT LABEL 
      

      表示将指令指针增加一个字节加上位于LABEL处的标签地址的相对偏移量,跳转到目标地址。
      在这里插入图片描述

      总的来说,寻址方式是计算机指令中非常重要的一部分,选择合适的寻址方式可以帮助计算机系统更快地访问和处理数据,
      提高系统的效率。熟练掌握不同的寻址方式,并了解它们的优缺点和适用场景,对于进行程序开发和计算机系统设计的人员都是至关重要的。
      在这里插入图片描述
      在这里插入图片描述

    3.计算机指令是计算机程序的基础,其格式、功能和使用方法涵盖了计算机系统的各种操作。
    以下是一些常用的指令及其格式、功能和使用方法的简要介绍。

    1. MOV(赋值/传递指令)

      MOV是赋值/传递指令,用于将源操作数的值传递给目的操作数。

      指令格式:MOV 目的操作数,源操作数

       例如:MOV AX, BX
      

      表示将BX的内容传递给AX。

    2. ADD(加法指令)

      ADD是加法指令,用于将源操作数的值加到目的操作数的值中。

      指令格式:ADD 目的操作数,源操作数

       例如:ADD AX, BX
      

      表示将BX的内容加到AX中。

    3. SUB(减法指令)

      SUB是减法指令,用于将源操作数的值从目的操作数的值中减去。

      指令格式:SUB 目的操作数,源操作数

       例如:SUB AX, BX
      

      表示将BX的内容减去AX中。

    4. INC(递增指令)

      INC是递增指令,用于将目的操作数的值加1。

      指令格式:INC 目的操作数

       例如:INC AX
      

      表示将AX的值加1。

    5. DEC(递减指令)

      DEC是递减指令,用于将目的操作数的值减1。

      指令格式:DEC 目的操作数

       例如:DEC AX
      

      表示将AX的值减1。

    6. JMP(跳转指令)

      JMP是跳转指令,用于无条件跳转到指定的地址执行。

      指令格式:JMP 目标地址

       例如:JMP LABEL
      

      表示无条件跳转到LABEL处执行。

    7. CMP(比较指令)

      CMP是比较指令,用于将源操作数的值与目的操作数的值进行比较,并设置标志位。

      指令格式:CMP 目的操作数,源操作数

       例如:CMP AX, BX
      

      表示比较AX和BX的值,结果可能会对后面的跳转指令产生影响。

    8. JZ(零标志跳转指令)

      JZ是零标志跳转指令,用于当标志位为零时跳转。

      指令格式:JZ 目标地址

       例如:JZ LABEL
      

      表示当结果为零时,跳转到LABEL处执行。

    9. CALL(过程调用指令)

      CALL是过程调用指令,用于调用指定过程。

      指令格式:CALL 过程地址

       例如:CALL PROCEDURE
      

    表示调用名为PROCEDURE的过程。
    在这里插入图片描述

    总的来说,计算机指令是计算机程序中的最基本组成单元,不同的指令有着不同的格式、功能和使用方法,执行后的结果也会发生不同的变化。
    了解这些常用指令的使用方法和组合,有助于开发者进行计算机程序开发和调试,提高计算机系统的性能和效率。

    4.指令集中有一类指令在执行过程中会对CPU中的状态标志寄存器进行修改,这些标志可以用来在程序中进行条件分支结构的控制,判断运算结果是否符合要求。
    常见的状态标志包括:进位标志(CF)、零标志(ZF)、符号标志(SF)、溢出标志(OF)等。
    了解不同指令对其状态标志的影响,可以帮助程序员编写更为复杂的程序代码,使得程序流程更为顺畅、高效。
    以下是一些常用指令对状态标志的影响:

    1. 加法指令(ADD)

      加法指令(ADD)指令执行完毕后会根据运算结果的情况影响状态标志:如果结果为零,则将零标志(ZF)设为1;
      如果结果产生进位,则将进位标志(CF)设为1;
      如果结果为有符号数且结果的最高两位相同,则将溢出标志(OF)设为1;
      如果结果为负数,则将符号标志(SF)设为1。

    2. 减法指令(SUB)

      减法指令(SUB)指令执行完毕后会根据运算结果的情况影响状态标志:如果结果为零,则将零标志(ZF)设为1;
      如果结果包含借位,则将进位标志(CF)设为1;
      如果结果为有符号数且结果的最高两位不同,则将溢出标志(OF)设为1;
      如果结果为负数,则将符号标志(SF)设为1。

    3. 与指令(AND)

      与指令(AND)指令执行完毕后根据运算结果的情况影响状态标志:如果结果为零,则将零标志(ZF)设为1;
      如果结果的最高位为1,则将符号标志(SF)置为1。

    4. 或指令(OR)

      或指令(OR)指令执行完毕后根据运算结果的情况影响状态标志:如果结果为零,则将零标志(ZF)设为1;
      如果结果的最高位为1,则将符号标志(SF)置为1。

    5. 异或指令(XOR)

      异或指令(XOR)指令执行完毕后根据运算结果的情况影响状态标志:如果结果为零,则将零标志(ZF)设为1;
      如果结果的最高位为1,则将符号标志(SF)置为1。

    6. 移位指令(SAL/SHL、SAR、SHR)

      移位指令(SAL/SHL、SAR、SHR)指令执行完毕后会影响进位标志(CF)和零标志(ZF)。
      在这里插入图片描述

    总的来说,了解指令对状态标志的影响可以帮助程序员更好地控制程序代码流程,保证计算机程序的正确性和性能。
    在程序设计过程中,充分利用状态标志,可以编写出更加高效、简洁和优化的程序代码。

    5.伪指令(Pseudo-Instruction)是汇编语言中用来简化程序开发的一种指令,它本身不是机器指令,
    而是编译程序所能识别和执行的指令码序列,作用类似于宏定义或预处理器指令,可以用于定义常量、变量、符号常量、指令地址等。
    以下是一些常用的伪指令及其格式和功能:

    1. DB(Define Byte)指令

      DB指令用于定义一个或多个字节的变量或数据,它可以定义字符、整数、小数等常量或变量。

      指令格式:DB 变量1, 变量2, …, 变量n

      例如:DB 'ABC'
      

      表示定义了一个由三个ASCII字符组成的字符串变量:‘A’、‘B’、‘C’。
      在这里插入图片描述

    2. DW(Define Word)指令

      DW指令用于定义一个或多个字(16位)的变量或数据,它可以定义整型变量、地址偏移量等。

      指令格式:DW 变量1, 变量2, …, 变量n

       例如:DW 1234H
      

      表示定义了一个十六进制整数变量:1234H。
      在这里插入图片描述

    3. DD(Define Doubleword)指令

      DD指令用于定义一个或多个双字(32位)的变量或数据。

      指令格式:DD 变量1, 变量2, …, 变量n

       例如:DD 12345678H
      

      表示定义了一个十六进制双字变量:12345678H。

    4. DQ(Define Quadword)指令

      DQ指令用于定义一个或多个四字(64位)的变量或数据。

      指令格式:DQ 变量1, 变量2, …, 变量n

       例如:DQ 123456789ABCDEF0H
      

      表示定义了一个十六进制四字变量:123456789ABCDEF0H。

    5. EQU(Define Equal)指令

      EQU指令用于定义符号常量,其定义的标识符代表一个数值或地址,可以在程序中反复使用。

      指令格式:标识符 EQU 常量表达式

       例如:WIDTH EQU 80
      

      表示定义符号常量WIDTH为80。
      在这里插入图片描述

    6. ORG(Origin)指令

      ORG指令用于指定程序中的目标地址,定义后面代码的起始地址。

      指令格式:ORG 地址

       例如:ORG 1000H
      

      表示将后面的代码起始地址设为1000H。
      在这里插入图片描述

    总的来说,伪指令是汇编程序开发中常用的工具,可以帮助程序员简化代码、提高开发效率。
    熟悉常用的伪指令的使用方法可以让程序员更为舒适地编写汇编程序。
    在这里插入图片描述
    在这里插入图片描述

    6 汇编语言是低级语言中的一种,它是指令集体系结构和机器语言之间的接口模块,它使得程序员能够直接使用CPU的基础操作指令来进行各种操作。
    在我们编写汇编程序的时候,需要熟练掌握汇编语言源程序的构成以及在计算机上机进行的调试、运行等过程。

    1. 汇编语言源程序的构成

      汇编语言程序的源文件通常包含三个部分:

      (1)头文件(头部指令)。由于汇编语言的源程序并不像高级语言那样有预处理器,因此程序中的头文件也不会被自动包含。
      头文件通常包括一些程序的说明信息、宏定义、符号定义、常量定义等。

      (2)数据段(数据定义部分)。数据段主要用来定义程序中使用的常量和变量。包括DB、DW、DD等数据定义指令,以及EQU定义符号常量。

      (3)代码段(指令执行部分)。代码段包括代码和指令,用来完成程序的功能实现。代码段中指令的排列顺序直接关系到程序的运行结果。
      在这里插入图片描述

      汇编程序的上机调试运行过程

      (1)编写汇编源程序和保存为.asm文件格式。常用的汇编器有MASM、TASM、NASM等,常见的编辑器有Notepad++、Sublime Text、Visual Studio Code等。

      (2)使用汇编器处理.asm程序。通过将.asm文件格式的汇编源文件传输到汇编机上,可以使用相应的汇编器进行处理,生成目标文件。

      (3)使用链接程序将目标文件生成可执行文件。链接程序将目标文件中需要的链接,生成一个可执行文件,此时生成的程序可以被计算机操作系统调用和运行。

      (4)使用调试程序进行程序调试。在运行可执行文件时,可以使用调试器进行程序的调试和查错,查看变量、内存的运行情况以及程序指令的运行流程。
      在这里插入图片描述

      总的来说,汇编语言程序需要遵循一定的源文件格式,其中代码段的编写需要进行充分的测试和调试,保证程序的可靠性和正确性。
      然后,通过汇编器、链接程序、调试器等一系列工具,完成程序的编译、链接、调试和运行等操作。

    7.在编写汇编程序时,需要掌握程序的三种基本结构:顺序结构、选择结构和循环结构。
    学会运用这三种结构可以让程序的逻辑更加清晰,实现程序的各种功能。
    以下是这三种结构的详细介绍和应用技巧:
    在这里插入图片描述

    1. 顺序结构

      顺序结构是指程序按一定的顺序执行每一条指令,没有任何选择和循环结构。这是最基本的程序结构,所有程序都必须有顺序结构。

      例如:

      MOV AX, 5    ; 将5赋值给AX寄存器
      ADD AX, 3    ; 将AX加3
      MOV BX, AX   ; 将AX的值传递给BX寄存器
      
    2. 选择结构

      选择结构是指根据某种条件判断,程序执行不同的操作。汇编语言中有两种常见的选择结构:

      (1)条件转移指令(Jxx):根据标志寄存器的值决定是否执行跳转指令。

      例如:

      CMP AX, BX   ; 比较AX和BX两个寄存器的值
      JE LABEL1    ; 如果相等,跳转到LABEL1处指令执行
      JNE LABEL2   ; 如果不相等,跳转到LABEL2处指令执行
      

      (2)条件代码指令(CMOVxx):根据标志寄存器的值决定是否执行指令。

      例如:

      CMP AX, BX   ; 比较AX和BX两个寄存器的值
      CMOVE AX, BX ; 如果相等,将BX的值赋值给AX
      
      1. 循环结构

        循环结构是指程序根据某种条件判断,执行一定的操作,然后回到原来的地方继续执行此操作,直到符合退出条件才停止循环。
        汇编语言中通常使用循环指令LOOP来实现循环结构。

        例如:

        MOV CX, 5        ; CX赋值为5
        WHILE:           ; WHILE标记
            MOV AX, CX   ; 将CX赋值给AX
            ADD AX, BX   ; 将AX与BX相加
            DEC CX       ; CX减1
            LOOP WHILE   ; 如果CX值不为零,继续循环执行
        
        END WHILE        ; 循环结束标记
        

      总的来说,编写汇编程序需要掌握这三种基本的程序结构,根据程序实现的不同功能选用合适的结构,将汇编代码编写出来。
      掌握这些技术可以帮助程序员更好地解决常见的问题,提高程序开发的效率,而且可以充分利用计算机资源,实现更加高效、优美和功能丰富的应用

四、存储器系统

(一)知识范围

存储器体系相关概念;半导体存储器的分类及其特点;常见半导体存储芯片的外部特性及其与系
统的连接;存储器接口设计(存储器扩展技术);高速缓存。

(二)考核要求

  1. 理解存储器三级存储体系的构成:外存、内存、高速缓冲存储器的概念。

  2. 掌握存储器的性能指标,半导体存储器的分类。

  3. 理解静态与动态存储器的构成及其特点。

  4. 掌握典型的存储芯片(SRAM 6264、DRAM 2164A)的引脚构成。

  5. 了解高速缓冲存储器。

    1. 存储器三级存储体系指的是计算机系统中由外部存储器、内部存储器和高速缓存存储器三部分组成的存储器体系。

      1. 外部存储器
        外部存储器是指存储于计算机系统外部,与CPU相对独立的大容量存储设备,
        例如硬盘、光盘等。它的特点是容量大、传输速度相对较慢,但价格相对便宜,可以大量地存储、长时间保存数据。

      2. 内部存储器

        内部存储器是指与CPU直接交互的一种较快的存储器,包括RAM和ROM等种类。
        它的特点是传输速度相对较快、价格相对较贵、容量相对有限,但可以快速存取数据。

      3. 高速缓存存储器

        高速缓存存储器是一种介于内部存储器和CPU之间的存储设备,它的特点是存取速度非常快,但容量相对较小
        。它用于缓存最常用的数据和程序,以加快计算机对数据的访问速度,提高系统的运行速度和效率。
        在这里插入图片描述

      这三种存储器按照距离CPU的远近排序,也可以按照价格、速度、容量等方面的特点进行分类。
      在计算机系统中,这三种存储器都具有不同的作用,外部存储器和内部存储器用于长时间存储和常规访问,而高速缓存存储器则用于提高计算机系统的运算速度和效率。
      这样的三级存储体系可以有效地组织和管理计算机系统中的数据和程序,从而提高计算机系统的运行效率和可靠性。

      1. 存储器的性能指标

        存储器的性能指标包括:

        • 容量(Capacity):存储器的存储容量,一般以字节(Byte)为单位进行表示。

        • 速度(Speed):存储器处理数据的速度,一般以兆赫(MHz)或纳秒(ns)为单位进行表示。

        • 带宽(Bandwidth):指存储器每秒钟传输数据的能力,一般以兆字节/秒(MB/s)为单位进行表示。

        • 时延(Latency):指存储器访问时间、传输时间等时间延迟。
          在这里插入图片描述
          在这里插入图片描述
          在这里插入图片描述
          在这里插入图片描述

      2. 半导体存储器的分类

        半导体存储器是指由半导体材料制造而成的电子存储器件,按照存储方式和组织结构的不同,可以分为以下几类:

        • 动态随机存储器(DRAM):动态随机存储器是一种基于电容和晶体管的存储器件,具有容量大、价格便宜等特点。但由于电容存储方式的缺陷,需要定期进行刷新操作。

        • 静态随机存储器(SRAM):静态随机存储器是一种基于晶体管和电路器件的存储器件,具有传输速度快、性能稳定等特点,但价格相对较贵。

        • 只读存储器(ROM):只读存储器是一种只能在制造过程中写入数据的存储器件,其存储内容只能被读取,无法修改。ROM一般用于存储系统启动程序等。

        • 闪存存储器:闪存存储器是一种基于非挥发性存储介质的存储器件,具有容量大、断电不丢失等特点,广泛应用于便携式设备及嵌入式系统中。

        • 奈非尔存储器(FeRAM):奈非尔存储器是一种基于铁电材料的存储器件,具有读写速度快、功
          在这里插入图片描述

    2. 静态存储器和动态存储器是两种常见的半导体存储器件,它们的构成和特点有所不同。

      1. 静态存储器

        静态存储器(Static RAM,SRAM)是一种基于晶体管和电路器件的存储器件,具有以下特点:

        • 存储方式:电平存储,即数据以电平的形式保存在存储单元中。

        • 存储仅需要六个晶体管。

        • 读写速度快,速度一般比动态存储器快,通常在10ns以内。

        • 容量相对较小,与DRAM相比价格较高。

        • 由于存储器单元是放在一个电路和保持器组成的静态触发器中,因此不需要刷新电路。

        SRAM适用于高速缓存和高速RAM应用。

      2. 动态存储器

        动态存储器(Dynamic RAM,DRAM)是一种基于电容和晶体管的存储器件,具有以下特点:

        • 存储方式:电荷存储,即数据以电荷的形式保存在电容器中。

        • 存储需要一个电容和一个复合场效应管,即每个存储单元会有两个晶体管和一个电容。

        • 存储容量大,价格相对较低。

        • 读写速度较慢,速度一般比SRAM慢,通常在大于50ns。

        • 存储单元需要定期刷新操作。

        DRAM适用于用于计算机的主存、显存等存储器中。

        总的来说,静态存储器和动态存储器都具有不同的构成和特点,
        它们在存储单元的存储方式、存储速度、存储容量和刷新操作等方面都有所不同。
        在计算机系统中,根据不同的需求和应用场景,可以采用不同类型的存储器件以适应不同的任务要求。

      1. SRAM 6264的引脚构成

        SRAM 6264是一种常用的8K x 8位静态随机存储器,具有以下引脚:

        • 地址引脚(A0-A12,共13根):用于输入存储单元的地址信息。

        • 数据引脚(D0-D7,共8根):用于输入/输出数据。

        • 读写控制引脚(RW):用于控制读写操作。

        • 片选引脚(CS):用于选择芯片。

        • 输出使能引脚(OE):用于控制数据输出。

        • 数据写入使能引脚(WE):用于控制数据写入。

        • 电源引脚(VCC、GND):提供芯片的电源和地接线。

      2. DRAM 2164A的引脚构成

        DRAM 2164A是一种典型的64K x 1位动态随机存储器,具有以下引脚:

        • 地址引脚(A0-A15,共16根):用于输入存储单元的地址信息。

        • 数据输入/输出引脚(I/O):用于输入/输出数据。

        • 读写控制引脚(RAS、CAS):用于控制行列选择。

        • 片选引脚(CS):用于选择芯片。

        • 列地址选通引脚(CAS):用于控制列选通。

        • 行地址选通引脚(RAS):用于控制行选通。

        • 数据使能引脚(WE):用于控制数据读写。

        • 扩展引脚(VCC、GND、NC):提供芯片的电源和地接线及无连接引脚。

          总的来说,SRAM和DRAM都是常见的半导体存储器件,它们具有不同的引脚功能和特点,用于不同的计算机系统中,能够提高计算机系统的存储效率和速度。

    5.高速缓存存储器(Cache Memory)是介于CPU和主存之间的一种高速缓存存储器,用于存储最常用的数据和指令,以加快计算机对数据的访问速度,提高系统的运行速度和效率。

    高速缓存存储器的特点如下:

    1. 体积小,容量有限。

      高速缓存存储器的容量比主存小得多,但由于它在CPU内部,所以存储单元之间的距离更近,访问速度更快。

    2. 访问速度快。

      高速缓存存储器的存储单元与CPU之间的连接更为紧密,存储单元访问速度更快。

    3. 数据具有局部性。

      数据具有局部性,即在一段时间内,同样的数据或是位置相近的数据会被多次访问,因此把这些数据存储到高速缓存存储器中,会显著提高计算机系统的运行速度和效率。

    高速缓存存储器一般分为一级缓存和二级缓存:

    1. 一级缓存

      一级缓存是CPU内部的缓存存储器,容量非常小但速度非常快。它用于缓存CPU最常用的数据和指令,可以显著提高CPU的访问速度,但是成本较高。

    2. 二级缓存

      二级缓存位于CPU和主存之间,通常由单独的CPU芯片或插入主板上的独立芯片组成。一般容量较大,速度较快,成本较低。它一般用于缓存次常用的数据和指令。

      高速缓存存储器在现代计算机中已经成为标配,多层存储体系的设计,使得计算机系统可以更好地处理复杂、庞大的数据和指令,提高了计算机系统的运算速度与效率。

五、输入输出及中断技术

(一)知识范围

输入/输出概述;I/O 接口的基本构成与功能;端口概念及端口编址方式;三态门接口与锁存器接
口的构成;基本输入/输出方式(无条件传送方式、查询方式、中断方式与直接存储器存取方式);
中断技术,包括:中断的概念、中断的全过程、8086/8088 中断系统;中断控制器 8259 基本结构及工
作原理。

(二)考核要求

  1. 了解外设为什么不能直接与总线连接,接口起什么作用,了解接口完成的功能。

  2. 掌握接口内部基本组成;掌握端口的概念,明确端口与接口的关系;掌握端口的 2 种编址方式及各自特点。

  3. 掌握常用的输入/输出方法,理解其各自特点及应用场合。要求深入理解条件传送方式和中
    断传送方式的区别。

  4. 要求深入理解中断的概念,掌握中断全过程包含的步骤,掌握 8086CPU 响应中断的条件及
    响应过程,理解中断服务程序的一般构成。

  5. 了解 8086 系统中断源的分类,掌握 8086CPU 对它们的管理方法。

  6. 了解中断控制器 8259A 的基本结构与工作原理。

    1. 外设不能直接与总线连接主要有两个原因:

      1. 总线负载能力有限:总线是连接各种硬件设备的通用数据线,其负载能力有限,
        如果所有外设都直接连接到总线,总线上的电气负载将会变得很重,导致总线上信号的传输变得缓慢、不稳定,严重甚至导致系统崩溃。

      2. 外设的数据格式和总线不兼容:
        通常情况下,外设与处理器的数据格式是不兼容的,需要通过某种接口转换成总线上的标准数据格式,才能够与处理器进行通信。

      因此,为了解决上述问题,需要使用外设接口芯片。
      外设接口芯片的主要作用是将不兼容的外设数据格式转换为总线数据格式,同时还能够缓存和隔离外设和总线之间的数据传输,以保证系统总线的稳定性。
      外设接口芯片还可以起到智能控制、中断处理、DMA传输等功能。

      外设接口芯片已经成为各种计算机系统的必要组成部分。
      常见的外设接口芯片包括8255A、8259A、8253、8237等,并且不同的外设接口芯片之间也可以通过特定的方式互相连接起来,以实现更加复杂的系统功能。

      总的来说,外设接口芯片在计算机系统中发挥着至关重要的作用,
      能够实现将异构的外设设备与处理器之间进行有效连接和通信,并能够提高整个系统的稳定性和可靠性。

    2. 接口的内部基本组成包括三个部分:端口、控制逻辑和数据缓存器。

      1. 端口

        端口是与接口芯片外部连接的数据传输通路,可以分为输入端口和输出端口。
        输入端口用于接收外部设备传输的数据,输出端口则用于向外部设备发送数据。
        端口的宽度通常和接口的数据线宽度一致。

        1. 控制逻辑

        控制逻辑是接口芯片中的重要组成部分,负责对输入输出数据的控制、中断控制、地址译码等操作。

        1. 数据缓存器

        数据缓存器是接口芯片内部用于存储数据传输信息的缓存区域,它可以暂时存储来自输入端口的数据或等待输出的数据。

        端口是接口的核心部分之一,可以理解为数据传输通道的门户。
        不同于主存储器等设备有固定的物理地址,端口没有严格的物理地址,而是通过端口地址来进行访问。

        端口有两种编址方式:内存映射方式和I/O端口方式。

        1. 内存映射方式

        内存映射方式也叫做端口和存储器统一编址方式,将端口地址看作存储器单元地址的一种,并且在地址总线上能够用于访问端口。
        需要通过MMU等技术将端口地址与实际的端口进行对应和映射,通常需要在操作系统内核的驱动程序中进行实现。
        使用内存映射方式访问端口需要特殊的指令支持,通常采用IN和OUT指令进行读写操作。

        1. I/O端口方式

          I/O端口方式认为端口是一种独立的地址空间,端口地址与主存储器地址分开编址,
          需要使用特定的I/O地址线向处理器进行地址编址信号传递,通过控制器的流程来实现端口数据的读写操作。
          I/O端口方式可以方便地实现对端口的访问,并且能够支持更快速的端口操作,但需要在处理器的体系结构中提供专门的I/O地址线和相应的端口访问指令支持。

          总的来说,端口是接口的核心组成部分之一,用于实现与外界设备的数据传输通信。
          不同的端口编址方式有着不同的特点和优势,开发人员需要考虑实际的系统需求和处理器的支持情况,并选择最适合的端口编址方式。

    3. 常用的输入/输出方法包括:

      1. 程序查询方式:程序轮流查询外设是否需要读写数据,适用于外设数据传输速度较慢、数据量较小的情况,但会占用CPU的大量时间。

      2. 中断方式:外设通过硬件中断信号通知CPU,CPU停止执行当前程序,转而执行相应的中断处理程序,适用于需要频繁读写外设数据、数据量较大的情况。

      3. DMA方式:通过DMA控制器将数据在主存储器和外设之间直接传输,减少CPU的负担,适用于需要频繁读写数据并且数据量较大的情况。

        其中,中断方式是应用最广泛的输入/输出方式之一。中断方式具有以下优点:

        1. 可以实现异步通信:外设通过硬件中断信号通知CPU,不需要占用CPU一直查询外设。

        2. 可以实现高效的数据传输:中断方式能够大大减少CPU的负担,提高了系统的数据传输效率和响应速度。

        3. 可以实现多任务处理:中断方式能够让处理器在处理中断时停止执行当前程序并处理中断事件,从而实现多任务处理。

          在中断方式中还有两种传送方式:条件传送方式和中断传送方式。

          条件传送方式是指在CPU执行指令时,通过查询或者其他操作方式检测到IO设备就绪后立即读写数据,数据传输一旦开始就不会停止,中断事件将在数据传输完成后发出。

          中断传送方式是指外设向CPU发出硬件中断信号后,CPU暂停当前工作,进入中断处理程序,并且与IO设备进行数据通信。
          在数据传输过程中,倘若出现其他紧急事件,例如CPU需要处理紧急指令 或者IO设备发生重要错误,
          那么CPU将停止中断服务程序,转向处理紧急事件,IO设备的数据传输也随之终止。

          总的来说,各种输入/输出方式都有自己的特点和适用场合。
          在进行输入/输出设备的选择和使用时,需要根据系统的需求和实际情况选择适当的输入/输出方式,并根据实际情况灵活地进行调整和优化。

    4. 中断是计算机系统中一个重要的特性,是指外部设备向处理器发送的请求,要求处理器中断当前程序的执行,转而去执行中断服务程序,完成对外部设备的操作。

      中断分为硬件中断和软件中断。
      硬件中断是指来自外部设备的中断请求信号,如定时器、键盘等设备的中断请求。
      软件中断是指在程序执行过程中,由程序员通过软中断指令发起的中断请求。

      中断包含以下步骤:

      1. 中断请求:外部设备向处理器发送中断请求信号。

      2. 中断响应:CPU接收到中断请求信号后,根据优先级等条件判断是否响应中断。

      3. 现场保护:CPU在响应中断前,必须先保存当前程序的现场信息,包括程序计数器、堆栈指针、标志寄存器以及其他寄存器等。

      4. 中断处理:CPU跳转到中断描述符表中给定的中断向量入口点,执行中断码,并且处理中断事件。

      5. 恢复现场:中断处理程序执行完成后,CPU需要将先前保存的现场信息恢复回来,将中断处理流程切换回原来的程序执行流程。
        在这里插入图片描述

      8086CPU响应中断的条件:

      1. 当前程序必须是非中断模式运行。

      2. 系统中断允许标志必须设置为打开状态。
        在这里插入图片描述

      8086CPU响应中断的过程:

      1. 外设向处理器发送中断请求信号。

      2. 8086CPU响应请求,将CS、IP指向中断服务程序的入口点。

      3. 8086CPU将标志寄存器中的中断允许标志IF清零,禁止其他中断请求,以免中断嵌套。

      4. 8086CPU将现场信息压入堆栈,包括标志寄存器、程序计数器和cpu寄存器等。

      5. 8086CPU进入中断服务程序执行,处理完中断后,按照逆序恢复现场,将SP和BP寄存器恢复到中断前的位置,IF标志寄存器重新置位。

      6. 8086CPU将控制权交还给中断前被打断的程序,从堆栈中弹出现场信息,继续执行程序。

      中断服务程序的一般构成:

      1. 保存现场:在执行中断服务程序前,必须先将现场信息保存起来,包括程序计数器IP、堆栈指针SP等寄存器的值。

      2. 中断处理:执行中断服务程序的主要任务,进行与中断请求有关的处理,如读写设备数据等。

      3. 恢复现场:在中断处理完成后,必须将先前保存的现场信息恢复回来,以便CPU能够回到原来的程序执行点继续执行。

在这里插入图片描述

  1. 8086系统中断源主要可分为以下两类:

    1. 内部中断源

      内部中断源是由CPU内部产生的中断请求,主要包括以下几类:

      • Divide by Zero:除数为0
      • Single Step:单步执行指令
      • Non-Maskable Interrupt(NMI):不可屏蔽中断
      • Overflow:溢出
      • Bound Range Exceeded:超出指定数组范围
      • Invalid Opcode:非法操作码
      • Coprocessor Not Available:协处理器不可用
      • Double Fault:双重故障
      • Invalid TSS:无效的任务状态段
      • Segment Not Present:段不存在
      • Stack-Segment Fault:栈段故障
      • General Protection Fault:通用保护错误
      • Page Fault:页错误
      • Coprocessor Error:协处理器错误
    2. 外部中断源

      外部中断源是由外部设备产生的中断信号,以#INTA信号确认,包括以下几类:

      • 可编程中断控制器(PIC):主要用于处理硬件中断信号,能够管理多个中断源,并通过一个8259A芯片来控制中断信号的优先级和中断请求的屏蔽。

      • 定时器中断:通过8253/8254芯片实现,可用于计算时间、产生声音等。

      • 键盘中断:通过处理键盘实时输入的数据内容,向计算机系统发送中断信号,用于在体感设备方面应用广泛。

      8086CPU通过对中断向量表的管理来支持各种内部和外部中断。中断向量表是一个256项的表,每个表项都包含了一个中断服务程序的地址。
      在产生中断请求信号时,CPU可以用中断类型号来索引中断向量表,以获取相应中断服务程序的入口地址,并执行中断服务程序。

      8086CPU还通过中断控制器8259A来管理外部中断源,可以设置中断优先级、中断请求掩码、中断请求状态寄存器等,以实现对中断信号的处理和管理。
      由于8259A芯片有多级抢占的特性,可以很好地保障系统的稳定性和优先级处理能力。

      总的来说,8086CPU通过对中断向量表和中断控制器的管理,能够支持各种内部和外部中断,
      并且能够根据系统需要实现优先级处理、掩码设置等特定的中断管理功能,从而提高了计算机系统的稳定性和可靠性。

    3. 8259A是一种可编程中断控制器,用于管理多个中断请求和优先级,它的基本结构和工作原理如下:

      1. 基本结构

        8259A由多个寄存器组成,包括以下几个重要寄存器:

        • 指令寄存器(A0)和数据寄存器(D0):用于读写控制命令和数据。

        • 中断请求屏蔽寄存器(IMR):用于屏蔽某些中断信号,使其暂时不被处理。

        • 中断优先级寄存器(IPR):用于设置外部中断和内部中断的优先级。

        • 中断请求状态寄存器(ISR):用于控制中断信号的屏蔽和优先级。

      2. 工作原理

        8259A的工作包括以下几个步骤:

        • 初始化:在开始处理中断请求之前,需要对8259A进行初始化,设置中断控制方式、中断请求优先级和中断请求屏蔽控制等参数。

        • 接收外部中断请求信号:当外部设备产生中断信号时,8259A会向CPU发送一个中断请求信号(INTR),以请求CPU响应。

        • 中断类型选择:当CPU响应中断信号时,8259A会向CPU发送中断类型号,CPU根据中断类型号从中断向量表中获取中断服务程序的入口地址。

        • 中断处理:CPU执行中断服务程序,并将中断向量号压入堆栈中。在中断服务程序执行完毕后,使用RET指令返回中断处理前的程序入口。

        • 中断结束:中断处理完毕后,CPU向8259A发送中断结束信号(EOI),以允许8259A接收下一个中断请求信号。

        总的来说,8259A作为计算机系统中一个重要的中断控制器,通过管理多个中断请求信号的优先级和屏蔽,实现了对中断信号的精细控制和管理,从而提高了计算机系统的可靠性和稳定性。

六、常用接口技术

(一)知识范围

并行通信与串行通信;可编程并行通信接口芯片 8255A 的结构、控制字及工作方式;可编程计数
/定时器 8253 的结构、初始化编程和工作方式。

(二)考核要求

  1. 了解微机并行通信的基本概念,了解在并行通信过程中“联络”信号及其作用,理解并行通信
    (并行输入和输出)的实现过程。

  2. 掌握并行接口 8255A 的内部结构与引脚结构,了解 8255A 的功能特性。

  3. 掌握 8255A 的方式控制字和 C 口的按位置位/复位控制的格式及使用。

  4. 重点掌握 8255A 的工作方式 0 和方式 1,掌握 8255A 与系统总线及外设的连接方法。

  5. 了解计数/定时的具体应用,理解计数/定时的实现原理。

  6. 掌握定时/计数器 8253 的内部结构与引脚结构,掌握其工作原理。

    1.微机并行通信是指在微机系统中,使用并行通信方式,在多个数据线上同时传输数据的方式。在这种方式下,每个并行线可以传输一个字节或一个字的数据,可以实现高效的数据传输。
    在并行通信过程中,“联络”信号起到了非常重要的作用。
    联络信号通常指的是一个状态信号,它表示当前的数据传输是否完成,接收端 是否准备好接收新的数据。
    发送端在发送完一个数据字之后,会检测联络信号是否为“就绪”,如果为“就绪”,则继续发送下一个数据字;
    否则,发送端会等待联络信号变为“就绪”,然后再发送数据。

    为了实现并行通信,需要使用一些专门的硬件设备,
    例如并行口、并行接口卡等。通常情况下,用户可以通过编写程序来控制这些硬件设备,并实现并行输入和输出的功能。

    具体而言,实现并行输入可以按以下步骤进行:

    1. 初始化并行口或并行接口卡。

    2. 设置并行口或并行接口卡的通讯参数,例如数据位数、数据传输速率等。

    3. 启动并行口或并行接口卡的输入模式,接收数据。

    4. 当接收到数据后,将其存储到内存中,直到接收到指定的结束标志。

    实现并行输出可以按以下步骤进行:

    1. 初始化并行口或并行接口卡。

      1. 设置并行口或并行接口卡的通讯参数,例如数据位数、数据传输速率等。

      2. 启动并行口或并行接口卡的输出模式。

      3. 将需要发送的数据从内存读取出来,通过并行口或并行接口卡发送出去。

        以上就是并行通信(并行输入和输出)的基本实现过程。

    2. 8255A是一种常见的并行接口芯片,其内部由三个函数部件构成:端口A、端口B、端口C。每个函数部件由8位数据寄存器和控制寄存器组成。
      端口A和端口B可以用作输入口或输出口,而端口C既可以用作输入口,也可以用作输出口。

      8255A芯片共有24个引脚,主要包括以下几个:

      1. AD0-AD7:数据传输引脚,共8根。

      2. A0-A1:地址选择引脚,用于选择端口A、端口B或端口C。

      3. RD:读取引脚,用于读取芯片中的寄存器。

      4. WR:写入引脚,用于向芯片中的寄存器写入数据。

      5. CS:选择引脚,当为低电平时,芯片开始工作。

      8255A芯片的主要功能特性如下:

      1. 三个端口可以通过编程实现输入和输出。

      2. 可以通过外部中断控制来响应外部事件,并通过CPU进行响应。

      3. 支持口线输出方式和手摇开关输入方式。

      4. 支持读/写输入/输出、单/连续/块传输、随机访问等操作模式。

      5. 支持手工方式或计数器方式输出时序信号。

      8255A芯片作为一种常见的并行接口芯片,广泛应用于计算机、数字仪器、工业自动化等领域,可以大大提高数据的传输速度和系统的整体效率。

    3. 在8255A中,所有的操作和控制都是通过写入方式控制字来实现的。
      方式控制字位于一个8位的控制寄存器中,对应于本芯片的三个I/O端口,每个端口有2个控制位(一共6个),位于控制寄存器的第0~5位,控制着相应的I/O端口的工作方式。

      方式控制字的控制位设置如下:

      端口A:

      • 第0位:模式号,0表示输入模式,1表示输出模式;
      • 第1位:输出方式选择,0表示双向端口,1表示单向端口。

      端口B:

      • 第2位:模式号,0表示基本输入输出方式,1表示手摇开关输入方式;
      • 第3位:中断方式选择,0表示中断请求方式,1表示扫描方式。

      端口C:

      • 第4位:模式号,0表示基本输入输出方式,1表示串行通信方式;
      • 第5位:寄存器/控制字选择,0表示访问C端口读写寄存器,1表示访问方式控制字。

      C端口的按位位置控制,指的是通过向C端口的控制寄存器中写入一个控制字,来控制这个端口的8个位的开关状态。

      以C口为例,具体的按位位置控制格式如下:

      1. 先向C端口的控制寄存器中写入一个控制字,在控制字中设置第四位为1,表示访问方式控制字。

      2. 然后再向C端口的控制寄存器中写入一个控制字,在控制字中设置第五位为1,表示访问C端口的按位位置控制。

      3. 接下来向C端口输出数据时,将要控制的位位置上写1,不要控制的位位置上写0,即可实现按位位置控制。

        C端口按位位置控制的主要应用场景是通过并行口实现一些简单的数字逻辑电路的控制,例如输出一个8位数码管或驱动一些电机等。

      总的来说,掌握方式控制字和C端口按位位置控制格式及使用,对于在8255A芯片的编程和应用中起到了至关重要的作用。

    4. 8255A有两种工作方式:方式0和方式1,下面分别介绍。

      1. 方式0

        在方式0中,端口A和B通过设置的方式控制字选择输入或输出模式。
        每个端口的工作模式有3种:输入、输出和双向。在双向模式下,每个端口同时具有输入和输出功能,且第一半字节(端口A)和第二半字节(端口B)可以分别独立进行输入和输出。

        端口C的工作方式也有3种:基本输入输出方式、手摇开关输入方式和串行方式。
        在基本输入输出方式下,C端口的8个位可以配置为输入或输出模式;
        在手摇开关方式下,C端口的8个位可以配置为手动开关输入模式;
        在串行方式下,C端口的8个位可以通过向与C端口连接的设备发送或接收串行数据。

      2. 方式1

        方式1实际上是方式0的扩展,它增加了一种特殊工作模式:
        对于端口B的数据输入,可以通过端口C的控制字中的位7来屏蔽或使能。

      8255A与系统总线的连接方式一般有两种:

      直接与总线相连和通过外围接口芯片加以缓冲和隔离。
      直接与总线相连时,8255A要根据总线的信号来进行选择工作,这个选择通 常是由地址选择信号完成的。
      如果采用外围接口芯片,则应当比较注意8255A和外围接口芯片之间的连接方式,以确保数据的传输和控制的有效性。

      在8255A与外设的连接中,需要按照具体的外设的接口要求来配置端口操作模式,
      同时要注意控制字的正确设置,并合理控制芯片的输入输出数据信号,以确保数据的正确传输和控制的有效性。

      总的来说,掌握8255A的工作方式0和方式1的基本原理以及与系统总线和外设的连接方法是非常重要的,
      对于使用8255A芯片的编程和应用都有着至关重要的作用。

    5. 8255A中的计数器/定时器有两个,分别连接在端口C的P0和P1位。
      计数器/定时器可以用来实现时间延迟、计数等功能。
      计数器有两种计数方式:BCD和二进制。每种方式下的计数器都有16位的计数值,可以通过读取或写入寄存器改变其计数值。

      具体的计数/定时的应用包括以下几种:

      1. 延时:通过计数/定时器控制数据的发送时间,实现数据传输的延时。

      2. 定时器:通过计数/定时器控制时间,实现定时器的功能,例如计时器中断、时间显示等。

      3. 计数器:通过计数/定时器进行计数,实现计数的功能,例如事件计数、物品计数等。

        计数/定时器的实现原理是通过硬件控制来完成的。
        当计数/定时器被使能时,它会根据设定值开始计数/计时,然后计数器会以设定的速率不断递增,直到达到特定的值为止,并产生相应的中断信号。

        在使用计数/定时器时,需要注意设置计数/定时器计数/定时的方式(BCD或者二进制),以及计数/定时器的初始计数值和计数/定时器的控制寄存器的设置。
        同时还需要注意计数/定时器的计数速率和溢出时间等参数的设置。

        总的来说,计数/定时器是8255A芯片中非常重要的功能之一,对于各种计数和定时需求都有着广泛的应用。
        掌握计数/定时的实现原理和具体应用对于使用8255A芯片实现计数/定时功能具有重要的帮助。

    6. 8253是一种三路可编程定时/计数器芯片,常用于电子计算机的中断控制、计时、计数等方面。
      8253有两种工作模式:计数器模式和定时器模式。

      8253的内部结构有三个计数器,每个计数器有16位计数值、触发方式和输出方式等控制参数,同时也有加减计数、可编程分频、软件可重置和硬件触发等功能。

      8253芯片共有24个引脚,主要包括以下几个:

      1. CLK0-CLK2:计数器时钟输入,共3根。

      2. GATE0-GATE2:输入信号选择引脚,控制定时器的启动和停止。

      3. OUT0-OUT2:定时器输出引脚。

      4. RD:数据读取引脚,用于读取寄存器。

      5. WR:数据写入引脚,用于向寄存器写入数据。

      6. CS:芯片选择引脚,当为低电平时,芯片开始工作。

      8253芯片的工作原理是:在计数器模式下,8253将外部输入的时钟信号进行计数,计数结果将通过输出端口输出。
      在定时器模式下,8253将计数值和外部时钟信号相比较,当计数器计数值与设定值相同的时候,就会向外部的中断控制器发送中断请求信号。

      8253芯片也可以采用复位方式,以清除芯片中的计数值,重新开始计数。
      此外,计数器还具有自动重载功能,即在计数器计数溢出后,可以自行将计数器的计数值自动重置,以继续计数。

      总的来说,掌握8253的内部结构和引脚结构,以及其工作原理,对于理解8253的功能和应用至关重要,
      同时还能够为定时/计数器的选择及编程提供更加详细的技术支持。

  • 10
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理汇编语言复习参考微机原理与汇
微机原理汇编语言-实验报告(中北大学大数据学院)(前4个实验都可以直接运行,后面的几个需要用到proteus,这个要自己根据自己的情况搞,咱就不能保证在你电脑上能不能运行了) 实验一 简单程序设计 1. 编制一个简单的运算程序,并且调试完成。 2. 编制一个计算x=a2+b2 3. 验证上述结果的正确 实验二 循环、分支程序设计 1. 编制一个统计数组中正负数个数及均值的程序,并且调试完成得到正确的结果。 2. 设计计算Y=1+2+3+....,直到累加和刚好大于10000的程序并且调试完成。 3. 对给定数组中的所有元素,按从大到小的顺序排序,并且加以验证。 实验三 系统功能调用实验 1.编制一个具有屏幕提示和键盘输入的程序,键盘输入一个人名,在屏幕上显示“Hello 人名!”; 2.通过键盘输入一串包大小写字母和数字的字符串,统计其中大写、小写字母和数字字符的个数,并将结果显示在屏幕上。 实验四 8255并行接口实验 1.将8255一个端口接8个发光二极管,用不同工作方式控制其逐次点亮发光二极管。 2.将8255另一个端口接开关,用不同工作方式,编程将开关信息在发光二极管上显示出来。 3.验证上述操作的正确性,对实验结果进行解释 实验五 键盘、LED实验 1.在实验箱上,连接小键盘和LED显示器。 2.编程将键盘输入的数字,显示在显示器上,在按键时,原来显示的数字左移一位,新按的键值显示在最右端。 3.考虑两个键组合时的输入方法 4.对实验结果进行说明 实验六 中断实验 1.连接实验箱上的数码管,通过消抖开关作为中断源。 2.编写程序,完成在中断服务程序中记录中断次数,在主程序中显示按键次数。 3.将消抖开关换成一般开关,用同样的程序,再测试,仔细观察,发现了什么,为什么? 实验七 定时/计数器实验 1.使用计数器对消抖开关的按动次数进行计数,显示当前的计数值。 2.对实验箱中系统时钟进行计数,改变计数初值(两个初值要相差很大),观察有什么不同。 3.8253的初值用0和1,观察结果,并加以分析。 4.分析实验结果,并对实验结果进行说明。 实验八 综合实验 1.将实验箱设计成一个电子表,该表能分时(或按键切换)显示年月日、时分秒; 2.设置按键,通过按键可以修正日期和时间,在修正日期、时间时,电子表仍然可以继续工作。 3.AD实验,用显示器显示当前AD的输入电压值,要求精确到小数点后2位数(选做)
好的,编写一个完整的电子琴需要涉及硬件和软件两个方面,因此需要进行一些前置工作。首先,您需要选择一款单片机,例如STC89C52,然后选择一款音频模块,例如DFPlayer Mini。接下来,您需要编写一些汇编语言代码来实现电子琴的功能。 以下是一个简单的电子琴的汇编语言代码示例: ``` ; 定义引脚 KEY_PORT EQU P1 BUZZER_PORT EQU P2 ; 定义常量 TONE_1 EQU 1000 TONE_2 EQU 2000 TONE_3 EQU 3000 TONE_4 EQU 4000 ; 定义变量 KEY_VALUE DB 0 ; 初始化引脚 INIT: MOV KEY_PORT, #0xFF ; 初始化按键引脚为输入 MOV BUZZER_PORT, #0x00 ; 初始化蜂鸣器引脚为输出 ; 主循环 MAIN: MOV A, KEY_PORT ; 读取按键状态 CPL A ; 取反 ANL A, #0x0F ; 只取低四位 MOV KEY_VALUE, A ; 存储按键状态 CJNE KEY_VALUE, #0x01, TONE_1 ; 按键1,发出1kHz的音频信号 CJNE KEY_VALUE, #0x02, TONE_2 ; 按键2,发出2kHz的音频信号 CJNE KEY_VALUE, #0x04, TONE_3 ; 按键3,发出3kHz的音频信号 CJNE KEY_VALUE, #0x08, TONE_4 ; 按键4,发出4kHz的音频信号 JMP MAIN ; 循环等待按键事件 ; 发出1kHz的音频信号 TONE_1: MOV BUZZER_PORT, #0xFF ; 打开蜂鸣器 ACALL DELAY_MS(100) ; 延迟100ms MOV BUZZER_PORT, #0x00 ; 关闭蜂鸣器 RET ; 发出2kHz的音频信号 TONE_2: MOV BUZZER_PORT, #0xFF ; 打开蜂鸣器 ACALL DELAY_MS(50) ; 延迟50ms MOV BUZZER_PORT, #0x00 ; 关闭蜂鸣器 RET ; 发出3kHz的音频信号 TONE_3: MOV BUZZER_PORT, #0xFF ; 打开蜂鸣器 ACALL DELAY_MS(200) ; 延迟200ms MOV BUZZER_PORT, #0x00 ; 关闭蜂鸣器 RET ; 发出4kHz的音频信号 TONE_4: MOV BUZZER_PORT, #0xFF ; 打开蜂鸣器 ACALL DELAY_MS(25) ; 延迟25ms MOV BUZZER_PORT, #0x00 ; 关闭蜂鸣器 RET ; 延迟指定的毫秒数 DELAY_MS: MOV R1, #0xFF DLY_LOOP: MOV R0, #0xFF INNER_LOOP: DJNZ R0, INNER_LOOP DJNZ R1, DLY_LOOP RET ``` 这个示例实现了一个简单的电子琴,可以通过按不同的按键发出不同频率的音频信号。需要注意的是,这个示例只是一个简单的演示,实际的电子琴需要更复杂的代码和更多的硬件支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值