[工学]微机原理与汇编语言实验指导书.doc

上传人:音乐台 文档编号:1977362 上传时间:2019-01-27 格式:DOC 页数:44 大小:1.36MB
返回 下载 相关 举报
[工学]微机原理与汇编语言实验指导书.doc_第1页
第1页 / 共44页
[工学]微机原理与汇编语言实验指导书.doc_第2页
第2页 / 共44页
[工学]微机原理与汇编语言实验指导书.doc_第3页
第3页 / 共44页
亲,该文档总共44页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《[工学]微机原理与汇编语言实验指导书.doc》由会员分享,可在线阅读,更多相关《[工学]微机原理与汇编语言实验指导书.doc(44页珍藏版)》请在三一文库上搜索。

1、微机原理与汇语言实验微机原理与汇语言实验 指指 导导 书书 信控学院测控系信控学院测控系 曹玉波曹玉波 孙明革孙明革 2010-08-21 II 目目 录录 .汇编语言部分汇编语言部分1 实验一 汇编基本操作 .1 实验二 利用 DEBUG 调试程序调试程序段4 实验三 分支程序实验 .7 实验四 循环程序实验 .9 实验五 子程序实验 .10 实验六 字符处理程序实验13 实验七 汇编语言综合设计实验 .16 . 微机原理及应用部分微机原理及应用部分17 实验一 8255A 可编程并行口实验17 实验二 8253A 定时/计数器实验 20 实验三 使用 8259A 的单级中断控制实验.23

2、实验四 使用 ADC0809 的 A/D 转换实验29 实验五 使用 DAC0832 的 D/A 转换实验32 实验六 使用 8251A 的串行接口应用实验.35 附录: DVCC8086JHN 实验平台性能特点.39 1 .汇编语言部分汇编语言部分 实验一实验一 汇编基本操作汇编基本操作 实验目的 1、熟悉 DIR、MD、CD 等 DOS 系统常用命令; 2、熟悉在 PC 机上建立、汇编、链接、调试、和运行汇编语言程序的全过程; 3、设计一个完整的顺序结构汇编语言程序,学习数据传送和算术运算指令的用法。 实验内容 一、示例题:在屏幕上显示信息:“1A” 其宏汇编语言程序如下: DATA SE

3、GMENT;定义数据段 xdb 48 ;定义字节型变量 x, x 值存放于内存 DATA 段字节偏移量处 ydb 65;定义字节型变量 y, y 值存放于内存 DATA 段字节偏移量 1 处 DATA ENDS CODE SEGMENT;定义代码段(伪指令,编译器使用) ASSUME CS:CODE,DS:DATA(伪指令,编译器使用) 1 ST: MOV AX,DATA;数据段在内在重定位,以便程序能够正确引用的在数据段 中 2 MOV DS,AX;定义的变量 3 MOV DL,x;x 值即 48D(或 31H)“1”的 ASCII 码存入寄器 DL 4 MOV AH,2; 5INT 21H

4、;调用号 DOS 中断,用于显示 DL 中存放的字符 6MOV BX,01 7 MOV DL,BX ;通过 BX 寄存器间接址将 y 值存入 DL(与第 3 行有相同的作用) 8MOV AH,2 9INT 21H;此段语句功能同上一段 10 MOV AH,4CH 11 INT 21H;4C 号 DOS 中断,功能是结束程序,将系统控制权返给操作系统 CODE ENDS ;以下两句为伪指令,不占用内存,编译器使用 END START 实验步骤(假设 MASM6 汇编程序在 D: MASM6 目录下) ,方框框起的部分为键盘输 入。 1、从“开始”“运行”输入“CMD”命令,进入仿真 DOS 状态

5、; 2、键入 D: ,进入 D 盘(表示回车键) ; 2 3、输入 CD MASM6,进入 MASM6 目录(即汇编程序所在目录) ; 4、输入 EDIT(即 DOS 下的文本编辑程序)编辑宏汇编语言源程序,或者用 TC 编辑环境,或者用 Windows 的文本编辑程序均可。 选用你熟悉的文本编辑程序,按要求逐条输入给出的源程序,并对输入完毕的源程 序存盘,其文件名由自己定,但文件的扩展名必须是.ASM(如果用 Windows 编辑程序, 文件格式一定要选纯文本文件) ,文件保存位置为 D: MASM6。例如把示例题源程序文 件取名为 hello.asm。 5、对源程序进行编译以生成.OBJ

