原创8086微机原理实验报告

上传人:沈*** 文档编号:90364490 上传时间:2022-05-14 格式:DOC 页数:32 大小:584KB
收藏 版权申诉 举报 下载
原创8086微机原理实验报告_第1页
第1页 / 共32页
原创8086微机原理实验报告_第2页
第2页 / 共32页
原创8086微机原理实验报告_第3页
第3页 / 共32页
资源描述:

《原创8086微机原理实验报告》由会员分享,可在线阅读,更多相关《原创8086微机原理实验报告(32页珍藏版)》请在装配图网上搜索。

1、-Inter 8086/8088系列微型计算机原理及接口技术课程设计报告设计工程:电子时钟院系:大学电气工程学院班级:学号:同组者:目录:一、 设计目的说明3二、 设计原理3三、 程序说明3四、 程序流程图5五、 程序代码10六、 效果图20七、 调试过程21八、 硬件连接图22九、 心得体会23十、 参考资料23一、 设计目的:运用汇编语言设计一个电子时钟,有以下功能:1、实现时分秒的计时,并显示于屏幕中央;2、具有时分秒的校时功能;3、具有半点整点声音报时功能;4、实现年月日的计算,并显示于时间下方;5、实现日期校对功能;6、实现一键重启功能;7、在屏幕左上方显示各功能操作提示8、设计表盘

2、,作为时间显示的背景二、 设计原理设计的根本原理是通过软件实现延时,以实现秒的计时,进而通过进制关系实现分、时的显示。软件延时原理如下:每条指令执行时间的长短,是以计算机的时钟周期为根本单位的。当CPU采用的时钟频率一定时,时钟周期也为定值,因此可以根据时钟周期的多少来计算执行指令需要的时间。因此可以在程序中增加适当的无关语句让计算机执行,已获得需要的延时。这就是延时程序的设计原理。在以上延时程序的根底上,通过时间约1s的长延时累加,并以时、分、秒的形式显示出来。同理,通过时间与日期的进制关系,还可以编写一个日期的程序。在时、分、秒和年、月、日进制计算程序的根底上可以增加语句以实现时间和日期的

3、校对功能,通过键盘输入不同字符可以选择对时、分、秒、年高位、年低位、月、日分别进展加一操作,以实现校对功能。报时的功能可以通过将8255A的PB端口的第一位交替置位或复位产生一个方波信号,推动扬声器发出声音。产生的声音频率就是端口置位复位的频率。半点/整点条件的检测那么可以编写一个分支程序体,通过对当前秒值、分值与报时点的秒值、分值进展比拟以实现。当分值到达29或59时激发响铃。另外,还可以在键盘输入特定字符的时候执行一条转移语句跳转到程序开场的地方,以实现一键重启的功能,然后提示再次输入起始时间,即重置时间。可以通过int10中断设置背景显示:2H子功能实现光标定位,9H子功能实现输出字符颜

4、色,个数等的设定。另外,还可以用图形方式实现图形输出。为方便使用,在屏幕上还应当显示操作提示。三、 程序说明用户输入的初始时间,日期是以ASCII码的形式存入存的,在程序中将输入先后换为BCD码,压缩BCD码。以这种形式实现各变量的计数,校时控制,整点报时的条件判断。最后,将压缩BCD码转换为ASCII码,并输出。子程序设计说明:LOCATE为光标位置设置,即输出位置设置TURN1:将输入容的ASCII依次转换为BCD码TURN2:将压缩BCD码依次变换为ASCII码TURN3:将BCD码依次转换为压缩BCD码DELAYY:延时子程序CLEAN:清屏操作程序运行后,首先在屏幕的中央将显示提示信

5、息BEGIN:,提示输入起始时间,输入起始时间格式:HH:MM:SS后,在屏幕左上方显示操作提示,在屏幕中央显示起始时间,并开场计时。同时在时间的下方显示日期提示符DATE:以及日期格式YYYYMMDD,初始日期为00000000”。此时可以根据操作提示进展校时h,m,s、校日期(g,y,n,d)和重启(r)的操作。输入h,m,s可以分别使时、分、秒加1,以实现校时。输入g,y,n,d可以分别使年高两位、年低两位、月、日加1,以实现校日期。输入r那么会重启,即回到提示输入初始时间的状态,等待输入起始时间。当时间到达半点或整点前4秒,如11:29:56或者12:59:56,将开场给8255A的P

