课程设计任务书学生姓名:庞瀚文专业班级:电气1203 指导教师:李道远工作单位:自动化学院题目:随机数小程序初始条件:利用随机数产生两个8位16进制数,显示它们加法或减法表达式及其运算结果。
如果有进位,显示“Carry”的提示信息,如果被减数小于减数,显示“Borrow”的提示信息。
按Q退出程序。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)设计任务及要求分析(2)方案比较及认证说明(3)系统原理阐述(4)硬件设计课题需要说明:硬件原理,电路图,采用器件的功能说明(5)软件设计课题需要说明:软件思想,流程图,源程序及程序注释(6)调试记录及结果分析(7)总结(8)参考资料(9)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图目录1 设计任务 (2)2任务分析 (2)2.1 程序功能说明 (2)2.2 程序要点说明 (2)3功能及程序设计 (3)3.1主程序流程图 (3)3.2程序说明 (4)3.3 子程序功能说明 (4)3.3.1 RAND子程序说明 (4)3.3.2 CHG子程序说明 (4)3.3.3 程序退出判断语句说明........ 错误!未定义书签。
4调试结果及分析 .. (6)5心得体会 (7)6参考文献 (8)附录 (9)1随机数小程序1.设计任务利用随机数产生两个8位16进制数,显示它们加法或减法表达式及其运算结果。
如果有进位,显示“Carry”的提示信息,如果被减数小于减数,显示“Borrow”的提示信息。
按Q退出程序。
2.任务分析2.1 程序功能说明本程序需在DOS下运行。
程序开始运行,程序完成初始化,输出提示信息。
程序产生随机数1,随机数1转化为16进制ASC码并显示。
程序产生随机数2,随机数2转化为16进制ASC码并显示。
此时选择运算方式,输入“+”执行加法运算,输入“-”则执行减法运算。
随机数1和随机数2完成已选择的运算方式,显示运算结果。
在“+”法模式下,若运算结果产生进位,则显示提示信息“Carry”在选择“-”法模式下,若被减数小于减数,则显示提示信息“Borrow”。
按“Q”退出程序,按其他任何键继续提示知道检测到“Q”按键。
2.2 程序要点说明1.随机数的产生,并显示2.将其转化为16进制数,并完成运算。
3.功能及程序设计3.1主程序流程图本程序流程图如图3-1所示。
23输入‘-’输入‘+’无借位 无进位 有借位 有进位输入其他输入“Q ”图3-1程序流程图开始产生随机数1 产生随机数2 等待输入随机数1加随机数2 有无进位 显示“carry ”信息是否按“Q ” 结束随机数1减随机数2有无借位 显示结果 显示结果 显示“borrow ”信息3.2程序说明(1)调用随机数产生子程序产生8位数16进制数。
(2)初始化屏幕,选择加法或者减法(3)等待从键盘输入的按键并判断.如果是“+”则跳转到加法运算程序段,首先显示出两个随机数及运算符号,随后进行计算,显示运算结果及进位信息,有进位显示“CARRY”,无进位进行退出程序判断。
如果是“-”则跳转到减法运算程序段,首先显示两个随机数及运算符号,随后进行计算,显示运算结果及借位信息,有借位显示“BORROW”,并调转到求补码子程序,无借位进行退出程序判断。
(5)等待从键盘输入的按键并判断。
是“Q”则退出程序,否则继续提示。
3.3 子程序功能说明3.3.1 RAND子程序说明RAND子程序如下:RAND PROCSTIMOV AH,0INT 1AHRETRAND ENDP该程序应用时钟计数产生4位16进制随机数,所以每个随机数要调用两次该程序,调用后输出的随机数在寄存器DX中。
3.3.2 CHG子程序说明CHG PROC4PUSHFMOV CX,4AA2:mov dl,byte ptr[si]and dl,0f0h ;高4位shr dl,1shr dl,1shr dl,1shr dl,1call print_1mov dl,byte ptr[si]and dl,0fh ;低4位call print_1dec siloop AA2POPF ;逐个字符输出RETCHG ENDP该程序将输入的字符转换成ASC码,调用INT21H 9号功能在屏幕上输出3.3.2退出程序判断语句EXIT:LEA DX,QUE1MOV AH,9INT 21HMOV AH,1INT 21HCMP AL,'Q'5JZ A3 ;判断,是‘Q’则退出程序,其他字符继续提示MOV DX,OFFSET C4MOV AH,9INT 21HJMP EXITA3: MOV AX,4C00HINT 21H4.调试结果及分析图4-1加法运算图4-2减法运算67图4-3程序退出判断最终调试结果可以完全满足题目要求。
5.心得体会通过本次微机原理课程设计,使我深深的感受到了汇编语言的乐趣。
汇编虽然是低级语言,但是正是因为低级,这也恰恰是它的优点,更接触底层硬件。
通过汇编,可以更好的了解计算机系统的工作原理,而且把平时学到的理论知识和实践相结合,促进了课程的学习。
在编程的过程中,通过自己思考和查找资料使自己受益匪浅。
汇编的过程中也遇到了一些问题,由于自己的粗心,某些符号的书写错误,也大大的降低了自己的工作效率。
这次的课程设计使我对汇编语言编程的方法和技巧有了一定的掌握,加深了自己对8086CPU 的寄存器,存储器的理解;基本掌握了8086的指令系统;汇编语言程序设计的基本方法,包括顺序结构程序设计,分支结构程序设计,循环结构程序设计;并涉及到了一部分宏汇编语言的技术;同时对BIOS 的中断调用有了更深层次的理解。
虽然本次课程设计整体有一些难度,但是,这段时间的学习和问题的解决,对自己专业知识的掌握有着非常重要的促进作用。
通过这次课程设计,我最大的收获就是自己的动手能力和独立解决问题的能力得到了很大的提高,也充分体会到了自己设计东西的乐趣、学会查阅资料和对别人的东西融会变通的重要性,也明白了很多知识光靠趴在书本上学是学不到其中的精髓的,必须亲自去试着实践,亲自去经历才能对它们真正的掌握。
最大的收获是更清晰了如何有条理的编程。
第一个就是流程图,原来不以为然的事现在觉得非常的有必要。
第二就是编程顺序,要写一个功能很复杂的程序首先写那些自己可以很快完成的较简单的内容,比如先编写产生随机数的程序,这样既可以使编程变得更有条理,而且对心态也是很有帮助的。
一步一步的完成相应的要求会使自己的心情倍感舒爽而不是一直未能达到要求时的迷茫。
凡事都要自己去动下手,去实践一下,遇到困难,永远不要沮丧气馁。
在动手的过程中,不仅能增强实践能力,而且在理论上可以有更深的认识;这次设计给了我极大的鼓舞和信心,相信在以后的学习中可以通过不断的摸索和实践来提高其他方面的知识。
6参考文献[1] 彭虎、周佩玲《微机原理与接口技术》.第3版.电子工业出版社,2011.8附录:源程序:DA TA SEGMENTQUE DB '+ OR -',0DH,0AH,'$'QUE1 DB 'ENTER Q TO EXIT',0DH,0AH,'$'C1 DB '+'C2 DB '-'C3 DB '='C4 DB 0DH,0AH,'$'D1 DD ?D2 DD ?R DD ?CARRY DB 0DH,0AH,'CARRY',0DH,0AH,'$'BORROW DB 0DH,0AH,'BORROW',0DH,0AH,'$' DA TA ENDSSST SEGMENT PARA STACK 'STACK'TOP DW 50 DUP(?)SST ENDSCODE SEGMENTASSUME CS:CODE ,DS:DA TA,SS:SST START:MOV AX,DATAMOV DS,AXCALL RANDMOV D1,DX9CALL RANDMOV D1+2,DXCALL RANDMOV D2,DXCALL RANDMOV D2+2,DXMOV DX,OFFSET QUEMOV AH,9INT 21HMOV AH,1INT 21HCMP AL,'+'PUSH AXLEA DX,C4MOV AH,9INT 21HPOP AXJZ A1CMP AL,'-'JZ A2JMP EXITA1: LEA SI,D1+3CALL CHGMOV DL,C1MOV AH,210LEA SI,D2+3CALL CHGMOV DL,C3MOV AH,2INT 21HMOV AX,D1MOV DX,D2ADD AX,DXMOV R,AXMOV AX,D1+2MOV DX,D2+2ADC AX,DXMOV R+2,AXLEA SI,R+3CALL CHGJC CAJMP EXITCA: LEA DX,CARRYMOV AH,9INT 21HJMP EXITA2: LEA SI,D1+3CALL CHGMOV DL,C211INT 21HLEA SI,D2+3CALL CHGMOV DL,C3MOV AH,2INT 21HMOV AX,D1MOV DX,D2SUB AX,DXMOV R,AXMOV AX,D1+2MOV DX,D2+2SBB AX,DXMOV R+2,AXJC BOLEA SI,R+3CALL CHGJMP EXITBO: MOV DL,C2MOV AH,2INT 21HMOV AX,RNEG AXMOV R,AX12MOV AX,R+2NEG AXMOV R+2,AXLEA SI,R+3CALL CHGLEA DX,BORROWMOV AH,9INT 21HEXIT:LEA DX,QUE1MOV AH,9INT 21HMOV AH,1INT 21HCMP AL,'Q'JZ A3MOV DX,OFFSET C4MOV AH,9INT 21HJMP EXITA3: MOV AX,4C00HINT 21Hprint_1 proc ;dl中的0~9 a ~f输出为ascii cmp dl,9jbe x1 ;0到9add dl,57h ;为a到f13jmp Y2x1: add dl,30hY2: mov ah,2int 21hretprint_1 endpCHG PROCPUSHFMOV CX,4AA2:mov dl,byte ptr[si]and dl,0f0h ;高4位shr dl,1shr dl,1shr dl,1shr dl,1call print_1mov dl,byte ptr[si]and dl,0fh ;低4位call print_1dec siloop AA2POPF ;挨个字符输出RETCHG ENDPRAND PROC14武汉理工大学《微机原理与接口技术》课程设计说明书STIMOV AH,0INT 1AHRETRAND ENDPCODE ENDSEND START15武汉理工大学《微机原理与接口技术》课程设计说明书本科生课程设计成绩评定表姓名庞瀚文性别男专业、班级电气1203课程设计题目:随机数小程序课程设计答辩或质疑记录:1.如何产生随机数?答:应用时钟信号,调用INT1AH 的0号功能,读取时钟滴答计数。