6、目标文件(框内为键盘输入的内容,表示回车): D: MASM6MASM hello.asm Microsoft(R) Macro Assembler Version 5.0 Copyright(C) Microsoft Corp 1981-1985,1987,All rights reserved. 工 Source filenamehello.ASM: 注:源文件名,上边已输入在此直接回车即可 Object filenamehello.OBJ: 注:目标文件名,默认与源文件同名 Source ListingNUL.LST: 注:列表文件,直接回车表示不生成该文件 Cross-referenc

7、enul.CRF: 注:交叉索引文件直接回车表示不生成该文件 50636+408356 Bytes symbol space free 0 Warning Errors注:编译过程没有警告性错误 0 Severe Errors注:没有严重错误,编译成功,如不为 0 刚需打开 源程序按此处给出的错误提示修改错误 D: 注:返回 DOS 环境 不同版本时,以上显示内容可能不同,但基本原理是一致的。MASM 完成对源程序 的编译,若编译过程中发现语法错误,则列出错误的语句代码及错误类型,最后列出警 告错误和语法错误的总数。此时,就可以根据错误的性质分析错误,并使用编辑程序修 改源程序,再重新汇编源程

8、序,直至汇编后无错误发生为止。 6、链接目标文件,对上步生成的目标文件进行链接生成扩展名为.exe 的可执行文 件 D: MASM6 LINK Microsoft(R) 8086 Object,linker Version 3.05 Copyright(C) Microsoft Corp 1983,1984,1985,All rights reserved. Object Modules .OBJ:hello注:目标文件名,扩展名不用输入 Run FileHELLO.EXE: 注:可执行文件名,默认与目标文件同名 List FileNUL.MAP:注:不输出 MAP 文件 Libraries.

9、LIB: 注:不链接库文件 若连接过程有错,则显示错误信息,此时需要重新调用编辑程序修改源程序,然后 再重新汇编,再经过链接,直至无错为止。 7、运行程序及调试程序 连接成功后,在 D: MASM6目录下生成了一个可执行文件(扩展名为.exe) , 3 DOS 下用 DIR 命令可以看见该文件(或者在 Windows 中文件管理器中也可看见该文件) 。 操作者可在该目录下直接键入文件名(或在文件管理器中双击)运行此程序: D: MASM6 hello.exe 注:大小写均可,扩展名可不输入 回车后屏幕将显示 : 5A 对于一个较复杂的问题,一次通过的可能性很少,这就需要调用在 DOS 支持下

10、DEBUG 程序来调试程序,关于 DEBUG 程序的用法参考实验。 二、自己编程:仿照上面程序,将自己的名字打印到屏幕上。 反复对以上过程进行练习,认真理解各步的作用,掌握“编辑” 、 “编译”和“链接” 的概念,了解各步的需要的输入文件,输出文件是什么。 实验报告要求 实验报告基本形式: (1)实验题目; (2 ) 实验目的; (3)解决问题的基本算法; (4)实验题的程序流程图; (5)实验题的源程序 (6)调试方案和调试数据; (7)本次实验的主要体会与教训; (8)思考题。 实验注意事项 1、已正确编译链接并生成的可执行程序,任何时候均可在该文件所在目录下打入 文件名而运行。 2、在

11、Windows 窗口中找到该文件并双击该文件也可执行该文件,但执行窗口执行 后随即消失,有可能看不到执行结果。 思考题 1、你在这次实验中,出现了哪些错误?如何修改? 2、通过这次上机实践,你有哪些心得体会? 3、在屏幕上输出字符“hello 2012” ,试编程实现(有种基本的方法) 。 4 实验二实验二 利用利用 DEBUG 调试程序调试程序段调试程序调试程序段 实验目的 熟悉 DEBUG 有关命令的使用方法 利用 DEBUG 掌握有关指令的功能 利用 DEBUG 运行简单的程序段 实验内容 进入和退出 DEBUG 程序 学会 DEBUG 中的 D 命令、E 命令、R 命令、T 命令、A