6、B的第一位交替置位复位,产生方波,激发扬声器。在校时、校日期以及报时的过程中,时钟不会停顿计时。四:程序流程图见下页。开场键盘输入起始时间,放入存储器缓冲区STAY显示提示语BEGIN:调用LOCATE,设置输出位置调用TURN1,将STAY中的ASCII依次转换为BCD码调用TURN3,将STAY中的BCD码依次转换为压缩BCD码ZF=1?ABEN读取键盘输入读取缓冲区内键代码,送入AL0号16H中断OYNLLAAL=1?调用延时子程序DELAYYBAL=2CAL=4AL=5K分DH加1,十进制修正CAL=6H分=60AL=7G分置零AL=8F时CH加1,十进制修正BIDAL=3Y秒DL加1

7、,十进制修正秒=60?DENNNNNNNYYYYYYYI时=24?L时置零天DAY加1,十进制修正DAY=31天置零F月MONTH加1L月=13?月置零GL年低位YEAR2加1JHNYNYNYJCF=1L年低位置零年高位YEAR1加1,十进制修正CF=1?L年高位置零K秒=5659?L分=29?分=59?报时MM调用TURN2,将时间的压缩BCD码依次变换为ASCII码MNYYN调用TURN2,将日期的压缩BCD码依次转换为ASCII码调用CLEAN,清屏调用LOCAT,设置时间显示位置显示缓冲区内的字符串时间和日期设置日期提示符、操作提示的显示位置并显示ENDO延时子程序流程图见下页。开场外

8、循环次数赋CX内循环次数赋BXCXCX1CX=0BXBX1BX=0RETYNNY五、程序代码王子奴隶,和雪窗写的王子奴隶同人辽东风雪记,王子奴隶番外童年在坞堡这一系列的文文都不错,很后妈。 另外还有兰雨雨的醉江山DAT SEGMENTYEAR1 DB YEAR2 DB MONTH DB DAY DB STAY DB 100 DUP ()DATE DB DATE:,$ SA0 DB BEGIN:,$ SA1 DB Press h m s to adjust time,$ SA2 DB Press g y n d to adjust date,$ SA3 DB Press rto reset,$

9、DAT ENDSSTA SEGMENT PARA STACKSTACKDB 100 DUP ()TOP LABEL WORDSTA ENDSCOD SEGMENTPIC MACRO X,Y ;X 是位置Y是字符MOV AH,02HSUB BH,BH MOV DX,XINT 10HMOV AL,YMOV BL,0EH MOV CX,1MOV AH,09HINT 10HENDMSTART PROC FAR ASSUME CS:COD,DS:DAT,SS:STA MOV AX,DAT MOV DS,AX MOV AX,STA MOV SS,AX MOV AX,TOP MOV SP,AXSTART1:

10、 CALLCLEAN CALLLOCATE ;调用光标位置设置子程序,设置提示语显示 MOV DX,OFFSET SA0 ;显示提示语 MOV AH,9 INT 21H MOV DX,OFFSET STAY ;键盘输入字符串存入存 MOV AH,10 INT 21H MOV BX,OFFSET STAY ;将输入的ASCII码转换为BCD码 CALL TURN1 INC BX INC BX CALL TURN1 INC BX INC BX CALL TURN1 INC BX INC BX CALL TURN1 INC BX INC BX CALL TURN1 INC BX INC BX CAL

11、L TURN1 INC BX INC BX CALL TURN1 MOV BX,OFFSET STAY ;将BCD码转换为压缩的BCD码 MOV AL,BX CALL TURN3 MOV CH,AL INC BX INC BX MOV AL,BX CALL TURN3 MOV DH,AL INC BX INC BX MOV AL,BX CALL TURN3 MOV DL,AL INC BX INC BX MOV AL,BX CALL TURN3 MOV YEAR2,AL INC BX INC BX MOV AL,BX CALL TURN3 MOV YEAR1,AL INC BX INC BX

12、MOV AL,BX CALL TURN3 MOV MONTH,AL INC BX INC BX MOV AL,BX CALL TURN3 MOV DAY,AL X1: MOV AH,1 ;读取键盘控制字符输入 INT 16H JZ AGAIN MOV AH,0 ;从键盘读入控制字符 INT 16H CMP AL,h ;分析输入,实现校时功能 JZ HOU CMP AL,m JZ MIN CMP AL,s JZ SEC CMP AL,r JZ G1 CMP AL,g JZ YEAR2_ CMP AL,y JZ YEAR1_ CMP AL,n JZ MONTH_ CMP AL,d JZ DAY_

