资源描述
微型计算机原理课程教学大纲(非计算机各专业,64学时)课程名称:微型计算机原理英文名称:Principles of Microcomputers学 时:50(理论教学)+14(实验)学 分:4适用专业:工科非计算机各专业课程性质:必修先修课程:模拟电子技术,数字电路逻辑设计等一、 课程性质与任务本课程是工科各专业非常重要的计算机基础课之一。本课程以Intel 80x86CPU构成的微机为主讲机型,系统深入地介绍微型计算机的工作原理、80x86指令系统、汇编语言程序设计、半导体存储器、输入/输出与中断以及可编程接口芯片及应用等知识。通过本课程学习,使学生真正掌握微型计算机的工作原理、汇编语言程序设计方法以及接口电路设计技术等内容,培养学生初步具备软硬件方面的实际开发能力。 二、教学内容、学习要求及重点难点第1章 微型计算机系统导论(一) 教学内容本章简要介绍微型计算机的发展历史;根据冯.诺依曼计算机设计思想,主要介绍微型计算机硬件系统的组成,三总线结构(地址总线AB、数据总线DB、控制总线CB)以及组成计算机的五大部件(运算器、控制器、存储器、输入及输出设备);介绍软件在计算机系统中的作用;通过在模型机上运行一个简单的程序说明计算机的工作过程。具体内容如下:1、计算机发展概况2、微型计算机系统的组成3、微型计算机硬件系统4、微型计算机的工作过程(二) 学习要求通过本章学习,应对微型计算机的基本概念、基本组成及工作过程有一个基本了解,建立计算机整机概念,为后续各章节的学习打下基础。具体要求如下: 1、了解微处理器及微型计算机的发展、分类和特点。2、熟悉微型计算机系统各个组成部分的功能,掌握地址总线AB、数据总线DB、控制总线CB的概念及其作用。3、掌握CPU的概念、组成及基本工作原理。4、了解存储器在微型计算机的作用和内存的读写操作过程,掌握有关概念:位、字节、字、存储器容量、存储单元地址等。5、熟悉微型计算机的工作过程,初步建立计算机整机的概念(三) 重点难点微型计算机硬件系统的结构;地址总线AB、数据总线DB、控制总线CB的概念及其作用;CPU的组成及基本工作原理;存储器的分类、作用及有关概念。 第2章 计算机中的数制与编码(一) 教学内容本章首先简要介绍无符号数的表示方法、各种数制的相互转换以及二进制数的运算规则等;然后重点介绍带符号数的表示方法、补码加减法运算以及运算时溢出的判断方法;最后介绍十进制数的二进制编码(BCD编码)、字符(包括字母、数字和符号)的ASCII编码以及数的定点和浮点表示方法等。具体内容如下:1、无符号数的表示方法2、带符号数的表示方法3、信息的编码 4、数的定点与浮点表示法(二) 学习要求通过本章学习,应该熟练掌握数据(包括无符号数和有符号数)、信息等在计算机中的表示方法,具体要求如下:1、掌握十进制数、二进制数、十六进制数的表示方法及其相互转换。2、熟练掌握带符号数的原码、反码、补码表示方法。3、掌握进位和溢出的概念及其判断方法4、了解BCD码、ASCII码的概念以及数的定点与浮点表示法。(三) 重点难点带符号数的原码、反码、补码表示方法;进位与溢出的概念及其判断方法。 第3章 80x86微处理器 (一) 教学内容本章在简要介绍80x86系列微处理器的发展概况及其性能特性的基础上,首先重点介绍8086/8088 CPU的内部结构、寄存器结构、引脚功能以及存储器管理等;之后简要介绍具有代表性的Intel 主流CPU系列的最新技术发展方向,从应用角度介绍80x86系列微处理器内部寄存器结构及其使用方法;然后对80x86存储器管理方式(实方式、保护方式和虚拟8086方式)进行介绍;最后分别简要介绍80286到Pentium CPU 的内部结构特点。具体内容如下:1、80x86微处理器简介2、8086/8088微处理器3、8086/8088存储器和I/O组织(二) 学习要求微处理器(CPU)是构成微型计算机的核心部件,是全机的控制中心,它控制全机各功能部件协调工作,它的性能决定了整个微型计算机的性能和系统结构。因此,学习和掌握微处理器的内部结构和工作原理是学习微型计算机原理的重要基础。本章具体学习要求如下:1、掌握8086/8088CPU的内部结构及工作原理。2、掌握8086/8088CPU中14个寄存器的分类、作用及有关寄存器的特定用法。3、掌握8086/8088存储器的分段管理方式;掌握逻辑地址、物理地址的概念以及如何由逻辑地址求物理地址。4、了解8086/8088CPU的引脚及其功能。(三) 重点难点8086/8088CPU的内部结构及工作原理;寄存器结构;存储器分段管理方式;逻辑地址和物理地址的概念等。对程序设计人员来讲,了解CPU内部寄存器结构并掌握其使用方法是进行汇编语言程序设计的关键和基础,因此,牢记8086/8088CPU内部的14个16位寄存器的名称和使用方法是本章学习的重点,也是初学者一时难于理解和掌握的内容。 第4章 80x86指令系统 (一) 教学内容本章重点介绍8086指令格式和寻址方式,包括操作数的寻址方式和转移地址的寻址方式;然后介绍8086指令系统,包括数据传送、算术运算、位操作、串操作、控制转移以及处理器控制等六大类指令。最后简要介绍80x86/Pentium新增的寻址方式和增强与增加的指令。具体教学内容如下: 1、8086/8088指令格式2、8086/8088指令系统的寻址方式3、8086/8088指令系统(二) 学习要求指令系统是程序员编写程序的基础,因此很好地掌握本章内容是后续进一步学习汇编语言程序设计的关键。通过本章学习,应该达到如下要求:1、了解8086/8088指令格式。2、熟练掌握8086/8088(包括后续CPU)的寻址方式。3、掌握8086/8088指令系统中的各种指令的名称、功能及对操作数寻址方式的约定。(三) 重点难点操作数的寻址方式;指令中操作数允许的寻址方式,避免写出指令系统中不存在的非法指令。 第5章 汇编语言程序设计 (一)教学内容本章以Microsoft公司的宏汇编程序MASM为背景,介绍面向80x86的汇编语言程序设计方法。包括汇编语言源程序的格式、伪指令、宏指令以及顺序结构、分支结构、循环结构、过程调用等汇编语言程序设计方法。具体内容如下:1、汇编语言源程序的格式及汇编语言上机过程2、伪指令3、宏指令4、汇编语言程序设计的基本方法(包括顺序程序、分支程序、循环程序、子程序)(二)学习要求汇编语言程序设计是微型计算机原理课程非常重要的内容之一。通过本章学习,应该达到如下要求:1、熟练掌握汇编语言格式及调试方法。 2、掌握子程序和宏指令的概念、定义及其调用方法。3、掌握DOS调用和BIOS调用的方法。4、掌握顺序程序、分支程序、循环程序设计的基本方法和一般技巧。(三)重点难点汇编语言源程序的编写及调试。只有通过大量的上机实践,才能真正掌握汇编语言程序的设计。 第6章 半导体存储器 (一)教学内容本章在简要介绍半导体存储器的分类和基本存储元电路的基础上,重点介绍了常用的几种典型存储器芯片及其与CPU之间的连接与扩展问题,并简要介绍了目前广泛应用的几种新型存储器。具体内容如下:1、半导体存储器的分类2、随机读写存储器3、只读存储器4、存储器与CPU的连接(二)学习要求1、了解各种半导体存储器的特点及应用场合。2、了解随机读写存储器和只读存储器的结构原理及工作特点。3、掌握存储器芯片的位扩展和字扩展方法。特别应注意掌握存储器芯片与地址总线的连接问题。(三)重点难点存储器扩展时如何由高位地址产生片选信号。 第7章 输入/输出与中断 (一) 教学内容本章介绍输入输出接口的基本概念,CPU与外设间的数据传送方式,中断传送方式及相关技术,以及可编程中断控制器8259A的结构及编程方法。具体内容如下:1、I/O接口概述2、CPU与外设之间数据传送的方式3、中断技术4、8086/8088中断系统5、可编程中断控制器Intel 8259A(二) 学习要求1、了解I/O作用,掌握I/O的编址方式。2、理解I/O设备与主机之间交换数据的控制方式。3、了解8086/8088中断系统。4、熟悉8259A中断控制器的结构及应用。(三) 重点难点8259A的工作方式及编程。 第8章 可编程接口芯片及应用 (一) 教学内容接口电路是联系主机与各种I/O设备的桥梁。接口技术是微型计算机应用中的重要技术。本章从应用角度介绍了与80x86系列微处理器配套使用的通用可编程接口芯片,包括可编程定时/计数器8253/8254,并行接口芯片8255A,串行接口芯片8251A,数/模转换芯片DAC0832和DAC1210以及模/数转换芯片ADC0809和AD574。具体教学内容如下:1、定时器/计数器8253/82542、并行接口芯片8255A3、A/D与D/A芯片(二) 学习要求通过本章学习,读者不仅要掌握所介绍的各种常用可编程接口芯片的工作原理与使用方法,更重要的是要能够触类旁通,以便日后遇到其他芯片时能够很快掌握其使用方法。具体要求如下:1、掌握8253/8254工作方式、初始化编程及其应用技术。2、掌握8255的工作原理、初始化编程及其应用。 3、掌握D/A转换芯片DAC0832和DAC1210的使用方法。4、掌握A/D转换芯片ADC0809和AD574的使用方法。(三) 重点难点通过学习应重点掌握I/O接口芯片的共有特点,为日后其它接口芯片的学习和应用打下基础。三、实验指导实验一 寻址方式与基本指令实验1.1 实验目的1 熟悉80x86寻址方式及基本指令的功能,进一步理解和巩固课堂学习内容。2 掌握汇编语言程序设计上机过程, 掌握汇编语言源程序结构,为后续汇编语言程序设计打好基础。3 熟悉Microsoft的DEBUG或Borland的Turbo DEBUG调试工具的使用方法。1.2 实验预习要求1 认真阅读本书第一部分第1章,熟悉汇编语言程序设计上机步骤。2 认真阅读本书第三部分,熟悉DEBUG调试工具的使用方法。3 复习80x86操作数寻址方式及基本指令(数据传送、算术运算和逻辑运算等)。4 了解实验内容,并在实验前根据课堂所学知识回答有关问题(个别取决于程序实际运行环境的问题除外),以便在实验时进行验证。1.3 实验内容1. 读懂下列源程序,使用EDIT生成名为EX11.ASM的源程序,汇编生成EX11.OBJ文件和EX11.LST文件,连接生成EX11.EXE文件;用EDIT打开EX11.LST文件,了解.LST文件包含的信息;使用DEBUG调试工具单步执行EX11.EXE程序,注意观察IP值的变化,并回答下列问题。(1) 程序装入后,代码段寄存器CS的内容为_H,代码段第一条可执行指令MOVAX, DATA对应的机器代码为_H,它是一个_字节指令,注意观察执行该指令时IP值的变化情况,该指令源操作数DATA的寻址方式是_,其值为_。(2) 执行完MOVDS, DATA指令后,数据段寄存器DS的内容为_H,源程序在数据段中定义的数据82H、68H和88H被装入的存储单元的物理地址分别为_H、_H和_H。(3) 程序中第一条ADD AL, BX 指令对应的机器代码为_H,它是一个_字节指令,注意观察执行该指令时IP值的变化情况;该指令中源操作数的寻址方式为_,该操作数所在存储单元的逻辑地址(DS): (BX)为_,其物理地址为_H;执行完该指令后(AL)=_H,CF=_,OF_,ZF_,SF_,AF_,PF_;若两操作数为无符号数,计算结果是否正确_?若两操作数为带符号数,计算结果是否正确_?若计算结果正确,结果是正数还是负数_?(4)执行完第二条ADD AL, BX 指令后(AL)=_H,CF=_,OF_,ZF_,SF_,AF_,PF_;若两操作数为无符号数,计算结果是否正确_?若两操作数为带符号数,计算结果是否正确_?(5)指令MOV SUM, AL中目的操作数的寻址方式为_。该指令执行完后,注意观察(DS):0003H单元中值的变化,该单元的值变为_H。DATASEGMENT NUMDB 82H, 68H, 88H SUM DB ?DATA ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATASTART: MOVAX, DATA MOV DS, AX MOV BX, OFFSET NUM MOV AL, BX INC BX ADD AL, BX INC BX ADD AL, BX MOV SUM, AL MOV AH, 4CH INT 21HCODE ENDS END START2. 读懂下列源程序;编辑、汇编、连接生成EX12.ASM、EX12.OBJ、EX12.LST、EX12.EXE文件;使用DEBUG单步执行EX12.EXE文件,并回答以下问题。(1) 代码段的前三条指令MOV AX, STACK、MOV SS, AX和MOV SP, LENGTH STL的功能为堆栈初始化,试问执行完这三条指令后,堆栈栈底所在单元的逻辑地址(SS): (SP)为_;执行PUSH AX指令后堆栈指针寄存器(SP)=_H,此时,(SS): (SP+1)和(SS): (SP)单元的值为_H;执行完PUSH BX后(SP)=_H,此时,(SS): (SP+1)和(SS): (SP)单元的值为_H;执行完POP AX后(SP)=_H;执行完POP BX后(SP)=_H;此时(AX)=_H,(BX)=_H。请读者通过对堆栈操作指令执行情况的观察,进一步掌握进、出栈操作过程。(2) 执行ADD AX, BX指令后(AX)=_H,CF=_,OF_,ZF_,SF_,AF_,PF_(注意考虑PF值与计算结果高8位有无关系);若两操作数为无符号数,计算结果是否正确_?若两操作数为带符号数,计算结果是否正确_?(3) 执行AND AX, BX指令后(AX)=_H,CF=_,OF_,ZF_,SF_,AF_,PF_。STACK SEGMENT stack STL DW 100H DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,SS:STACKSTART:MOVAX, STACK MOV SS, AX MOV SP, LENGTH STL;表达式“LENGTH STL”的功能为计算STL中定义的变量的个数,;汇编后其值为100H ,详见教材5.2.2 MOV AX, 1010B MOV BX, 0011B PUSH AX PUSH BX ADD AX, BX POP AX POP BX AND AX, BX MOV AH,4CH INT 21HCODE ENDS END START3. 指出下列指令的错误原因,上机运行,观察汇编程序(MASM.EXE)给出的出错信息,改正后再上机验证。(1) MOVBP, BL(2) MOVBX,BP(3) MOVBX,20H(4) INC SI(5) ADDAX,SI+DI(6) SHL AX,3(7) PUSH2000H(8) POP AL(9) MOVCS,AX(10) MOV DS,1000H有关常见汇编错误的详细内容见本书第三部分第3章“汇编语言程序常见汇编错误分析”。1.4 实验报告要求1、 写出任务1和任务2中所有问题的正确答案;对实验前做错或做不出来的问题,说明通过上机操作对这些问题有哪些新的认识。2、 写出任务3中10条错误指令的错误原因,对可以改正的指令给出其正确形式,并分别记录汇编程序对每条错误指令给出的出错信息。3、 简要说明汇编语言程序设计的步骤,每一步使用什么工具软件,生成什么类型的文件。写出实验小结,内容包括实验心得(收获)、实验中遇到的问题及解决办法、不足之处或今后应注意的问题等。实验二 分支程序设计实验2.1 实验目的1 掌握分支程序的设计方法。2 掌握宏定义及宏调用的基本方法。3 了解小写和大写字母的ASCII码表示及其转换方法。了解数字及其它字符在的ASCII码表示方法。4 进一步掌握调试工具的使用方法2.2 实验预习要求1 复习比较指令、条件转移指令的用法。2 复习宏定义及宏调用的基本方法。3 根据“2.3.3 实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。4 程序框架中显示提示信息的指令序列用宏调用实现。5 从“2.3.4 实验习题”中任选一道题目,编写源程序,以便上机调试。2.3 实验内容从键盘输入一字符,判断该字符是小写字母、大写字母、数字或其它字符。若输入为小写字母,显示“You Input a Lowercase Letter!”;若输入为大写字母,显示“You Input a Uppercase Letter!”; 若输入为数字,显示“You Input a Digit!”; 若输入为其它字符,显示“You Input Other Letter!”。数字09的ASCII码为30H39H;大写字母的ASCII码为41H5AH,小写字母的ASCII码为61H7AH。本题目将字符分为小写字母、大写字母、数字及其它字符,根据键入字符的ASCII码值判断其所属类型,并显示相应的信息。字符串显示使用功能号为09H的DOS功能调用,接收键盘输入的单个字符使用功能号为01H的DOS功能调用。2.4 实验习题1 在屏幕上显示信息“Are you really want to exit?”,然后从键盘输入一个字符,若输入“Y”或“y”,显示“Thank you for your using!”后程序结束;若输入“N”或“n”,显示“Lets continue!”后程序结束;若输入其它字符,显示“You press an error key!”后程序结束(要求尽量使用宏指令以便使源程序更加简洁)。2 在屏幕上显示如下信息: 1-Panda 2-Cat 3-Rabbit 4-Pig 5-EXIT (Please choose 1,2,3,4or 5)-若输入1,显示“I like panda”后程序结束;若输入2,显示“I like cat”后程序结束;若输入3,显示“I like rabbit”后程序结束;若输入4,显示“I dont like pig”后程序结束;若输入5,程序直接结束;若输入其它字符,显示“You press an error key!”后程序结束(要求尽量使用宏指令以便使源程序更加简洁)。2.5 实验报告要求1 补全“2.3.3 实验内容”中源程序框架内未写出的程序代码,并说明你在调试该程序过程中遇到了哪些问题,是如何处理的。2 从“2.3.4 实验习题”中任选一道题目,画出流程图,编写源程序,并说明在调试过程中遇到了哪些问题,是如何处理的。3 写出实验小结,内容包括实验心得(收获)、不足之处或今后应注意的问题等。实验三 循环程序设计3.1 实验目的1 掌握循环程序的设计方法。2 掌握比较指令、转移指令和循环指令的使用方法。3 进一步掌握调试工具的使用方法3.2 实验预习要求1 复习比较指令、条件转移指令和循环指令。2 复习循环程序的结构、循环控制方法等知识。3 读懂“2.4.3 实验内容”中给出的将十进制数转换为二进制数以及将二进制数转换为十进制数的程序。4 根据“2.4.3 实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。5 从“2.4.4 实验习题”中任选一道题目,编写源程序,以便上机调试。3.3 实验内容计算1+2+n=?,其中n通过键盘输入。要求在屏幕上提供如下信息:Please input a number(1627):;出现此信息后通过键盘输入一个小于628的无符号整数1+2+.n=sum;其中n为用户输入的数,sum为所求的累加和程序运行情况如右图所示(说明:图中所运行程序允许累加和不大于一个32位二进制数所能表示的范围)。1 编程指导(1) 键盘输入的十进制数如368在计算机中是以33H,36H,38H形式存放的,如何将它们转换为一个二进制数B,以便对累加循环的循环次数进行控制是本程序首先要解决的问题。将键盘输入的十进制数转换为二进制数的程序清单如下:DATA SEGMENT INF1 DB Please input a number (0-65535):$IBUF DB 7,0,6 DUP(?)DATA ENDSCODESEGMENT ASSUME CS: CODE, DS:DATASTART:MOVAX, DATA MOV DS, AXMOV DX, OFFSET INF1MOV AH, 09HINT 21HMOV DX, OFFSET IBUF;键入一个十进制数(65535)MOV AH, 0AH INT 21H MOV CL, IBUF+1;十进制数的位数送CXMOV CH, 0MOV SI, OFFSET IBUF+2;指向输入的第一个字符(最高位)MOV AX, 0;开始将十进制数转换为二进制数AGAIN: MOVDX, 10; (010+a4) 10+) 10+a0MUL DX AND BYTE PTR SI, 0FH ADD AL, SI ADC AH, 0 INC SI LOOP AGAINMOV AH,4CH INT 21HCODE ENDS END START 本程序功能:从键盘接收一个无符号十进制整数(小于65535),将其转换为二进制数,转换结果存在AX寄存器中。(2) 累加结果为一个16位的二进制数,为了显示结果,必需把它们转换为十进制数。将二进制数转换为十进制数的程序清单如下:DATA SEGMENT OBUFDB 6 DUP(?)DATA ENDSCODE SEGMENT ASSUME CS: CODE, DS: DATASTART:MOVAX, DATA MOV DS, AXMOV BX, OFFSET OBUF+5MOV BYTE PTR BX,$MOV CX, 10;做(DX):(AX)/10运算LOOP1:MOVDX, 0;被除数高16位清0 DIV CXADD DL, 30H;将DL中的一位十进制数转换为ASCII码DEC BX MOV BX, DLOR AX, AXJNZ LOOP1;判断商是否为0,不为0继续MOV DX, BXMOV AH, 09H INT 21H;显示转换得到的十进制数MOV AH, 4CH INT 21HCODE ENDS ENDSTART本程序功能:将存储在AX寄存器中的二进制数转换为十进制数并显示。(1) 程序框架DATA SEGMENT INF1 DB Please input a number (0-65535):$IBUFDB 7,0,6 DUP(?)OBUF DB 6 DUP (?)DATA ENDSCODE SEGMENT ASSUME CS: CODE, DS: DATASTART:MOVAX, DATA接收从键盘输入的十进制数,并将其转换为二进制数(存AX寄存器)的指令序列 MOV DS, AXMOV CX, AXMOV AX, 0MOV BX, 1LOOP2:ADDAX, BXINCBX将AX中存放的二进制数转换为十进制数并显示的指令序列LOOPLOOP2CODE ENDS ENDSTART3.4 实验习题1 从自然数1开始累加,直到累加和大于60000为止,显示累加的自然数的个数和累加和。显示格式为:1+2+n=sum其中n为累加个数,sum为累加和。2 从键盘输入6个加数N1、N2、N3、N4、N5和N6(均为14位的无符号十进制整数),求和并将计算结果在屏幕上显示出来。3 从键盘输入一个无符号十进制整数(小于65536),将其转换为二进制数,统计该二进制数中包含的1的个数,并将统计结果在屏幕上显示出来。4 从键盘输入N个无符号十进制整数(小于256),将其转换为二进制数后存放在字节变量BUF存储区中;对这N个数进行由大到小排序,排序后将其仍存储在BUF中;最后将排序后的结果在屏幕上显示出来。3.5 实验报告要求1 补全“2.4.3 实验内容”中源程序框架内未写出的程序代码,并说明你在调试该程序过程中遇到了哪些问题,是如何处理的;请考虑,如果输入的数大于627会出现什么问题?如何解决?2 从“2.4.4 实验习题”中任选一道题目,画出流程图,编写源程序,并说明在调试过程中遇到了哪些问题,是如何处理的。3 写出实验小结,内容包括实验心得(收获)、不足之处或今后应注意的问题等。实验四 宏指令及子程序设计实验4.1 实验目的1 熟悉宏指令、宏定义、宏调用以及宏展开的概念;掌握宏指令的定义与调用的方法。2 掌握子程序的定义、调用以及调用程序与子程序之间参数的传递方法。3 了解宏指令与子程序的异同以及各自的适用场合。4.2 实验预习要求1 复习宏指令的定义与调用方法。2 复习过子程序的定义与调用方法。3 根据“2.5.3 实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。4 从“2.5.4 实验习题”中任选一道题目,编写源程序,以便上机调试。4.3 实验内容从键盘输入10个无符号十进制数(小于256),将其转换为二进制数并存放在NUM字节型变量中,找出其中的最大数,并将找出的最大数在屏幕上显示出来。要求: 在屏幕上显示字符串提示信息的功能由宏指令DSTRING实现; 将键盘输入的十进制数转换成二进制数由子程序DTOB实现; 在N个无符号字节型二进制数中找出最大数的功能由子程序FMAX实现; 将一个无符号字节型二进制数转换为十进制数并在屏幕上显示的功能由子程序BTOAD实现。程序运行结果如图所示。4.4 实验习题1 从键盘输入N个十进制数,求它们的和(累加和要求不大于65535),并将累加结果在屏幕上显示出来。要求给出必要的提示信息(用宏调用完成);累加功能由子程序调用实现;二进制数形式的累加和转换为十进制数并显示由子程序调用实现。2 计算1+2+3+N。要求N由键盘输入;给出必要的提示信息(由宏调用实现);累加功能由子程序调用实现;二进制数(累加和)转换为十进制数并显示由子程序调用实现。3 编写在屏幕上顺序显示A B C Z的程序。要求两字符之间有一定的时间延迟,通过调用宏指令实现;延迟时间常数由键盘输入;将键盘输入的十进制数形式的延迟时间常数转换为二进制数由子程序实现。4.5 实验报告要求1 补全“2.5.3 实验内容”中源程序框架内未写出的程序代码,并说明你在调试该程序过程中遇到了哪些问题,是如何处理的?若允许输入大于255小于65536的十进制数,程序应如何修改?2 从“2.5.4 实验习题”中任选一道题目,画出流程图,编写源程序,并说明在调试过程中遇到了哪些问题,是如何处理的。3 写出实验小结,内容包括实验心得(收获)、不足之处或今后应注意的问题等。实验五 存储器扩展实验5.1 实验目的1 熟悉6116静态RAM的结构及使用方法。2 掌握存储器扩展方法。3 了解PC机总线信号的定义,领会总线及总线标准的意义5.2 实验预习要求1 复习教材中存储器扩展的有关内容,熟悉存储器扩展时地址总线、控制总线及数据总线的连接方法,了解6116静态RAM的工作原理。2 预先编写好实验程序。5.3 实验内容1 将实验台上跳线端子JB、JC(实验台右上角)的短路片插在“MEM”位置上,拨动存储器地址范围选择开关K2,将其设置为:OFF、0FF、0N、OFF,从而将存储器地址设置为D0000H开始的64KB空间(详见第3章)。按图4.8-1连接线路,6116芯片插在通用插座D上。图5.4-16116OE2 编写程序,将字母az循环存储在扩展的SRAM 6116存储器芯片D0000H开始的单元中,然后再将其从6116中读出并在屏幕上显示。5.4 实验提示如图 5.4-1所示,6116芯片的容量为2K8位,芯片上的地址引脚A0A10(共11根)连接至系统的地址总线A0A10,用来对片内2K个存储单元进行寻址。本实验中6116 SRAM的片选信号CS接至实验台的MEMCS。请注意,实验台上是如何产生MEMCS的,开关K2是如何设置地址总线A19、A18、A17、A16的,详见第3章“存储器译码电路”的介绍。芯片上的8个数据引脚D0D7直接与系统的数据引脚相连。控制信号OE、WE分别连接到实验台的MEMR和MEMW。写操作时,芯片上的控制信号CS=0,WE=0,OE=1;读操作时,CS=0,OE=0,WE=1。5.5 实验报告要求1 根据流程图编写实验程序,并说明在实验过程中遇到了哪些问题,是如何处理的。2 总结存储器系统的基本扩展方法。3 写出实验小结,内容包括实验心得(收获)、不足之处或今后应注意的问题等。实验六 8253可编程定时/计数器实验6.1 实验目的1 了解TPC-H微机接口实验台的组成;根据第3章介绍内容认知实验中将要用到的各电路模块在实验箱中的位置,为以后的实验打下基础。2 了解实验台如何通过插在微机主板上的ISA总线扩展槽中的接口卡经扁平电缆将ISA总线信号(62个)引入实验箱,从而通过实验箱进行各种接口电路的实验。3 进一步掌握8253的基本工作原理和编程方法。6.2 实验预习要求1 认真阅读第3章内容,熟悉TPC-H微机接口实验台的组成及基本使用方法。2 复习8253的工作原理、6种工作方式各自的特点、控制字格式、读写操作方法以及如何进行初始化编程等内容。3 预先编写好实验程序&6.3 实验内容1 通过实验台提供的单脉冲电路,按动微动开关向计数器依次发出单脉冲,观察每来一个脉冲时计数器当前计数值和输出波形的变化情况按图虚线连接电路。将计数器0设置为方式0,计数初值N可自行决定(但为了便于尽快观察实验结果,N值不宜设置过大,否则将会延长实验时间),按动单脉冲发生器(位于实验台底部中间,微动开关产生单次脉冲送CLK0。编写程序在屏幕上显示计数器0的当前计数值,并同时用逻辑笔(位于实验台底部偏右,逻辑电平开关左边)观察OUT0输出信号的电平变化(当输入N+1个单次脉冲后OUT0变为高电平)。2 计数器级联实现输入信号的二次分频+5v+5v 图4.1-2按下图连接电路。将计数器0和计数器1均设置为方式3(方波发生器),计数初值均设置为1000。计数器0的CLK输入端接1MHz脉冲信号源,计数器0的输出OUT0连接至计数器1的CLK输入端CLK1,实现信号的二次分频。用示波器或实验台上的逻辑笔观察计数器1的输出端OUT1输出信号的电平变化情况。6.4 实验提示本实验中8253的地址分配如下:计数器0地址为280H;计数器1地址为281H;共用的控制寄存器地址为283H。请同学考虑:284H、285H和287H是否也可分别作为计数器0、计数器1和控制寄存器的地址?为什么?若将8253的CS连接至实验台上I/O地址为288H28FH的插孔,计数器0、计数器1、计数器2和控制寄存器的地址又可以是多少? 实验内容1和2的程序流程图如上图所示。6.5 实验习题1 实验2中OUT0和OUT1输出信号的频率分别为多少?通过修改计数器0和计数器1的计数初值,OUT1输出信号的最小频率可为多少?2 若CLK0接到2MHz脉冲信号源,计数初值仍均为1000,OUT1输出信号的频率为多少?6.6 实验报告要求1 根据流程图编写实验1和实验2的程序,并说明在实验过程中遇到了哪些问题,是如何处理的。2 总结8253各工作方式的特点。3 完成实验习题。4 写出实验小结,内容包括实验心得(收获)、不足之处或今后应注意的问题等。实验七 8255A可编程并行接口实验7.1 实验目的1 掌握8255A并行接口芯片的基本结构及工作原理。2 掌握8255A工作方式0的特点及其使用方法。逻辑开关图4.3-17.2 实验预习要求1 复习8255A并行可编程芯片的结构及工作原理。2 复习8255A的工作方式控制字和C口按位置位复位控制字的格式。3 熟悉8255A的各种工作方式的特点。4 预先编写好实验程序。7.3 实验内容开始结束设置C口方式0输入,A口方式0输出从C口读入开关状态将从C口读入的开关数据送A口输出有键按下否?YN按上图连接线路。8255A的C口接逻辑电平开关的输出端子K0K7,A口接发光二极管显示电路的输入端子L0L7。编写程序设置C口的高低4位均为方式0输入(从C口读开关状态到CPU),A口为方式0输出(将从C口读入的开关状态送A口,以便通过发光二极管显示开关状态)。连续拨动开关,观察发光二极管的变化情况。7.4 实验提示本实验中8255A地址分配如下:控制寄存器端口地址28BH A口的地址288HC 口的地址28AHC口的高低4位均设置为方式0输入。 实验内容1和2的程序流程图如图所示。7.5 实验报告要求1 根据流程图编写实验程序,并说明在实验过程中遇到了哪些问题,是如何处理的。2 写出实验小结,内容包括实验心得(收获)、不足之处或今后应注意的问题等。说明:有关实验的详细说明,请阅读王钰等编写西安电子科技大学出版社出版的微型计算机原理学习与实验指导一书,以及我们的“微型计算机原理”网络教学系统提供的实验CAI课件::84/wjyl/down.htm四、指定教材及参考文献指定教材:微型计算机原理(第二版) 王忠民 王钰 王晓婕编著 西安电子科技大学出版社 2007年 参考教材:1 汇编语言编程艺术(The art of assembly language),Randall Hyde著,陈曙晖译,清华大学出版社,2005年2 The art of assembly language(汇编语言艺术),Randall Hyde著,【影印版】,清华大学出版社,2005年。 3 微型计算机原理与接口技术(第2版),冯博琴,吴宁编著,清华大学出版社,2007年 4 IBM PC汇编语言程序设计(第 2 版),沈美明等著,清华大学出版社,2001年5 微型计算机技术及应用(第3版),戴梅萼主编,清华大学出版社,2003年 6 微型计算机原理及接口技术,裘雪红等编著,西安电子科技大学出版社,2007年五、考核办法 本课程通过三方面进行考核:平时成绩(20%)+实验成绩(30%)+期末考试(50%),其中:平时成绩含作业(15%)及课堂学习情况(5%);期末考试采用笔试方式。
展开阅读全文