12、命令、G 命令等的使用。对于 U 命令、N 命令、W 命令等,也应试一下。 利用 DEBUG,验证加法、减法、带进位加、带借位减指令的功能。 标志位状态的含义如下表所示: 标 志 名置 位复 位 溢出 Overflow(是/否)OVNV 方向 Direction(减量/增量)DNUP 中断 Interrupt(允许/屏蔽)EIDI 符号 Sign(负/正)NGPL 零 Zero(是/否)ZRNZ 辅助进位 Auxiliary Carry(是/否)ACNA 奇偶 Parity(偶/奇)PEPO 进位 Carry(是/否)CYNC 实验准备 仔细阅读有关 DEBUG 命令的内容,对有关命令,都要事

13、先准备好使用的例子。 作为例子,准备用 A 命令,输入在显示器上显示字符S的系统调用程序段。 阅读将 AX 左移 9 位的程序段。 实验步骤 在 DOS 提示符下,键入 DEBUG进入 DEBUG 程序。DEBUG 界面提示符为一横线加闪烁 的光标。注意,注意,DEBUGDEBUG 下的数均默认为下的数均默认为 1616 进制数进制数 5 进入汇编状态:键入 A,屏幕显示: XXXX:0100 MOV AH,02 XXXX:0102 MOV AL,03 XXXX:0104 ADD AL,AH XXXX:0106 MOV DL,AL XXXX:0108 ADD DL,30 XXXX:010B M

14、OV AH,2 XXXX:010D INT 21 XXXX:010F MOV AH,4C XXXX:0111 INT 21 XXXX:0113 -g 屏幕将显示”5”并返回 DOS 界面。窗口截图如下所示: 图:在 DOS 下进入 DEBUG,用 A 命令编程 图:编完程序后用 U 反汇编命令查看程序指令码 注:左图中 1)0B00:0100 表示内存中逻辑地址, 即所编写程序从内存中 0B00:0100 处 开始存放; 2)0B00 为当前段寄存器 DS 的内容, 该值随内存使用的不同而具有不同的 值,冒号后边的值表示偏移量,0100 为起始地址,后边的值由指令的长度 决定 注:左图中 1)

15、0B00:0100 列表示内存 中逻辑地址,与上图同, 通过地址编号间隔数可以 计算出每条指令的长度。 2)第二列(B402 列)是 机器码,与右边的汇编指 令一一对应 3)从 0B00:0113 开始的 内存区域并没有存放程序, 所以后边的程序指令为内 存遗留垃圾数据 6 图:用 g 命令执行程序 详细记录每一步所用的命令,以及查看结果的方法和具体结果。 在 DEBUG 状态下调试加减乘除的程序,熟悉 DEBUG 各种指令。 实验报告要求 如何启动和退出 DEBUG 程序。 整理每个 DEBUG 命令使用的方法,实际示例及执行结果。 启动 DEBUG 后,要装入某一个.EXE 文件,应通过什

16、么方法实现? 注:左图中 1)g=100 表示从偏移量 0100 处开始执行程序, 程序执行到 010D 时,将字符 5 打印到屏幕, 执行到 0111 偏移量时,由于该处的指令为结束 程序返回 DOS 指令,所以程序直接退出 DEBUG 而进入 DOS 提示符,并显示打印结果 2)也可用 t=100 单步执行命令 7 实验三实验三 分支程序实验分支程序实验 利用 DEBUG 调试程序调试程序段 实验目的 掌握分支程序的设计方法 掌握利用 DEBUG 修改参数、检查结果的方法。 掌握汇编语言源程序的编辑、汇编、连接及调试过程。 实验内容 编写一个程序,显示 AL 寄存器中的两位十六进制数 编写

17、一个程序,判别键盘上输入的字符;若是 1-9 字符,则显示之;若为 A-Z 或 a-z 字符,均显示c;若是回车字符(其 ASCII 码为 0DH),则结束程序,若为其它字 符则不显示,继续等待新的字符输入。 实验准备 编写实验内容要求的两个程序。 写出调试以上程序,即修改程序参数,检查结果的操作方法。 熟悉源程序汇编、连接命令的使用方法即要回答的内容。 实验步骤 用 EDIT 或其它编辑软件,编写.ASM 源程序,例如 HEXASC.ASM 及 DSPKEY.ASM。 对其进行汇编及连接,产生.EXE 文件。 对.EXE 文件进行调试运行。 a.用 DEBUG 调试运行,学会修改 AL 内容