13、JMP AGAIN G1: JMP START1 AGAIN: CALL TIME ;调用延时子程序YEAR1_: MOV AL,YEAR1 ;实现分时秒的计数并显示 ADD AL,1 DAA MOV YEAR1,AL JNC DISPY MOV YEAR1,0YEAR2_: MOV AL,YEAR2 ADD AL,1 DAA MOV YEAR2,AL JNC DISPY MOV YEAR2,0 DAY_: MOV AL,DAY ADD AL,1 DAA MOV DAY,AL CMP AL,31H JNE DISPY MOV DAY,0MONT_: MOV AL,MONTH ADD AL,1

14、DAA MOV MONTH,AL CMP AL,13H JNE DISPY MOV MONTH,0SEC: MOV AL,DL ADD AL,1 DAA MOV DL,AL CMP AL,60H JNE DISPY MOV DL,0MIN: MOV AL,DH ADD AL,1 DAA MOV DH,AL CMP AL,60H JNE DISPY MOV DH,0HOU: MOV AL,CH ADD AL,1 DAA MOV CH,AL CMP AL,24H JNE DISPY MOV CH,0 DISPY: ;显示模块 MOV BX,OFFSET BUFFER CMP DL,56H ;报时条

15、件测试 JZ NEXT CMP DL,57H JZ NEXT CMP DL,58H JZ NEXT CMP DL,59H JZ NEXT CMP DL,00H JZ NEXT2 JMP NEXT1NEXT: CMP DH,29H JZ RING CMP DH,59H JZ BAOSHI JMP NEXT1NEXT2: CMP DH,30H JZ BAOSHI CMP DH,00H JZ BAOSHI JMP NEXT1RING: ;半/整点报时 PUSH DX PUSH AX MOV DL,07H MOV AH,02H INT 21H POP AX POP DXAG: MOV DX,1200

16、IN AL,61H AND AL,0FEH OR AL,02H OUT 61H,AL MOV CX,233 LOOP $ AND AL,0FDH OUT 61H,AL MOV CX,100 LOOP $ DEC DX JNZ AGNEXT1: MOV AL,CH ;将压缩的BCD码转换为ASCII码 CALL TURN2 INC BX MOV AL,: MOV BX,AL INC BX MOV AL,DH CALL TURN2 INC BX MOV AL,: MOV BX,AL INC BX MOV AL,DL CALL TURN2 INC BX MOV AL,0DH ;定位日期显示和时间显示

17、的位置 MOV BX,AL INC BX MOV AL,0AH MOV BX,AL INC BX MOV AL,0AH MOV BX,AL PUSH CX MOV CX,38 H1: INC BX MOV AL,20H MOV BX,AL LOOP H1 POP CX INC BX ;将压缩的BCD码转换为ASCII码 MOV AL,YEAR2 CALL TURN2 INC BX MOV AL,YEAR1 CALL TURN2 INC BX MOV AL,- MOV BX,AL INC BX MOV AL,MONTH CALL TURN2 INC BX MOV AL,- MOV BX,AL I

18、NC BX MOV AL,DAY CALL TURN2 INC BX MOV AL,20H MOV BX,AL INC BX MOV AL,0AH MOV BX,AL MOV AL,$ MOV BX,AL PUSH BX PUSH CX PUSH DX CALL CLEAN ;调用清屏子程序 CALL LOCATE ;调用光标设置子程序,设置时钟显示 MOV DX,OFFSET BUFFER ;显示缓冲区的字符串时间和日期 MOV AH,9 INT 21H POP DX POP CX POP BX PUSH AX PUSH BX PUSH DX MOV AH,02 ;设置日期提示符显示位置并显

19、示 MOV BH,0 MOV DH,15 MOV DL,30 INT 10H MOV DX,OFFSET DATE MOV AH,09 INT 21H MOV AH,02 ;设置操作提示SA1显示位置并显示 MOV BH,0 MOV DX,0000 INT 10H MOV DX,OFFSET SA1 MOV AH,09 INT 21H MOV AH,02 ;设置操作提示SA2显示位置并显示 MOV BH,0 MOV DX,0080 INT 10H LEA DX,SA2 MOV AH,09 INT 21H MOV AH,02 ;设置操作提示SA3显示位置并显示 MOV BH,0 MOV DX,0

