第一篇:微机原理与接口技术每章小结
第一章
微型计算机概述
课程知识总结:
本章的主要内容为计算机的基本结构、微型计算机系统的组成和主要性能指标、不同进位计数制计数方法、不同进位制数之间相互转换的方法、数和字符在计算机中的表示方法、简单的算术运算以及计算机中的数据表示与编码。
知识要点:
一、微型计算机的基本构成:1.微型计算机的结构特点 2.微处理器 3.内存储器:① 内存单元的地址和内容 ② 内存操作 ③ 内存分类 3.输入输出设备和输入输出接口 4.总线: ① 地址总线 ② 数据总线 ③ 控制总线。
二、微型计算机系统:1.微型计算机系统的组成:①软件.② 硬件: 主机、微处理器:控制器和运算器、内存处理器:ROM和 RAM、I/O接口:串行接口和并行接口 ③ 外部设备:输入设备、外储存器、其他设备和输出设备。④ 电源。2.软件: ① 系统软件:操作系统、语言处理器如汇编、解释、编译等软件 ② 支持软件
③ 应用软件:工程计算软件、数据计算软件和过程计算软件。
三、数制运算基础:二进制数(B)、八进制数(Q)、十六进制数(H)、十进制数(D)。
三、码制:1.带符号数编码:原码、反码、补码
2.数的编码:ASCII:码数字编码规则和字母编码规则。BCD码:压缩BCD码和非压缩BCD码。
第二章 微处理器
课程知识总结:
本章要以Intel系列微处理器为例,从应用理解8086微处理器的功能结构、工作模式和引用脚本特性、定性的总线操作时序。存储器组织和I/O组织等概念。然后介绍微处理器的发展史历程和新技术。
知识要点:
一、8086微处理器的结构:1.8086的功能结构:执行单元EU(AX、BX、CX、DX、SP、BP、SI、DI、标志寄存器)2.总线接口单元BIU(CS、DS、SS、ES、IP)功能及特点。
二、8086的寄存器结构:1.通用数据寄存器:一般用法和隐含用法 2.地址指针和编制寄存器:一般用法和隐含用法及特点 3.段寄存器:数据段寄存器、堆栈段寄存器、附加段寄存器 4.指令指针寄存器和标记寄存器:指令指针寄存器IP和标志寄存器FR。
三、8086的工作模式及引脚功能:1.地址/数据 2.地址/状态 3.控制:① 负责地址BHE/S7、ALE ② 数据允许和收发 DEN、DT/R ③ 负责读写RD、WR、M/IO ④ 负责中断INTR、NMI、INTA ⑤ 负责总线HOLD、HLDA ⑥协调CLK、READY、TEST ⑦ 模式选择MN/MX=5V。
四、系统配置(最小模式):1.时钟发生器(8284)2.8086CPU 的系统组成 3.地址锁存器
(74LS373、8282)4.数据收发器(8286、74LS245)此为三总线(DB、AB、CB)。
五、时序:1.时钟周期(T状态)------------总线周期-----------指令周期
2.① 基本读总线周期
② 基本写总线周期 ③ 复位操作时序------寄存器的复位值 ④ 中断响应时序。
六、Intel 8086微处理器的发展历程:第一代微处理器------第二代微处理器------第三代微处理器------第四代微处理器------第五代微处理器------第六代微处理器等。
第三章 寻址方式与指令系统
课程知识总结:
本章讨论指令格式和寻址方式的基础上,只要介绍8086CPU的指令系统,并简单介绍80x86、Pentium扩充和增加的指令,详细解析各类指令的功能和用法,以便进一步学习会变语言程序设计。
知识要点:
一、指令格式:1.标号:英文字母、数字、特殊字符 2.操作码 3.操作数 4.注释
二、寻址方式:1.立即数寻址2.寄存器寻址 3.存储器寻址:① 直接寻址 ② 寄存器间接寻址 ③ 寄存器相对寻址 ④ 基址变址相对址 ⑤ 寄存器比例寻址。
三、指令功能:1.数据传送类(通用数据传送指令、堆栈操作令、交换指令XCHG、换码指令、有效地址传送指令、标志传送指令、输入输出指令、输出指令OUT)2.算术运算类指令(加法指令,减法指令, 乘法指令,除法指令,BCD码调整指令)3.逻辑类指、令移位指令(AND、OR、NOT、XOR、TEST、SAL、SHL、SAL、ROR)4.串操作类指令(MOVS、LODS、STOS、CMPS、SCAS、REP、REPE/REPZ)5.控制转移类指令(条件和无条件转移、子程序调用和返回指令、子程序调用和返回、中断)6.处理器控制类指令(标志操作指令、外部同步指令)7.BCD码调整指令。
第四章 汇编程序设计
课程知识总结:
本章围绕汇编语言程序的结构展开,主要内容是汇编语言的语句格式、汇编语言的数据和表达式、汇编语言的伪指令语句格式和作用与宏指令,再次基础上具体讨论顺序结构、分支结构、循环结构及子程序的汇编语言程序设计方法,调用程序和被调用程序之间数据传递途径以及汇编源程序上机调试过程。
知识要点:
一、汇编语言程序格式:1.汇编语言程序结构:① 源程序的一般结构 ② 源程序的结构特点
2.汇编语言语句类型及格式:① 语句结构 ② 语句格式。
二、汇编语言的数据表达式:1.常量、变量与标号:① 常量:数值常量、字符常量、符号常量 ② 变量 ③ 标号 2.汇编表达式与运算符:① 算术运算符 ② 逻辑运算符 ③ 关系运算符 ④ 数值运算符 ⑤ 修改运算符 3.常量、变量与标号:① 常量:数值常量、字符串常量、符号常量 ② 变量:段属性、编移量属性、类型属性 ③ 标号:段属性、编移量属性、距离属性。
三、指令:1.符号定义伪指令
EQU 2.段定义伪指令
SEGMENT……ENDS 3.段寻址伪指令4 过程定义伪指令
PROC、ENDP 4.模块定义与连接 5.其他伪指令…….6.宏命令伪指令:① 宏定义
② 宏调用 ③ 宏展开 ④ 宏取消 7.数据定义伪指令
DB、DW、DD……8.段定义伪指令 9.段寻址伪指令10.过程定义伪指令。
四、程序设计:1.程序设计步骤 2.基本结构程序设计 3.子程序设计 4.程序设计举例。
五、汇编语言与C语言的接口:1.汇编语言与高级语言接口
2.混合编程:① C语言调用汇编 ② C语言嵌入汇编。
第五章 输入输出接口
课程知识总结:
本章讨论输入/输出接口的基本概念,包括输入/输出接口的作用、内部结构、传送信息的分析、I/O端口编址以及主机通过接口与外设之间数据传送的方式和CPU外设之间的数据传输方式。
知识要点:
一、I微机接口与接口技术::1.接口的基本功能:① 数据缓冲功能
② 端口选择功能 ③
信号转换功能
④
接受和执行CPU命令功能 ⑤ 中断管理功能 ⑥ 可编程功能
2.端口的基本结构:① 端口 ② 地址译码电路 ③ 数据缓冲器与锁存器 3.接口电路中的信息:① 数据信息 ② 状态信息 ③ 控制信息。
二、I/O端口编址方式:统一编制方式、独立编制方式。
三、端口地址译码:1.门电路译码 2.译码器译码 3.比较器译码。
四、CPU与外设之间的数据传送方式:1.程序控制方式:① 无条件传送方式 ② 查询传送方式
2.中断传送方式 3.直接存储器传送方式。
第六章 存储器
课程知识总结:
微型计算机系统钟的内存通常由半导体构成。半导体存储器是用半导体器件作为存储介质的存储器。本章讨论半导体存储器芯片的类型、存储原理、引脚功能、如何与CPU(或系统总线)连接等问题。将重点讨论RAM和ROM的工作原理、结构、特点,并介绍高速存储器和虚拟存储器。
知识要点:
一、半导体存储器的分类和性能特点:1.半导体存储器的分类:① 按制造工艺分类:双极性、金属氧化半导体 ② 按存储方向分类:随机存取存储器、只读存储器 2.半导体存储器的组成:① 存储器 ② 地址译码器 ③ 控制逻辑电路 ④ 数据缓冲器 3.半导体存储器的户主要性能指标:① 存储容量 ② 存取速度 ③ 功耗
④ 可靠性
⑤ 性能 / 价格比。
二、随机存取存储器:1.静态RAM:① SRAM 的基本存储电路 ② SRAM的读写过程:读出过程、写入过程 ③ 典型SRAM芯片 2.动态ROM:①
DRAM的基本存储电路 ②
DRAM的特点:DRAM芯片的结构特点、DRAM的刷新 ③ 典型DRAM芯片:芯片的引脚、内部结构 3.PC机内存条:① FPM DRAM ② EDO DRAM ③ SDRAM ④ DDR ⑤ DDR2 ⑥ DRDRAM。
三、只读存储器:1.可擦除可编程EPROM:①基本存储电路和工作原路 ② 编程和查处过程 ③ 典型的ERROM芯片的介绍 2.电可擦除可编程E2PROM:①芯片特性 ② 工作方式3.快速擦写存储器:① 闪存的特点 ② 闪存的应用。
四、半导体存储器接口技术:1.存储器与CPU接口的一般问题 2.存储器与地址总线的连接 3.存储器与控制总线、数据总线的连接
五、高速缓冲存储器:1.Cache系统基本结构与原理 2.地址印象方式 3.替换算法等
六、虚拟存储器:1.页式虚拟存储器 2.段式虚拟存储器 3.段页式虚拟存储器。
第七章 中断系统
课程知识总结:
本章主要内容:中断的基本概念、CPU响应中断的条件、中断响应过程、中断服务程序的执行;8086中断系统;可编程中断控制器8259A的引脚功能、编程结构以及工作工程。知识要点:
一、中端的基本概念:1.中断概念的基本概念:中断、中断源(中断源的中断优先级别)及中断系统 2.中断处理过程:中断请求、中断判优、中断响应、中断服务、中断返回 3.中断嵌套。
二、8086的中断系统:1.8086中断类型:①外部中断:非屏蔽中断、课屏蔽中断 ② 内部中断:专用中断、指令中断 2.中断向量和中断向量表 3.中断向量的装入 4.8086中断响应过程 :外部中断响应过程、内部中断响应过程:非屏蔽中断、课屏蔽中断响应。
三、课编程中断控制器8257A:1.8257A的内部结构和引脚特点:① 8257A的内部结构 ② 中断服务寄存器 ③ 中断屏蔽寄存器 ④ 优先权分析器 ⑤ 读写逻辑等 2.8257A的工作过程 3.8257A的工作方式 4.8257A的级联电路 5.8257A的编程命令。
四、中断调用:DOS和BIOS中断的调用方法及DOS和BIOS中断的调用例子。
第八章 计数器/定时器与DMA控制器
课程知识总结:
本章主要内容是定时器/计算器的应用场合;如何实现可编程计时器/定时器8253;可编程计数器/定时器8253芯片的内部结构、引脚功能、计数原理、6种工作方式下的工作条件和输出波形特征。
知识要点:
一、定时器/计算器的工作原理:1.微机系统的定时 2.外部定时方法::软件定时、硬件定时 3.可编程计数器/定时器的工作原理
二、可编程计时器/定时器8253:1.8253内部结构及引脚功能:8253内部结构、8253引脚功能 2.8253的工作方式及特点:方式0:计数结束中断方式、方式1:可重新触发单稳态输出方式、方式2:分频器方式、方式3:方波发生器方式、方式4:软件选通触发方式、方式5:硬件选通触发方式
3.8253编程:设置方式控制字、设定计数初值或定时常数 4.8253的应用:硬件、软件编程。
三、DAR传送的基本原理:1.DAM传送的特点 2.DAM传送的机制:① 周期挪用 ② 桌旗扩展 ③ CPU停机 3.DAM传送的模式 :① 单字节传送模式 ② 数据块传送模式③ 请求传送模式。
四、DAM控制器的8237A :1.8237A的内部结构及引脚功能:① 8237A的内部结构:模
式寄存器、基地寄存器、当前地址寄存器、基本字节计数器、当前字节计数器 ② 8237A 的引脚功能: DREQ3—DREQ0、DACK3—DACK0、HRQ、HLDA、A7—A4、A3—A0、RESET、READY、CLK、AEN 等 ③ 8237A的端口地址 2.8237A的工作过程与工作方式:① 8237A的工作过程 :S1、S2、S3、S4 ② 8237A的工作方式:通道的优先级问题、工作模式、操作类型、DAM效验 3.8237A的编程:① 方式控制寄存器② 命令寄存器③ 状态寄存器④ 请求寄存器 ⑤ 屏蔽寄存器 ⑥ 综合寄存器 ⑦ 软件命令:清楚高/地触发器、软件复位命令、清屏蔽寄存器命令 4.8237A的应用举例。
第九章 并行接口与串行接口
课程知识总结:
本章主要内容:串并行接口的基本概念,介绍可编程并行接口芯片8255A和可编程串行接口芯片8251A的功能、结构、工作方式、编程及应用,能根据实际需要编写8251的程序及其初始化设置。
知识要点:
一、并行接口概述:1.并行接口的特点 2.并行接口的类型。
二、可编程并行接口8255A:1.8255A内部结构及引脚功能:① 8255A的内部结构:数据总线缓冲器、读/写控制逻辑、输入/输出端口 ② A组和B组控制电路 ② 8255A的引脚功能:与外设连接的引脚、与CPU炼焦的引脚:D7—D0、REDET、A1—A0等 2.8255A的编程:① 方式控制字 ② 端口C位置/复位控制字 3.8255A的工作方式:① 工作方式0 ② 工作方式1 ③ 工作方式2 4.8255A的应用举例。
三、串行通信的基本概念:1.串行数据传输方式: ① 全双工 ② 半双工 2.波特率和发送/接收时钟:① 波特率 ② 发送/接收时钟 3.串行通信的基本方式:① 异步通信 ② 同步通信 4.信号调制与解调 5.串行接口任务:① 进行串并转换 ② 实现串行数据格式化 ③ 可靠性检验 ④ 实施接口与通信设备之间的联络控制。
四、可编程串行接口8251A:1.8251A的基本性能 2.8251A内部结构与引用功能:① 8251A内部结构:接收器、发送器、数据总线缓冲器、读/写控制盒调解控制 2.8251A的引脚功能:① 与CPU的接口信号:DB7-0、CLK、TxRDY、TxE、RxRDY、SYNDET等 ② 与装置的接口信号 3.8251A的控制字和状态字:① 方式控制字 ② 操作控制字 ③ 状态字 4.8251A的初始化编程 5.8251A应用举例:① 分析 ② 设计:硬件连接、软件编程:接收程序、发送部分。
总结
微机的最基础语言——计算机语言的一个最基础最古老的汇编语言。俗话说的好,越基础的东西越重要,因此它在重大的编程项目中应用的最为广泛。就我个人的理解,汇编是对寄存的地址,以及数据单元进行最直接的修改。不过它有两面性,有优点,也有缺点,最重要的一点就是它本身较为复杂:对某个数据进行修改时,本来很简单一个操作会用比较烦琐的语句来解决,而这些语句本身在执行和操作的过程中,占用大量的时间和成本。因此,在一些讲求效率的场合,这种语言并不可取,所以可以适当对它进行取舍。
汇编语言对学习其他计算机高级语言起到一个比较、对照参考的作用。因为学习总是从最简单最原始最基础的知识点开始,而汇编语言就是比较原始的一种计算机语言,故而学习高级语言也当然可以从汇编开始。而学了高级计算机语言C以后,我经常将C与汇编进行对比。也发现其中的差异,以及各自的特点,优缺点,从而让我对计算机语言又有了更深一层次的了解。由此,可以扩展的学习C++,JAVA等高级语言,这实际上是掌握了学习计算机各种语言的能力和素养。所以掌握汇编语言对以后其他语言的学习有极大的帮助和促进作用。
第二篇:微机原理与接口技术小结
微机原理与接口技术基础
1.为什么在流水CPU中,将一条指令从取指到执行结束的任务分割为一系列子任务,并使各子任务在流水线的各个过程段并发地执行,从而使流水CPU具有更强大的数据吞吐能力?
这里可以使用时空图法证明结论的正确性。
假设指令周期包含四个子过程:取指令(IF)、指令译码(ID)、取操作数(EX)、进行运算(WB),每个子过程称为过程段(Si),这样,一个流水线由一系列串连的过程段组成。在统一时钟信号控制下,数据从一个过程段流向相邻的过程段。
2.译码器是如何译码的?寻址空间是如何确定的?译码器与寻址空间是怎么联系的?
译码器实际上是由许多与门、或门、非门和它们的组合构成的。它有若干个输入端和若干个输出端(也可能只有一个输出端)。对某一个输出端来说,它的电平高低必然与输入的某一种状态相对应。
例如,具有4个输入端的与非门就是一个简单的译码器,只有四个输入端为1111时,它的输出端才为0。如果将地址总线的A9、A8、A7、A6与它的四个输入连接起来,并把它的输出连到存储器芯片或某个需要寻址的外设接口的片选端(假定低电平有效),那么,只有当A9、A8、A7、A6为1111时,存储器芯片或外设才会被选中。
译码器的寻址空间取决于地址总线的哪几根线接到译码器的输入端,例如上例,地址总线的A9、A8、A7、A6与译码器的输入连接,那么其寻址空间应该是11 1100 0000~11 1111 1111,即3C0H~3F0H。
注意,没有参与译码的低位地址线必然要参与存储器芯片或外设接口的内部译码。也就是说,内部译码地址范围是0--2n11 0000。
可以说,译码器的译码输出决定了寻址空间的起始地址,内部译码决定了寻址空间的大小。由于上一条指令的四个子过程全部执行完毕后才能开始下一条指令,因此每隔4个单位时间才有一个输出结果,即一条指令执行结束。表示非流水CPU的时空图。由于上一条指令与下一条指令的四个过程在时间上可以重叠执行,因此,当流水线满载时,每一个单位时间就可以输出一个结果,即执行一条指令。
比较后发现:流水CPU在八个单位时间中执行了5条指令,而非流水CPU仅执行了2条指令,因此流水CPU具有更强大的数据吞吐能力。
3.书本上讲的是若是计算结果中1的个数为偶数时,则PF=1;但我又在另外的辅导书上看到的说如果计算结果的低8位中1的个数为偶数,PF=1.请问老师是否是低八位?
答:对,PF只与结果的低8位有关。
4.80386 CPU包含哪些寄存器?各有什么主要用途?
80386共有7类34个寄存器。它们分别是通用寄存器、指令指针和标志寄存器、段寄存器、系统地址寄存器、控制寄存器、调试和测试寄存器。
(1)通用寄存器(8个)
EAX,EBX,ECX,EDX,ESI,EDI,EBP和ESP。每个32位寄存器的低16位可单独使用,同时AX、BX、CX、DX寄存器的高、低8位也可分别当作8位寄存器使用。它们与8088/8086中相应的16位通用寄存器作用相同。
(2)指令指针和标志寄存器。
指令指针EIP是一个32位寄存器,存放下一条要执行的指令的偏移地址。
标志寄存器EFLAGS也是一个32位寄存器,存放指令的执行状态和一些控制位。
(3)段寄存器(6个)
CS,DS,SS,ES,FS和GS。在实方式下,它们存放内存段的段地址。在保护方式下,它们被称为段选择符。其中存放的是某一个段的选择符。当选择符装入段寄存器时,80386中的硬件章自动用段寄存器中的值作为索引从段描述符表中取出一个8个字节的描述符,装入到与该段寄存器相应的64位描述符寄存器中。
(4)控制寄存器(4个)
CR0、CRl、CR2和CR3。它们的作用是保存全局性的机器状态。
(5)系统地址寄存器(4个)
GDTR、IDTR、LDTR和TR。它们用来存储操作系统需要的保护信息和地址转换表信息、定义目前正在执行任务的环境、地址空间和中断向量空间。
(6)调试寄存器(8个)
DR0~DR7。它们为调试提供硬件支持。
(7)测试寄存器(8个)
TR0~TR7,其中TR0~TR5由Intel公司保留,用户只能访问TR6、TR7。它们用于控制对TLB中的RAM和CAM相连存储器的测试。TR6是测试控制寄存器,TR7是测试状态寄存器,保存测试结果的状态
5.什么是外部中断源?什么是中断向量码?什么是读选通信号?
答:外部中断源就是在CPU外部能够产生中断请求的设备/器件;通俗地说,中断向量码就是中断的编号,其值为0-FFH;选通信号就是打开逻辑门的控制信号,或用来锁存信息(类似D触发器的CP或CLK)的控制信号。读选通信号就是用来打开总线缓冲器,以便把的数据送到总线上的控制信号。
6.CPU处于单步执行指令的工作方式(课本49页),请问什么是单步执行指令工作方式? 答:在这种方式下,CPU每执行一条指令,就产生一次特殊的中断,以便可以停下来检查执行的结果。主要用于各类程序的调试。
7.片选信号(CS)到底是起使数据有效或无效的作用还是起选择芯片的作用啊?若是前者,干吗叫片选?
片选信号就是选择芯片的信号。前者不叫片选信号,应该叫允许信号。
8.书本上讲的是若是计算结果中1的个数为偶数时,则PF=1;但我又在另外的辅导书上看到的说如果计算结果的低8位中1的个数为偶数,PF=1.请问老师是否是低八位?
微型计算机基础
1.为什么在流水CPU中,将一条指令从取指到执行结束的任务分割为一系列子任务,并使各子任务在流水线的各个过程段并发地执行,从而使流水CPU具有更强大的数据吞吐能力?
这里可以使用时空图法证明结论的正确性。
假设指令周期包含四个子过程:取指令(IF)、指令译码(ID)、取操作数(EX)、进行运算(WB),每个子过程称为过程段(Si),这样,一个流水线由一系列串连的过程段组成。在统一时钟信号控制下,数据从一个过程段流向相邻的过程段。
2.译码器是如何译码的?寻址空间是如何确定的?译码器与寻址空间是怎么联系的?
译码器实际上是由许多与门、或门、非门和它们的组合构成的。它有若干个输入端和若干个输出端(也可能只有一个输出端)。对某一个输出端来说,它的电平高低必然与输入的某一种状态相对应。
例如,具有4个输入端的与非门就是一个简单的译码器,只有四个输入端为1111时,它的输出端才为0。如果将地址总线的A9、A8、A7、A6与它的四个输入连接起来,并把它的输出连到存储器芯片或某个需要寻址的外设接口的片选端(假定低电平有效),那么,只有当A9、A8、A7、A6为1111时,存储器芯片或外设才会被选中。
译码器的寻址空间取决于地址总线的哪几根线接到译码器的输入端,例如上例,地址总线的A9、A8、A7、A6与译码器的输入连接,那么其寻址空间应该是11 1100 0000~11 1111 1111,即3C0H~3F0H。
注意,没有参与译码的低位地址线必然要参与存储器芯片或外设接口的内部译码。也就是说,内部译码地址范围是0--2n11 0000。
可以说,译码器的译码输出决定了寻址空间的起始地址,内部译码决定了寻址空间的大小。由于上一条指令的四个子过程全部执行完毕后才能开始下一条指令,因此每隔4个单位时间才有一个输出结果,即一条指令执行结束。表示非流水CPU的时空图。由于上一条指令与下一条指令的四个过程在时间上可以重叠执行,因此,当流水线满载时,每一个单位时间就可以输出一个结果,即执行一条指令。
比较后发现:流水CPU在八个单位时间中执行了5条指令,而非流水CPU仅执行了2条指令,因此流水CPU具有更强大的数据吞吐能力。
3.书本上讲的是若是计算结果中1的个数为偶数时,则PF=1;但我又在另外的辅导书上看到的说如果计算结果的低8位中1的个数为偶数,PF=1.请问老师是否是低八位?
答:对,PF只与结果的低8位有关。
4.80386 CPU包含哪些寄存器?各有什么主要用途?
80386共有7类34个寄存器。它们分别是通用寄存器、指令指针和标志寄存器、段寄存器、系统地址寄存器、控制寄存器、调试和测试寄存器。
(1)通用寄存器(8个)
EAX,EBX,ECX,EDX,ESI,EDI,EBP和ESP。每个32位寄存器的低16位可单独使用,同时AX、BX、CX、DX寄存器的高、低8位也可分别当作8位寄存器使用。它们与8088/8086中相应的16位通用寄存器作用相同。
(2)指令指针和标志寄存器。
指令指针EIP是一个32位寄存器,存放下一条要执行的指令的偏移地址。
标志寄存器EFLAGS也是一个32位寄存器,存放指令的执行状态和一些控制位。
(3)段寄存器(6个)
CS,DS,SS,ES,FS和GS。在实方式下,它们存放内存段的段地址。在保护方式下,它们被称为段选择符。其中存放的是某一个段的选择符。当选择符装入段寄存器时,80386中的硬件章自动用段寄存器中的值作为索引从段描述符表中取出一个8个字节的描述符,装入到与该段寄存器相应的64位描述符寄存器中。
(4)控制寄存器(4个)
CR0、CRl、CR2和CR3。它们的作用是保存全局性的机器状态。
(5)系统地址寄存器(4个)
GDTR、IDTR、LDTR和TR。它们用来存储操作系统需要的保护信息和地址转换表信息、定义目前正在执行任务的环境、地址空间和中断向量空间。
(6)调试寄存器(8个)
DR0~DR7。它们为调试提供硬件支持。
(7)测试寄存器(8个)
TR0~TR7,其中TR0~TR5由Intel公司保留,用户只能访问TR6、TR7。它们用于控制对TLB中的RAM和CAM相连存储器的测试。TR6是测试控制寄存器,TR7是测试状态寄存器,保存测试结果的状态
5.什么是外部中断源?什么是中断向量码?什么是读选通信号?
答:外部中断源就是在CPU外部能够产生中断请求的设备/器件;通俗地说,中断向量码就是中断的编号,其值为0-FFH;选通信号就是打开逻辑门的控制信号,或用来锁存信息(类似D触发器的CP或CLK)的控制信号。读选通信号就是用来打开总线缓冲器,以便把的数据送到总线上的控制信号。
6.CPU处于单步执行指令的工作方式(课本49页),请问什么是单步执行指令工作方式? 答:在这种方式下,CPU每执行一条指令,就产生一次特殊的中断,以便可以停下来检查执行的结果。主要用于各类程序的调试。
7.片选信号(CS)到底是起使数据有效或无效的作用还是起选择芯片的作用啊?若是前者,干吗叫片选?
片选信号就是选择芯片的信号。前者不叫片选信号,应该叫允许信号。
8.书本上讲的是若是计算结果中1的个数为偶数时,则PF=1;但我又在另外的辅导书上看到的说如果计算结果的低8位中1的个数为偶数,PF=1.请问老师是否是低八位?对,PF只与结果的低8位有关
第三篇:微机原理与接口技术试题答案
微机原理与接口技术试题答案
一、填空题(20*1)
1、微机系统由(硬件系统)和(软件系统)两部分组成。2、8086有(20)位地址线,存储器容量为(1M)B。3、8086CPU 内部组成结构从功能上讲,可分为(BIU)和(EU)两部分。4、8086/8088的四个段寄存器为(DS)、(ES)、(SS)、(CS)
5、用来存放CPU状态信息的寄存器是(FLAGS)。
6、用来存放指令地址的寄存器是(IP)。7、8086的16位标志寄存器FLAGS中OF=1表示运算结果(溢出),ZF=1表示运算结果为零。PF=0表示运算结果的低8位中1的个数为(奇数)。
8、8086的16位标志寄存器FLAGS中IF=1表示CPU(允许)中断,TF=1表示CPU进入(单步)工作方式。
9、地址4000H:0300H,其物理地址是(40300H),段地址是(4000H),偏移地址是(0300H)。
11、I/O端口的寻址方式有两种,分别是(直接寻址),(间接寻址)。
12、指令JO NEXT 表示OF=(1)时转移。
13、将I/O设备端口内容读入AL中的指令助记符是(IN)。14、8086CPU的 I/O指令采用间接寻址时,使用的间接寄存器是(DX)。
15、设置DF=1的指令为(STD)。
16、清除CF标志的指令为(CLC)。
17、一对操作堆栈的指令为(POP)和(PUSH)。
18、LOOPNZ的循环条件为(CX≠0且ZF=0)。
19、实现无符号数乘2的指令的助记符是(SHL),实现有符号数除2的指令的助记符是(SAR)。22、8086CPU引脚信号中中断请求两个信号名称为(INT)和(NMI)。
26、I/O端口的编址方式一般有(存储器统一编址)和(独立编址)两种
29.1片8259A中断控制器可管理(8)级中断,用9片8259A可构成(64)级主从式中断管理系统。
二: 填空题(每题2分, 共20分)1.8086CPU复位时, 寄存器 CS值为(FFFFH), 寄存器 IP的值为(0000H)2.8086CPU的8个8位通用寄存器名为(AL),(AH),(BL),(BH),(CL),(CH),(DL),(DH).3.若SS = 3240H, SP = 2000H, 栈顶的实际地址为(34400H).4.指令 MOV AX, [BX] 的机器码为 8BH, 07H , 指令 MOV [BX], AX的机器码为(89H),(07H).5.8255A的工作方式有方式0功能为(基本输入输出), 方式1功能为(选通输入输出), 方式2功能为(双向数据传送).6.执行指令 PUSH AX有 SP =(SPBUF DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA STAR PROC FAR PUSH DS MOV AX, 0 PUSH AX MOV AX, DATA MOV DS, AX LEA BX, BUF1 MOV CX , COUNT-1 MOV AL, [BX] AG: INC BX CMP AL, [BX] JAE BIG MOV AL, [BX] BIG: DEC CX JNZ AG MOV BUF2, AL RET STAR ENDP CODE ENDS END STAR 问: 该程序执行后BUF2中的值为(9).四、程序设计题(2*10)
1、编写一个汇编语言程序,要求从键盘输入一个小写字母,将其转换成大写字母在屏幕上显示出来。
DATA SEGMENT BUF DB 0DH,0AH,“PLEASE INPUT A CHAR:$” DATAENDS
STACK SEGMENT
DB 20 DUP(?)STACKENDS
CODESEGMENT
ASSUME DS:DATA,CS:CODE ,SS:STACK BEGIN: MOV AX,DATA
MOV DS,AX
LEA DX,BUF;9号调用显示PLEASE INPUT A CHAR:
MOV AH,9
INT 21H
MOV AH,1;1号调用,从键盘接收1字符
INT 21H
CMP AL,61H /41H;若比“a”/A小转PEND
JB PEND
CMP AL,7AH /5BH;若比“z”/Z大转PEND
JA PEND;
ADD/SUB AL,20H;如在“a”与“z”之间则减去20变为大写字符
MOV DL,AL
MOV AH,2;2号功能调用显示一个字符
INT 21H
PEND: MOV AH,4CH;程序结束运行,返回DOS
INT 21H CODE ENDS
END BEGIN
2、已知芯片8253的端口地址为4F0H~4F3H,设计数器1工作在方式1,计数器初值为3060H,采用二进制计数,请设计实现上述功能的8253初始化程序。8253控制字格式如下:
因为计数器初值为3060H,即为16位的,所以读/写格式为11 因此控制字为:01110010 =72 控制字:MOV AL, 72H OUT 4F3H, AL
低8位:MOV AL, 60H OUT 4F1H, AL
高8位:MOV AL, 30H
OUT 4F1H, AL
六: 编程题(7分)编一个完整的程序, 数据段有10个符号的ASCII码值数据块 BUF , 若数据为0到 9的ASCII码值, 在屏上显示 Y , 否则显示 N 解: DATA SEGMENT BUF DB 10 DUP(?)DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA NAIN PROC FAR PUSH DS MOV AX, 0 PUSH AX MOV AX, DATA MOV DS, AX MOV CX, 10 LEA BX, BUF AG: MOV AL, [BX] CMP AL, 30H JL DISNO CMP AL, 39H JG DISNO MOV AH, 02H MOV DL, ‘Y’ INT 21H JMP NEXT DISNO: MOV AH, 02H MOV DL, ‘N’ INT 21H NEXT: INC CX DEC CX JNZ AG RET MAIN ENDP CODE ENDS END MAIN 七: 接口编程(7分, 仅编程序段)8255A的A口,B口均工作于方式0, 从A口输出数据30H, 将B口输入的数据放入寄存器BL中.(注:8255A口地址为60H到63H)解: 1 0 0 0 X 0 1 X 方式控制字= 82H MOV AL, 82H OUT 63H, AL MOV AL, 30H OUT 60H, AL IN AL, 61H MOV BL, AL
第四篇:微机原理与接口技术 实验报告一
评
阅
微机原理与接口技术
实验报告一
姓名
匡越
学号
1715211016
时间
地点
实验题目
一、实验目的1.熟悉Keil软件使用
2.熟悉MCS-51指令
3.学习简单程序的调试方法
二、实验说明
通过实验了解单片机内部存储器的结构和分配及读写存储器的方法,熟悉MCS-51指令同时,学习单片机程序编程、调试方法。
三、实验内容及步骤
1.启动PC机,打开Keil软件,软件设置为模拟调试状态。在所建的项目文件中输入源程序1,进行编译,如有错误按提示找到该行并纠错,重新编译直到通过。
2.编译无误后,打开CPU窗口,选择单步或跟踪执行方式运行程序,观察CPU窗口各寄存器的变化并将观察到的结果记录到预习报告。
3.新建另一个项目输入源文件2,打开CPU窗口,选择单步或跟踪执行方式运行程序,观察存储块数据变化情况记录到预习报告。点击复位按钮,改变存储块数据,点击全速执行快捷按钮,点击暂停按钮,观察存储块数据变化情况,记录到预习报告。点击复位按钮,改变存储块数据,分别LOOP、LOOP1设置断点,点击全速执行快捷按钮,在断点处观察寄存器及存储块数据变化情况。
WAVE软件使用方法参考其帮助文件。
四、实验程序流程框图、实验程序
1、源程序1
ORG
0000H
AJMP
MAIN
ORG
0030H
MAIN:
MOV
R0,#30H;
(R0)=
(00H)=
MOV
A,#40H;
(A)=
MOV
R6,A;
(A)=,(R6)=
MOV
A,@R0;
(R0)=
(A)=
MOV
40H,A;
(A)=
(40H)=
MOV
30H,40H;
(30H)=
(40H)=
MOV
R1,#40H;
(R1)=
MOV
@R1,#0AAH;(R1)=
(40H)=
MOV
SP,#60H;
(SP)=
PUSH
ACC;
(SP)=
(61H)=
PUSH
30H;
(SP)=
(62H)=
MOV
A,#0FFH;
(SP)=
(A)=
MOV
30H,#30H;
(SP)=
(30H)=
POP
ACC;
(SP)=
(A)=
POP
30H;
(SP)=
(30H)=
ADD
A,30H;
(30H)=
(A)=
Cy=
SUBB
A,#10;
(A)=
Cy=
MOV
R4,#00100100B;
(R4)=
H
MOV
A,#39H;
(A)
=
ADD
A,R4;
(A)
=
(R4=)
DA
A;
(A)
=
Cy=
MOV
28H,#55H;(28H)
=
Cy=
MOV
C,40H;
(PSW)
=
Cy=
MOV
26H,#00H;(26H)
=
Cy=
MOV
30H,C;
(30H)
=
(26H.1)
=
SJMP
$
j点击project,选择下拉式菜单中的New
project;
k选择所要的单片机,这里我们选择常用的Ateml
公司的AT89C51;
l新建一个File,输入源程序;
m将新建文件保存为text.asm的格式;
n鼠标在屏幕左边的Source
Group1
文件夹图标上右击弹出菜单,在这里可以做在项目中增加减少文件等操作。选“Add
File
to
Group
‘Source
Group
1’”弹出文件窗口,选择刚刚保存的文件;
o对程序进行编译运行;
使程序一得:
ORG
0000H
AJMP
MAIN
ORG
0030H
MAIN:
MOV
R0,#30H
;
(R0)=
0x30
(00H)=
0x0000
MOV
A,#40H
;
(A)=
0x40
MOV
R6,A
;
(A)=
0x40,(R6)=
0x40
MOV
A,@R0
;
(R0)=
0x30
(A)=
0x16
MOV
40H,A
;
(A)=0x16
(40H)=
0x0040
MOV
30H,40H
;
(30H)=
0x0030
(40H)=
0x0040
MOV
R1,#40H
;
(R1)=
0x40
MOV
@R1,#0AAH;(R1)=
0x40
(40H)=
0x0040
MOV
SP,#60H;
(SP)=
0x60
PUSH
ACC;
(SP)=
0x61
(61H)=
0x0061
PUSH
30H;
(SP)=
0x62
(62H)=
0x0062
MOV
A,#0FFH;
(SP)=
0x62
(A)=
0xff
MOV
30H,#30H;
(SP)=
0x62
(30H)=
0x0030
POP
ACC;
(SP)=
0x61
(A)=
0x16
POP
30H;
(SP)=
0x60
(30H)=
0x0030
ADD
A,30H;
(30H)=
0x0030
(A)=
0x2a
Cy=
0
SUBB
A,#10;
(A)=
0x20
Cy=
0
MOV
R4,#00100100B;
(R4)=
0x24
H
MOV
A,#39H;
(A)
=
0x39
ADD
A,R4;
(A)
=
0x5d
(R4=)
0x24
DA
A;
(A)
=
0x63
Cy=
0
MOV
28H,#55H;(28H)
=
0x0028
Cy=
0
MOV
C,40H;
(PSW)
=
0x80
Cy=
MOV
26H,#00H;(26H)
=
0x0026
Cy=
MOV
30H,C;
(30H)
=
0x0030
(26H.1)
=
0
SJMP
$
2、源程序2
设(30H)=4,(31H)=1,(32H)=3,(33H)=5,(34H)=2,(35H)=6
ORG
0000H
AJMP
MAIN
ORG
0030H
MAIN:
MOV
R0,#30H;30H→R0
MOV
R2,#6;6→R2
SORT:
MOV
A,R0;30H→A
MOV
R1,A;30H→R1
MOV
A,R2;6→A
MOV
R5,A;6→R5
CLR
F0;
状态标志位清零
DEC
R5;寄存器R5减一
MOV
A,@R1;R1→A
LOOP:
MOV
R3,A;A→R3
INC
R1
;寄存器R1增1
CLR
C
;进位标志位清零
MOV
A,@R1;31H→A
SUBB
A,R3;累加器内容减去寄存器内容
JNC
LOOP1;仅为标志位为1,则进行LOOP1
;以下代码完成数据交换
SETB
F0;状态标志位置1
MOV
A,@R1;31H→A
XCH
A,R3;将A于与R3的数据交换
MOV
@R1,A;将4赋值给寄存器R1(31H)
DEC
R1;寄存器减一
MOV
A,R3;1→A
MOV
@R1,A;将1赋值给寄存器R1(30H)
INC
R1;寄存器R1增一
LOOP1:
MOV
A,@R1;4→A
DJNZ
R5,LOOP;寄存器R5减一,不为零则回到LOOP
JB
F0,SORT;状态标志位为零,则回到SORT
SJMP
$
第五篇:微机原理与接口技术实验总结
微机原理与接口技术实验总结
11107108
徐寒黎
一、实验内容以及设计思路
1、①试编写一程序,比较两个字符串STRING1、STRING2 所含字符是否相同,若相同输出“MATCH”,若不相同输出 “NO MATCH”。设计思路:定义一个数据段,在数据段中定义两个字符串作为STRING1、STRING2以及几个用于输入提示的和输出所需内容的字符串,定义一个堆栈段用于存放,定义代码段。关键步骤以及少量语句:第一步将STRING1和STRING2都实现用键盘输入,方法是
MOV DX,OFFSET STRING2 MOV AH,0AH INT 21H 并且显示在显示器上,显示方法将0AH改成09H,语句与上面类似。然后进行比较第一个单元,MOV AL,[STRING1+1] CMP AL,[STRING2+1] JNZ NOMATCH 若字符串长度不等,则直接跳转,输出输出 “NO MATCH”; 若长度相等再逐个比较 LEA SI,[STRING1+2] LEA DI,[STRING2+2] MOV CL,[STRING1+1] MOV CH,0 CLD REPE CMPSB JCXZ MATCH,意思是全部相同就跳转MATCH,输出“MATCH”;不然进入下面的NOMATCH。退出。
②试编写求级数1^3+2^3 +3^3 …..前几项和刚大于10000的程序。
设计思路:原先编写的程序,设定和为10000,结果是14。但要求高一点的话,可以自己设置,实现用键盘输入和的值。
一个难点是将输入的ASCII码字符串,转换成与之相同的十进制数的数值。关键的思路部分是:从1开始求级数,将和的值存在AX里,要加下一项级数前,比如这时已经加到4,PUSH一下AX,然后将5乘三遍,将乘积MOV到BX里,再POP AX,然后将BX的值加到AX里,然后将AX与N比较,如果比N小就继续上述步骤,知道刚比N大就输出数字。
③试编写一程序,完成字符串中各字符出现频度的统计,统计结果在屏幕上输出。
设计思路:因为这个程序需要统计所有的字符,所以首先要定义一个存储区,用来存放26个字符以及每个字符出现的个数。用键盘控制输入字符串以后,将字符串的第一个字符与这二十六个字符逐个比较,若有相同,在存放相应次数的存储单元的值上加1。然后比较第二个字符,依次类推,将字符串里的字符全部比较完。将个数大于1的字符以及字符的个数都输出到屏幕上。退出语句。缺点和不足:这样需要定义一个非常繁的存储区。可以根据输入的字符,然后进行比较和统计。
④设计一个动画程序。
设计思路:这个程序参考了网上的资料,没有什么新意,是小鸟的图形,可以用上下左右键进行移动,可以退出。
步骤:首先设置堆栈段,数据段,代码段,设置显示方式等一些属性,设置背景色,设置小鸟的初始位置以及写出小鸟图形的像素的点。功能性的语句是,用键盘接受一个输入,将其与1bh比较,用JZ语句跳转到退出。若不是便与48h比较,看是否为向上,是则跳转到相应语句,不是则继续与50h比较;,看是否向下,是则跳转到关于向下移动的相关语句,否则再与4bh比较,看是否向左,依次类推,根据键盘输入的上下左右跳转到不同的语句。再将小鸟的位置进行与上下左右键的输入相应的移动。
最后编写好退出语句。
2、硬件接口主要是了解8255与8253的功能,以及控制字。①I/O地址译码
只要对硬件概念清晰,很简单的。基本上没有什么创造性。收获:熟悉实验箱结构,了解每部分元件和标注的意义。掌握I/O地址译码电路的工作原理。②可编程定时器8253 1,对照实验电路图,将计数器0设置为方式0,即数初值设为N(N<0fh),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并用逻辑笔观察OUT0点平变化。
2,将计数器0、计数器1分别设置为方式3,计数初值设为1000用逻辑笔观察out1输出电平的变化。
收获:掌握8253的基本工作原理和编程方法
③并行接口8255 1,试验电路如图所示,8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。3,数码管静态显示:按下图接好电路,将8255A口PA0~PA6分别与七段数码管的段码驱动输入端a~g相连,位码驱动输入端S1接5V(选中),S0和dp接地(关闭)。编程从键盘输入一位十进制数(0-9),在七段数码管上显示。
4,数码管动态显示:按下图接好电路,七段数码管的连接不变,位码驱动输入端S1、S0接8255 C口的PC1和PC0。编程在两个数码管上显示“56”。
动态显示时,先送“5”的段码送A口,再送02h到C口为位码;经一定延时后,送“6”的段码送A口,再送01h到C口为位码。循环完成,可以显示数码。5,数码管动态显示(选做):同图接好电路,编程在两个数码管上显示循环显示“00-99”。只要搞清楚各个口的地址,以及选择适当的控制字,其实很简单的。
收获:掌握8255的基本工作原理和编程方法,对方式0的认识加深了。
二、试验中遇到的问题 1在编写程序时,我深深体会到,画程序框图的重要性,每一步跳转的条件一定要搞清楚,Y和N不能搞反了,否则就错了。
2实验2,里面涉及的寄存器很多,很容易就会用乱了,还是很需要注意的。3比如那个小鸟动画的题目,当时在控制左右移动的时候,选择的起始位置的语句没写对位置,每次按一个移位的键以后,都从最初的初始位置向某个方向移动。
4硬件方面的,一开始没搞懂地址什么意思,所以连线时很懵懂,后来清楚了,发现就没什么了。
三、心得感受
微机原理与接口技术的课程实验历时大半个学期,通过自己编写、运行程序,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。以前对于编程工具的使用还处于一知半解的状态上,但是经过一段上机的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,怎么去了解每个寄存器的内容以确保程序的正确性上都有了很大程度的提高。
前四个简单程序设计,加深了我们对初学的汇编语言指令的熟悉和理解,汇编语言直接描述机器指令,比机器指令容易记忆和理解。通过学习和使用汇编语言,向上为理解各种软件系统的原理,打下技术理论基础;向下为掌握硬件系统的原理,打下实践应用基础。不仅巩固了书本所学的知识,还具有一定的灵活性,发挥了我们的创造才能。
后面几个实验是并行输入输出接口8255和计数器8253的功能的操作,加深了我们对硬件的熟悉,锻炼了动手能力,发挥创造才能。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在自己的思考以及和同学的讨论中,终于迎刃而解。