18、的方法。 b.对 DSPKEY.EXE 键入不同的字符,分别进行调试。 c.在 MS-DOS 下运行这两个.EXE 文件。 实验报告要求 画出两个程序的流程图,若要独立编写程序,应列出相应的程序清单。 说明本实验是如何利用 DEBUG 进行调试的。 参考程序清单 显示 AL 中两位十六进制数程序: ;DISPHEX.ASM CODE SEGMENT ASSUME CS:CODE START:MOV AL,3EH MOV BL,AL MOV DL,AL 8 MOV CL,4 SHR DL,CL CMP DL,9 JBE NEXT1 ADD DL,7 NEXT1:ADD DL,30H MOV AH

19、,2 INT 21H ;显示高位 ASCII 码 MOV DL,BL AND DL,0FH CMP DL,9 JBE NEXT2 ADD DL,7 NEXT2:ADD DL,30H MOV AH,2 INT 21H ;显示低位 ASCII 码 MOV AH,4CH INT 21H CODE ENDS ;返回 DOS END START 显示键入字符程序 ;DISPKEY.ASM CODE SEGEMENT ASSUME CS:CODE START: MOV AH,1 INT 21H ;等待键入字符,送 AL CMP AL,0DH ;是否是回车符? JZ DONE ;是则转 DONE 退出程序

20、CMP AL,0 JB NEXT CMP AL,9 JA CHARUP MOV DL,AL MOV AH,2 INT 21H JMP START CHARUP: CMP AL,41H JB NEXT CMP AL,5AH JA CHRDN DISPC: MOV DL,C MOV AH,2 INT 21H NEXT: JMP START CHRDN: CMP AL,61H JB NEXT CMP AL,7AH JA NEXT JMP DISPC DONE: MOV AH,4CH 9 INT 21H CODE: ENDS END START 实验四实验四 循环程序实验循环程序实验 实验目的 掌握循

21、环程序的设计方法 进一步熟悉利用 DEBUG 程序修改参数的方法,并检查和验证结果的正确性。 学会针对不同的问题,选用不同的组织循环的方法。 实验内容 编写一个程序,显示 AL 寄存器中的两位十六进制数 编写一个程序,判别键盘上输入的字符;若是 1-9 字符,则显示之;若为 A-Z 或 a-z 字符,均显示c;若是回车字符(其 ASCII 码为 0DH),则结束程序,若为其它字 符则不显示,继续等待新的字符输入。 实验准备 编写实验内容要求的两个程序。 写出调试以上程序,即修改程序参数,检查结果的操作方法。 熟悉源程序汇编、连接命令的使用方法即要回答的内容。 实验步骤 用 EDIT 或其它编辑

22、软件,编写.ASM 源程序,例如 HEXASC.ASM 及 DSPKEY.ASM。 对其进行汇编及连接,产生.EXE 文件。 对.EXE 文件进行调试运行。 a.用 DEBUG 调试运行,学会修改 AL 内容的方法。 b.对 DSPKEY.EXE 键入不同的字符,分别进行调试。 c.在 MS-DOS 下运行这两个.EXE 文件。 实验报告要求 画出两个程序的流程图,若要独立编写程序,应列出相应的程序清单。 说明本实验是如何利用 DEBUG 进行调试的 10 实验五实验五 子程序实验子程序实验 本实验的目的在于让读者掌握同一模块调用的方法。 实验目的 掌握主程序与子程序之间的调用关系及调用方法。

23、 掌握子程序调用过程中近程调用与远程调用的区别。 掌握通过堆栈转送参数的方法。 实验内容 将 BUF 开始的 10 个单元中的二进制数转换成两位十六进制数的 ASCII 码,在屏幕上 显示出来。要求码型转换通过子程序 HEXAC 实现,在转换过程中,通过子程序 DISP 实 现显示。 编写一个主程序,从键盘接收若干个字符,然后用远调用的方法,调用子程序统计 字符串中字符b的个数。子程序的参数是字符串的首地址 TABLE,字符串长度 N 及字 符b。子程序返回字符b的个数。参数传送采用堆栈实现。主程序在子程序返回 后,显示字符b及其个数(设为一位十六进制数)。 实验说明 第一个实验程序用子程序的