20、160 INT 10H LEA DX,SA3 MOV AH,09 INT 21H POP DX POP BX POP AX JMP X1 RET START ENDP TURN3 PROC ;BCD码转为压缩BCD码程序 ADD AL,AL DAA MOV CL,AL ADD AL,AL DAA ADD AL,AL DAA ADD AL,CL DAA MOV CL,AL INC BX MOV AL,BX ADD AL,CL RETMUL10 ENDPTRAN1 PROC ;ASCII码转BCD码子程序 MOV AL,BX AND AL,0FH MOV BX,AL INC BX MOV AL,B

21、X AND AL,0FH MOV BX,AL RETTRAN1 ENDP TRAN2 PROC ;压缩BCD码转ASCII子程序 MOV CL,AL SHR AL,1 SHR AL,1 SHR AL,1 SHR AL,1 OR AL,30H MOV BX,AL INC BX MOV AL,CL AND AL,0FH OR AL,30H MOV BX,AL RETTRAN2 ENDP TIME PROC ;延时子程序 PUSH CX PUSH BX PUSH AX MOV CX,5FFFH ;设置外循环次数 MOV BX,2FFFH ;设置循环次数GOON: DEC CX ;外循环 JNZ GO

22、ON1 POP AX POP BX POP CX RET GOON1: DEC BX ;循环 JNZ GOON1 JMP GOON TIME ENDP LOCATE PROC ;设置光标子程序 MOV AH,02 SUB BH,BH MOV DX,0D24H INT 10H RETLOCATE ENDPCLEAN PROC ;清屏子程序 MOV AX,0600H MOV BH,3 MOV CX,0 MOV DX,184FH INT 10H RETCLEAN ENDP COD ENDS END START六、 效果图程序运行后界面:显示提示语,等待输入起始时间时钟界面:显示提示操作、时间、日期,

23、当前显示时间12:36:02,日期20101225七、 调试过程该程序是使用 masm for windosw 集成实验环境软件书写和调试的。可在文本下写源程序,保存后将文件名改为.asm,就可以在调试软件中翻开,也可以直接在软件界面下生成ASM文件:按新建按钮,新建一个ASM文件,或者点击翻开按钮,翻开已有的ASM文件进展编辑。点击运行按钮,在下拉框可以看到编译成目标文件生成可执行文件运行,可分别执行相应功能。如果编译有错误,会显示错误的处数和位置以及可能的出错原因。如果编译通过,将生成EXE文件,运行EXE文件即可对程序实现的效果进展检测。在工具下拉框点击选项,选择字符大小,可以影响DOS

24、窗口大小。另外还可以选择用debug进展调试排错,可以观察各存放器的容,还可实现单步执行。八、硬件连接图九、心得体会:这次耗时两天的课程设计让我们对汇编语言有了更深入的认识,在程序编写的过程中我们参阅了许多参考资料,对所学的容有了进一步的掌握。汇编语言是面向机器的低级语言,这使得它可以编写高效且需要对机器硬件准确控制的程序。然而汇编语言可移植性差、可读性差的缺点使我们在编写过程中遇到了一定困难。而且在调试过程中,程序出现了许多BUG,导致调试花费了许多时间。不过这也使我们对汇编软件的使用方法有了更深入的体会。我们的硬件连接图是直接使用windows自带的画图功能结合word的绘图功能绘制的,绘

25、制方法比拟麻烦,因此我们省略了许多用不到的引脚,只画出了所用的局部,然而依然消耗了许多时间,这也使我们意识到掌握一种绘图软件的必要性。第一次编制有多个功能的程序,我们遇到了不少困难。首先我们方案实现计时的根本功能,选择用软件延时实现计时,这样可以较方便的实现初始时间设置和校时。但存在的缺乏时计时有一定误差。编程时各种进制关系用到许多循环和嵌套,虽然比照着流程图还是费了很多时间。另外两个附加功能是校时和半、整点报时。我们在计时的根底上增加了条件分支和控制字符的输入。整体上,我们采用模块化编程的方法,独立出多个子程序,大大简化了程序的编写。此外,我们采用了宏定义的方式简化语句,编写了一个背景。但由于时间和技术的限制,只编出了较简单的图案。 此次课程设计让我学到了许多实践方面的容,相信此后我可以使用汇编语言编写一些程序。我们的设计还存在许多缺乏,一方面是因为我们所学不精,另一方面那么是汇编语言自身的局限性。因此也使我们意识到汇编语言与其他语言的结合使用的必要性。但由于时间的原因,这些容的实践就只好留待以后了。十、参考资料:汇编语言 王爽 清华大学汇编语言程序设计 齐志儒 高福祥 东北大学汇编语言程序设计 美明 温冬婵 清华大学. z.

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!