合肥工业大学
计算机与信息学院
课程设计
课 程:微机原理与接口技术设计
专业班级:计算机科学与技术班
学 号:2
姓 名:
一、设计题目及要求:
利用 8259A中断,实现对8253多种计数初值的设定:
1.在中断服务程序中设定8253的计数初值。
2.开关K1用于设定0.5秒方波的计数初值,K2用于设定1秒方波的计数初值,K3用于设定2秒方波的计数初值。
3.用8253的输出信号,控制一个发光二极管,以演示修改效果。
二、设计思想:
整体设计:
①利用8259A芯片设定IR1、IR2、IR3三个中断 ,分别用三个开关的高低电平触发中断。
②在三个终端的中断服务子程序里面为8253芯片通道0设定不同频率的方波计数初值,使得在触发不同中断时8253芯片产生周期为0.5秒、1,秒、2秒的方波。
③将8253的输出端口与发光二极管连接,通过二极管的亮灭显示出8253内部方波的频率。
部分设计:
①8253芯片方式3初值确定:根据分频电路T(n)=T/2*公式以及0.5s、1s、2s方波的频率计算出初值分别为2580H、4B00H、9600H。
②8253芯片和8259芯片的片选方法:设定8259A和8253芯片的端口号分别为0FFE0H 、0FFE1H,以及0FFFCH—0FFFFH,使得在连接138译码器时,A连A2,B连A3,C连A4,T0连接8259A芯片的CS端,T7连接8253芯片的CS端。
③8259A中断向量表写入以及芯片初始化:根据8259A各个中断在中断向量表中的地址,将IR0、IR1、IR2的中断服务程序入口地址写入向量表中;ICW4设定除中断0、1、2外其他位屏蔽。
④手动设置中断结束:为了不影响各个中断之间的交替响应,在每个中断服务程序结束之前写入中断结束方式,将20H输出到8259端口,将当前中断结束响应后再响应下一个中断。
三、功能流程图:
四、结果讨论:
附录:实验代码:(完整的源程序)
CODE SEGMENT
ASSUME CS:CODE,DS:CODE,ES:CODE
ORG 3400H
Port0 EQU 0FFE0H ;8259芯片的端口号
Port1 EQU 0FFE1H
START:
CALL F8259
P0: CLI
MOV AX,OFFSET INT0
MOV BX,0020H
MOV [BX],AX
MOV BX,0022H
MOV AX,0000H
MOV [BX],AX
STI
P1: CLI
MOV AX,OFFSET INT1
MOV BX,0024H
MOV [BX],AX
MOV BX,0026H
MOV AX,0000H
MOV [BX],AX
;CALL F8259
STI
P2: CLI
MOV AX,OFFSET INT2
MOV BX,0028H
MOV [BX],AX
MOV BX,002AH
MOV AX,0000H
MOV [BX],AX
; CALL F8259
STI
P:
JMP P
;------------------------------------
F8259: MOV AL,1BH ;8259的初始化00011011 icw1
MOV DX,Port0
OUT DX,AL
MOV AL,08H ;00001000 icw2
MOV DX,Port1
OUT DX,AL
MOV AL,01H ;00000001 icw4
OUT DX,AL
MOV AL,00H ;屏蔽只留IR0,IR1,IR2。OCW1
OUT DX,AL
RET
;---------------------------
INT0: CLI
CALL FB0
STI
MOV DX,Port0
MOV AL,20H
OUT DX,AL
IRET
INT1: CLI
CALL FB1
STI
MOV DX,Port0
MOV AL,20H
OUT DX,AL
IRET
INT2: CLI
CALL FB2
STI
MOV DX,Port0
MOV AL,20H
OUT DX,AL
IRET
FB0: MOV DX,0FFFFH
MOV AL,00110110B
OUT DX,AL
MOV AL,80H
MOV DX,0FFFCH
OUT DX,AL
MOV AL,25H
OUT DX,AL
RET
FB1: MOV DX,0FFFFH
MOV AL,00110110B
OUT DX,AL
MOV AL,00H
MOV DX,0FFFCH
OUT DX,AL
MOV AL,4bH
OUT DX,AL
RET
FB2: MOV DX,0FFFFH
MOV AL,00110110B
OUT DX,AL
MOV AL,00H
MOV DX,0FFFCH
OUT DX,AL
MOV AL,96H
OUT DX,AL
RET
;--------------------------
DONE:
CODE ENDS
END START
第二篇:微机原理课设实验报告最终修订版
河北科技大学
课程设计报告
学生姓名: 张德正 学号: 120701233
专业班级:电子信息122班
课程名称: 微型计算机原理及应用技术
学年学期: 2 0 14 — 2 0 15 学年第 1 学期
同组人员: 薛小禹、应佳捷、张念琦、张美萍
指导教师: 赵艳
2 0 14年 12月
课程设计成绩评定表
目录
一、课程设计目的------------------------------------1
二、课程设计题目------------------------------------1
三、设计任务与要求----------------------------------1
四、汇编语言程序设计的基本步骤----------------------2
五、课程设计原理及方案------------------------------2
六、程序与分析---------------------------------------8
七、实施结果-----------------------------------------9
八、小组成员及贡献 --------------------------------10
九、设计体会---------------------------------------10
十、参考资料----------------------------------------10
一、课程设计目的:
1、掌握汇编语言程序的建立和运行;
2、熟悉DOS环境以及在DOS下会调试编写好的汇编程序;
3、熟悉常用的DOS功能;
4、小组合作完成设计题目。
课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识解决实际工程设计和应用问题的能力的重要教学环节,它具有动手、动脑和理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一种较好方法。
通过课程设计实践,不仅要培养学生的实际动手能力,检验学生对本门课学习的情况,更要培养学生在实际的工程设计中查阅专业资料、工具书或参考书,掌握工程设计手段和软件工具,并能以图纸和说明书等表达设计思想和结果的能力。培养学生事实求是和严肃认真的工作态度。
通过设计过程,要求学生熟悉和掌握微机系统的软件设计的方法、设计步骤,使学生得到微机开发应用方面的初步训练。让学生独立或集体讨论设计题目的系统方案论证设计、编程、软件调试、查阅资料、编写说明书等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。通过本次课程设计使学生熟练的熟练掌握微机系统的设计方法,熟练应用8086汇编语言编写应用程序和实际设计中的软件调试方法和步骤,熟悉微机系统的软件开发工具的使用方法。
二、课程设计题目
加法练习程序
三、设计任务与要求:
1、设计加法练习程序;
2、程序设计基本要求:
1)菜单
内容包括:①输入字符串②程序运行③退出
2)输入字符串
随机给出百位数以内的加法算式,并提示输入答案;
3)程序运行
若答案正确,则给出正确提示;若答案错误,则给出错误提示,并提示输入答案;
4)按R键则继续下一题,按Q键则返回DOS系统。
四、汇编语言程序设计的基本步骤
1.分析问题
首先必须明确求解问题的意义和任务。对题目给出的已知条件和要完成的任务进行详细地了解和分析,将一个实际的问题转化为计算机可以处理的问题。
2.确定算法
所谓算法,简单地说就是计算机能够实现的有限的解题步骤。我们知道,计算机只能进行最基本的算术运算和逻辑运算,要完成较为复杂的运算和控制操作,必须选择合适的算法,这是正确编程的基础。
3.设计流程图
将提出的算法或编程思想用流程图的方式画出
4.根据流程图编写程序
编写程序是采用程序设计语言来实现上面已确定的算法,此过程有些书上称为编码。本书所介绍的是采用汇编语言编写程序。采用汇编语言编写程序应注意以下几个问题:
(1)必须详细了解CPU的编程模型、指令系统、寻址方式及相关伪指令;
(2)必须进行存储空间和工作单元的合理分配;
(3)多次使用的程序段可采用子程序或宏指令;
(4)尽可能用标号或变量来代替绝对地址和常数;
5.程序的检验
程序编写好以后,必须经过书面检查和上机调试,以便说明程序是否正确。检验时,应预先选择典型数据,检查是否可以得到预期结果。
五、课程设计原理及方案
1、流程图
2、使用的DOS功能:
1) 显示字符串 MOV AH,09H
INT 21H ;入口参数DS:DX=缓冲区
2) 键盘输入一个字符 MOV AH,01H
INT 21H ; AL=输入的字符
3)终止当前程序并返回调用程序 MOV AH,4CH
INT 21H ;AL=退出码
4)输入字符串 MOV AH,0AH
INT 21H ;入口参数DS:DX=缓冲区
5)输出单字符 MOV AH,2
INT 21H ;DL=要显示字符的ASCII码
3、使用的BIOS功能:
1) MOV AL,0AH;在光标位置显示字符
INT 10H
2) MOV AH,0;从键盘读字符
INT 16H
3) MOV AX,0E20H;空一格
INT 10H
3、使用工具和软件:
计算机和MASM汇编软件
六、程序与分析
OUTPUT MACRO X
LEA DX,X
MOV AH,9
INT 21H
ENDM
CODE SEGMENT
ASSUME CS:CODE,DS:CODE
START:
PUSH CS
POP DS
OUTPUT TIPS
AGAIN:
MOV AX,0E20H
INT 10H
CALL JIAFA
OUTPUT MSG
KEY:
MOV AH,0
INT 16H; 无回显接收一键
CMP AH,13H ;'R'
JZ AGAIN
CMP AH,10H ;'Q'
JNZ KEY
OUTPUT EXIT
MOV AH,1
INT 21H ; 输入字符
MOV AH,4CH
INT 21H ; 返回DOS
JIAFA:
CALL RANDOM
MOV SUM,AX
CALL SHOW
MOV DL,'+'
MOV AH,2
INT 21H
CALL RANDOM
ADD SUM,AX
CALL SHOW
NEXT:
MOV AX 0E20H 串间空格隔开
INT 10H
MOV DL,'='
MOV AH,2
INT 21H 输出=
CALL INPUT
CMP BP,SUM
JZ DONE
OUTPUT NO
JMP NEXT
DONE:
OUTPUT YES
RET; 功能:产生一个百位以内的随机数存于AX中
RANDOM:
XOR AX,AX AX清零
OUT 43H,AL
IN AL,40H
MOV AH,AL
IN AL,40H
XCHG AL,AH
XOR DX,DX
MOV BX,99
DIV BX
MOV AX,DX ; 余数为随机数
RET 返回断点处
SHOW:
MOV AX ,AX
AAM
OR AX,3030H
XCHG AH,AL
MOV DX,AX
MOV AH,2
INT 21H
MOV DL,DH
INT 21H
RET
INPUT:
XOR BP,BP
MOV CX,3
GET:
MOV AH,0
INT 16H
CMP AL,0DH
JZ OK
CMP AL ,'0'
JB GET
CMP AL,'9'
JA GET
MOV AH,0EH
INT 10H
AND AX ,0FH
XCHG BP,AX
MOV BX,10
MUL BX
ADD BP,AX
LOOP GET
OK:
CMP CX,3
JNZ OK 1
MOV AX,0E30H
INT 10H
OK 1: RET
TIPS DB 9,9,'JIA FA LIAN XI',0DH,0AH,'$'
YES DB' Correct!$'
NO DB ' Error!',0DH,0AH,'$'
MSG DB DH,0AH,' Continue(R) or Exit(Q)?',0DH,0AH'$'
EXIT DB 0DH ,0AH,' Press any key to quit...$'
SUM DW 0
CODE ENDS
END START
七、实施结果
程序运行之后,随机给出百位数以内的加法算式,并提示输入答案;若答案正确,则给出正确提示;若答案错误,则给出错误提示,并提示输入答案;按R键则继续下一题,按Q键则返回DOS系统。
八、小组成员及贡献
小组成员:薛小禹、应佳捷、张德正、张美萍、张念琦
我(张德正)主要负责用RANDOM的随机种子的子程式,其实是伪随机过程,指定一个算法,根据该子程式输出的结果来产生随机的加法算式。产生一个被加数N1,产生一个加数N2。
RANDOM:
XOR AX,AX AX清零
OUT 43H,AL
IN AL,40H
MOV AH,AL
IN AL,40H
XCHG AL,AH
XOR DX,DX
MOV BX,99
DIV BX
MOV AX,DX ; 余数为随机数
RET 返回断点处
九、设计体会
总的来说,在整个设计的过程中,对文件的知识有了相当程度的了解掌握,基本上学会了对图的操作等。在对文件的自学过程中也认识 ,在学习的过程中要灵活的把所学的知识运用到实践当中,并且还要巩固练习和运用,这样才可以牢牢的记住。试验也对数据结构的知识进行了复习,尤其是结构体的定义、地址与引用的合理使用以及记录指针的使用也认识到数据结构在实践运用中的重要性,在对程序不断的修改和逐步改进提升的过程中,积累了不少经验,为在以后的学习和实践应用奠定了一定的基础。
做过很多课程设计,但完成了微机原理的课程设计后,我才感觉这门还是真正需要些技术含量的。需要我们同学深入的去思考,去学习查资料,我在这一周的时间里收获也是很大的,对汇编语言由略知皮毛到能运用它独立做一些小程序。这种技能都是课堂上学不到的,但对未来却有很大的帮助。当我面对一个难题,从一筹莫展到逐渐清晰明朗,调试调试再调试,而后最终完成任务。只有亲身经历过,才能感受其中的艰辛与快乐。更重要的是我们对汇编有了更进一步的理解。有了实际应用的体会,知识更加的融会贯通了。不管是从知识上还是从思维方式上,我们都得到了很大的进步。
第一天的任务便是熟悉编程环境,掌握编程的步骤,然后编写一个范例小程序。当天便遇到了问题,怎样正确运用DOS的各个功能调用,因为课堂上讲的关于这方面的知识都很不系统,只是勉强记住其对应的功能而却不知道实际运用的方法。然后我就对照着书上的例子和指导书上的范例程序,把各个功能都调试运行了一遍。并且着重学习了一下经常用到的几个功能,像09号功能、0A号功能等。其中我发现了以前编程只知道往上写却不知道起作用的语句都在调试的过程中慢慢清晰了。
接下来的几次实验,我们针对平时讲课比较抽象的内容进行测试,当然,一开始总是会出现或多或少、或大或小的问题,但经过努力,终于可以克服这些困难,能够独立的设计程序。而且我们平时遇到的困难,如果不能独立解决,首先我会先从书中寻找答案,如果找不到再问同学或者老师求解,或者从网上寻找答案,最后通过这个困难学到了之前不懂的东西,并进行运用和掌握。
在最后的课程设计中,老师给我们规定了题目,然后我们在组内进行了分工,每个人负责一个部分,最后在汇总调试。虽然设计的程序中有些许差错,最终经过修正,可以完成了最初的实验目的。
十、参考资料
朱金钧、麻新旗:《微型计算机原理及应用技术》 机械工业出版社
张弥左、王兆月、邢立军:《微型计算机接口技术》机械工业出版社