24、近程调用实现。由于在调用 HEXASC 子程序时,子程序又 调用了 DISP 子程序,这叫子程序的嵌套调用。实验过程中可以从堆栈的内容看到两个 子程序的返回地址值。由于是近调用,地址值只包括返回地址的段内偏移量。在每个子 程序的执行中,检查 CS 值是不变的。 第二个程序是利用远调用的方法调用子程序的。在远调用情况下,主程序与子程序 处在不同的逻辑代码段中,可在子程序执行中查看 CS 值,它与主程序中的 CS 值是不同 的。子程序调用后,堆栈中保留了返回地址的段地址及段内偏移量。 第二个程序中,主程序与子程序之间参数的传送是由堆栈实现的。一段是将参数 (此处是串首址 TABLE,串的长度 N

25、及待统计的字符b)顺序压如堆栈,在子程序调 用后,通过 BP 指针对堆栈中的参数访问,并将统计的结果通过堆栈返回。有关该方法 的原理此处不再介绍。 实验准备 预习子程序设计的基本方法,根据实验内容要求,画出子程序及主程序的流程图。 熟悉键盘键入字符串及用堆栈传送参数的程序段编制方法。 实验步骤 编辑、汇编两个源程序,生成相应的可执行文件(.EXE) 用 DEBUG 的 R 命令,T 命令或 G 命令和 D 命令检查远程调用及近程调用时堆栈的变 化。特别是通过堆栈传送的参数和子程序取出的参数是返回参数的详细过程。 检查程序执行的结果是否正确。 实验报告要求 分析远程调用与近程调用的区别,在用 D

26、EBUG 有关命令观察时,执行过程有何不同。 11 说明用堆栈传送参数的过程及其具体方法。 分析实验结果及所遇到问题,并说明解决的方法。 参考程序清单 码型转换程序清单: ;CONV.ASN DATA SEGMENT BUF DB 0ABH,0CDH,0DEH,01H,02H,03H DB 3AH,4BH,5CH,6FH DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,10 LEA BX,BUF AGAIN: MOV AL, BX CALL HEXASC INC BX LOOP

27、AGAIN MOV AH,4CH INT 21H HEXASC PROC NEAR MOV DL,AL PUSH CX MOV CL,4 SHR DL,CL POP CX CALL DISP ;显示高位 HEX 数 MOV DL,AL AND DL,0FH CALL DISP RET HEXASC ENDP DISP PROC CMP DL,9 JBE NEXT ADD DL,7 NEXT: ADD DL,30H MOV AH,2 INT 21H ;显示 RET DISP ENDP CODE ENDS END START 统计并显示某键入字符的个数的程序: :COUNTER.ASM DATA

28、SEGMENT CHAR DB b BUF DB 50H, ? 50H DUP(?) 12 DATA ENDS MCODE SEGMENT ASSUME CS: MCODE, DS: DATA START: MOV AX,DATA MOV DS,AX LEA DX,BUF MOV AH,9 INT 21H LEA SI BUF MOV CL, SI+1 MOV CH, 0 ;CX 中为字符串长度 INC SI INC SI ;SI 指向串首址 TABLE MOV AL,CHAR MOV AH,0 ;AX 中为待查字符 PUSH SI PUSH CX PUSH AX ; 参数送堆栈 CALL C

29、HECK POP AX ;统计个数在 AL 中 MOV DL,CHAR MOV AH,2 INT 21H MOV DL,AL AND DL, 0FH CMP DL,9 JBE NEXT ADD DL,7 NEXT: ADD DL,30H MOV AH,2 INT 21H ;显示统计个数 MOV AH,4CH INT 21H MCODE ENDS SCODE SEGMENT ASSUME CS:SCODE CHECK PROC FAR PUSH BP MOV BP,SP MOV SI,BP+10 MOV CX, BP+8 MOV AX, BP+6 XOR AH, AH AGAIN: CMP AL

30、,SI JNE NEXT1 INC AH NEXT1: INC SI LOOP AGAIN MOV AL, AH MOV BP+10,AX POP BP 13 RET 4 CHECK ENDP END START 实验六实验六 字符处理程序实验字符处理程序实验 实验目的 熟悉串操作指令的功能与应用 掌握串操作指令的寻址方式及使用方法,编写常用的字符串处理程序。 实验内容 字符串统计。自 STRN 开始的存储区中,有一个字符串,统计其中含有小写字母的个 数,将统计结果以两位十进制数显示在屏幕上。 在给定的字符串中,删除重复的字符,其余的字符向前递补。 实验准备 熟悉字符处理的方法和字符处理程序的

31、设计; 认真预习有关串操作的指令极其寻址方式的特点,能够正确使用串操作指令,并准 备好数据。 按正常的方法将删除字符程序编成子程序,规定子程序的入口和出口参数。 实验步骤 用 1 号系统调用从键盘键入一个字符串,然后统计其中小写字母的个数。程序每次 执行,都能得到不同的结果。 实验 2 编写一个在同一个字符串中删除字符,并将其余字符向前递补的程序。 实验报告要求 对照参考程序,画出程序流程图。 总结字符串处理的编程方法,提出改进和完善此类程序的设计方案。 参考程序清单 统计小写字母个数的程序清单: ;COUNTDC.ASM DATA SEGMENT STRN DB 80 DUP(?) DATA

32、 ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START:MOV AX, DATA MOV DS, AX LEA DI, STAN MOV CL, 0 AGAIN:MOV AH, 1 INT 21H CMP AL,0DH JZ DONE MOV DI,AL 14 INC DI INC DL JMP AGAIN DONE: LEA SI,STRN MOV CH,0 MOV BL,0 CLD CYCLE: LODSB CMP AL,61H CMP AL,7AH JA NEXT INC BL NEXT: LOOP CYCLE MOV AL,BL MOV AH,

33、0 MOV CL,10 DIV CL ;十位数在 AL 中,个位数在 AH 中 XCHG AH,AL ;以下显示两位十进制数 MOV DL,AH OR DL,30H INT 21H MOV DL,AL OR DL,30H MOV AH,2 INT 21H MOV DL,AL OR DL,30H INT 21H MOV DL,AL OR DL,30H INT 21H MOV AH,4CH INT 21H CODE ENDS END START 删除字符串中重复字符的源程序清单: ;DELD.ASM DATA SEGMENT STAN DB 80 DUP(?) LEN DB ? DATA ENDS

34、 CODE SEGMENT ASSUME CS: CODE,DS: DATA,ES: DATA ATART:MOV AX, DATA MOV DS,AX MOV ES,AX LEA SI,STRN MOV CL,0 AGAIN: MOV AH,1 INT 21H CMP AL,0DH 15 JZ DONE MOV SI,AL INC SI INC CL JMP AGAIN DONE: MOV CH,O MOV LEN,CL REPEAT:PUSH SI PUSH CX ;CX 为内循环记数 PUSH CX ;DX 为外循环记数 POP DX DEC CX JE NEXT1 ;是最后一个字符,不

35、再查找重复字符 MOV AL,SI CMP AL,0 JE NEXT1 COMP: INC SI CMP AL,SI JNE GOON ;为非重复字符 MOV BUTE PTRSI,0 GOON: LOOP COMP ;查出与该字符重复的所有字符,并用 0 替换 NEXT1: POP DX POP SI DEC DX JNZ REPEAT ;对所有重复字符都进行查找 LEA SI,STRN ;删除重复字符 MOV CL,LEN MOV CH,0 CYCLE: MOV AL,SI CMP AL,0 ;是重复字符吗? JNZ NEXT ;不是,查找下一个字符 DEC CX ;递补字串长度送 CX

36、JZ DONE ;若是最后字符不递补 CALL DELE ;删除该空字符并递补 DEC SI ;对递补子串从头处理 NEXT: INC SI LOOP CYCLE MOV AH,4CH INT 21H DELE PROC PUSH SI PUSH CX CLD MOV DI,SI ;空字符处为目的首址 INC SI ;下一个地址为源串首址 REP MOVSB POP CX POP SI RET DELE ENDP CODE ENDS 16 END START 实验七实验七 汇编语言综合设计实验汇编语言综合设计实验 实验目的 学会自行设计程序框图和编写程序; 学会自行调试程序方法和分析运行结果。

37、 实验要求 自行选题; 自行设计方案; 如有雷同,均为零分; 程序不低于 100 条语句。 注意:其中某些程序有错误,请同学们上机时认真检查, 并在实验报告中指出。 17 . 微机原理及应用部分微机原理及应用部分 实验一实验一 8255A 可编程并行口实验可编程并行口实验 一、实验目的 1、掌握并行接口芯片 8255A 和微机接口的连接方法。 2、掌握并行接口芯片 8255A 的工作方式及其编程方法。 二、预备知识 1、 8255A 结构 8255A 是可编程并行接口芯片,双列直插式封装,用+5V 单电源供电,如图 1 是 8255A 的逻辑框图,内部有 3 个 8 位 I/O 端口:A 口、

38、B 口、C 口;也可以分为各有 12 位的两组:A 和 B 组,A 组包含 A 口 8 位和 C 口的高四位,B 组包含 B 口 8 位和 C 口 的低 4 位;A 组控制和 B 组控制用于实现方式选择操作;读写控制逻辑用于控制芯片 内寄存器的数据和控制字经数据总线缓冲器送入各组接口寄存器中。由于 8255A 数据 总线缓冲器是双向三态 8 位驱动器,因此可以直接和 8088 系统数据总线相连。 2、 8255A 端口地址(下表) A1A0/ RD/WR/CS操作类型操作方向 0 0 1 0 1 0 0 0 0 1 1 1 0 0 0 PA数据总线 PB数据总线 PC数据总线 输入(读) 0

39、0 1 1 0 1 0 1 1 1 1 1 0 0 0 0 0 0 0 0 数据总线PA 数据总线PB 数据总线PC 数据总线控制字 输出 (写) 1 1 0 1 1 1 1 0 0 数据总线三态 非法状态 数据总线三态 断开 3、 8255工作方式 8255A 芯片有三种工作方式: 方式 0、方式 1、方式 2。 它通过对控制寄存器写入 不同的控制字来决定其三种不同的工作方式。 方式 0 : 基本输入/输出 18 该方式下的 A 口 8 位和 B 口 8 位可以由输入的控制字决定为输入或输出, C 口 分成高 4 位(PC7PC4)和低 4 位(PC3PC0)两组,也有控制字决定其输入或输出

40、。 需注 意的是:该方式下,只能将 C 口其中一组的四位全部置为输入或输出。 方式 1 : 选通输入/输出 该方式又叫单向输入输出方式,它分为 A、B 两组,A 组由数据口 A 和控制口 C 的高 4 位组成,B 组由数据口 B 和控制口 C 的低 4 位组成。数据口的输入/输出都是锁 存的,与方式 0 不同,由控制字来决定它作输入还是输出。C 口的相应位用于寄存数据 传送中所需的状态信号和控制信息。 方式 2 : 双向输入输出 本方式只有 A 组可以使用,此时 A 口为输入输出双向口,C 口中的 5 位(PC3PC7) 作为 A 口的控制位。 4、 8255A 控制字 7 6 5 4 3 2

41、 1 0 PC30:1=输入, 0=输出 PB 口: 1=输入,0=输出 B 组 方式选择:0=方式 0,1=方式 1 PC74:1=输入, 0=输出 PA 口:1=输入,0=输出 方式选择:00=方式 0 A 组 01=方式 1 1 =方式 2 方式标志:1=有效 (1) 方式选择控制字 (2) PC 口按位置/复位控制字 1=置位,0=复位 无关 位选择 000111 置位/复位标志:0=有效 主片 7 6 5 4 3 2 1 0 三、实验内容 19 D0 34 D1 33 D2 32 D3 31 D4 30 D5 29 D6 28 D7 27 PA0 4 PA1 3 PA2 2 PA3

42、1 PA4 40 PA5 39 PA6 38 PA7 37 PB0 18 PB1 19 PB2 20 PB3 21 PB4 22 PB5 23 PB6 24 PB7 25 PC0 14 PC1 15 PC2 16 PC3 17 PC4 13 PC5 12 PC6 11 PC7 10 RD 5 WR 36 A0 9 A1 8 RESET 35 CS 6 UB61 8255 D0 D1 D2 D3 D4 D5 D6 D7 IOR IOW ADD0 ADD1 RST CS_8255 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PB0 PB1 PB2 PB3 PB4 PB5 PB6

43、 PB7 PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 RB61 4.7K VCC Y7 L1 L2 L3 L4 L5 L6 L7 L8 K1 K2 K3 K4 K5 K6 K7 K8 1、实验原理 如实验原理图下所示,PC 口 8 位接 8 个开关 K1 K8,PB 口 8 位接 8 个发光二极 管,从 PC 口读入 8 位开关量送 PB 口显示。拨动 K1 K8,PB 口上接的 8 个发光二极 管 L1 L8 对应显示 K1 K8 的状态。 2、实验线路连接 (1) 8255A 芯片 PC0 PC7 插孔依次接 K1 K8。 (2) 8255A 芯片 PB0PB7 插孔依

44、次接 L1 L8。 (3) 8255A 的 CS 插孔 CS8255 接译码输出 Y7 插孔。 四、实验软件框图 见右图 五、实验软件清单 见随机光盘,文件名为 H82551.ASM 六、实验步骤 1、按上图连好线路。 2、运行实验程序。 在 DVCC8086JHN 显示 “82551” ,同时拨动 K1K8,L1L8 会跟着亮灭。 开始 调显示“82551”子程序 设置 8255 控制字 置 8255PB0 为低电平 读取 PC 口值 将 PC 口值送 PB 口显示 20 实验二实验二 8253A 定时定时/计数器实验计数器实验 一、实验目的 学习 8253A 可编程定时/计数器与 8088

45、CPU 的接口方法;了解 8253A 的工作方式; 掌握 8253A 在各种方式下的编程方法。 二、预备知识 1、 8253A 内部结构 8253A 定时/计数器具有定时、计数双功能。它具有三个相同且相互独立的 16 位 减法计数器,分别称为计数器 0、计数器 1、计数器 2。每个计数器计数频率为 02MHZ。由于其内部数据总线缓冲器为双向三态,故可直接接在系统数据总线上,通 过 CPU 写入计数初值,也可由 CPU 读出计数当前值;其工作方式通过控制字确定;图 中的读写控制逻辑,当选中该芯片时, 根据读写命令及送来的地址信息控制整个芯片 工作;控制字寄存器用于接收数据总线缓冲器的信息:当写入

46、控制字时,控制计数器的 工作方式,当写入数据时则装入计数初值,控制寄存器为 8 位,只写不能读。 2、 计数器内部结构 每个计数器由一个 16 位可预置的减 1 计数器组成,计数初值可保存在 16 位的锁存 器中,该锁存器只写不能读。在计数器工作时,初值不受影响,以便进行重复计数。图 中每个计数器有一个时钟输入端 CLK 作为计数脉冲源, 计数方式可以是二进制,计数 范围 110000H,也可以是十进制,计数范围 165536。门控端 GATE 用于控制计数开 始和停止。输出 OUT 端当计数器计数值减到零时,该端输出标志信号 。 3 、 8253A 端口地址选择见下表 52 /CS/RD/W

47、RA1A2寄存器选择与操作 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 0 1 0 1 写入计数器#0 写入计数器#1 写入计数器#2 写入控制寄存器 0 0 0 0 0 0 1 1 1 0 0 1 0 1 0 读计数器#0 读计数器#1 读计数器#2 0 1 0 0 1 1 1 1 1 无操作(三态) 禁止(三态) 无操作(三态 4 、 8253A 功能 8253 A 既可作定时器又可作计数器: (1) 计数: 计数器装入初值后,当 GATE 为高电平时,可用外部事件作为 CLK 脉 21 冲对计数值进行减 1 计数,每来一个脉冲减 1,当计数值减至 0 时,由 OUT 端输出一 个标志信号。 (2) 定时: 计数器装入初值后,当 GATE 为高电平时,由 CLK 脉冲触发开始自动 计数,当计数到零时,发计数结束定时信号。 除上述典型应用外,8253A 还可作频率发生器、分频器、实时钟、单脉冲发生器等。 5、 8253A 控制字 00 选计数器 0 数制控制:0=二进制,1=BCD 01 选计数器 1 10 选计数器 2 工作方式选择:000 方式 0 11 非法 001 方式 1 10 方式 2 00 计数器锁存命令 11 方式 3 01 只读/写低 8 位,高 8 位自动置 0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1