1、学习中心: 专 业: 计算机应用技术 年 级: 年 春/秋 季 学 号: 学 生: 题 目: 十进制转换十六进制程序设计 1.谈谈你对本课程学习过程中的心得体会与建议? 时间过得真快,一学期的学习马上就要结束了,经过一个学期的学习,我也慢慢摸出了汇编学习的规律,特别感谢指导老师的耐心教导。 首先,学习这门语言时如果能联系上以前学过的其他高级语言的知识,则会起到良好的效果。例如C语言程序的运行逻辑结构有顺序(按语句依次执行)、分支结构(IF.THEN.ELSE.),循环结构(FOR.NEXT)三种结构,也通过C语言了解并掌握了什么是子程序,什么是调用。事实上,汇编语言中有关程序结构,子程序等等的
2、知识都是跟C语言十分相似的,只是在编程时用到的语言不同:汇编语言完全面向机器,需要指明数据在寄存器、内存中的流向。 第二,学习汇编语言,首要问题是学习80X86指令系统。如果能将指令系统中的各个助记符、格式等都能完全掌握并灵活运用,大部分工作就已经完成了。指令系统确定了CPU所能完成的功能,是用汇编语言进行程序设计的最基本部分。如果不熟悉汇编指令的功能及其有关规定,那肯定不能灵活使用汇编语言。 还有一点十分重要。和所有的程序设计语言一样,要学好汇编语言,实验是必不可少的环节。我们深有体会:书上的程序都能看懂,基本原理也都明白,但是在自己亲手编写程序时,却无从下手,甚至连第一句该怎么写都不知道。
3、通过实验,可以在很大程度上加深印象。在书上看程序,一切都是理所当然,十分顺利,而自己动手,才会真正发现自己的不足之处。程序的编写在记事本中进行即可,掌握debug的使用对实验是有很大帮助的。 现在汇编语言的学课程已经告一段落了,学习过程中遇到的所有困难以及遗留的难点都需要我们在其余时间里逐步攻克,在打好基础的前提下,学习更加专业的汇编知识。以上便是我在学习汇编语言过程中所有的心得体会,我们会在不断的学习与实践中向着更深入的层面迈进。 2. 汇编语言程序设计课程设计, 从以下5个题目中任选其一作答。汇编语言程序设计课程设计注意:从以下5个题目中任选其一作答。总 则:只能使用汇编语言进行编制,不能
4、选用C/C+等高级语言作业提交:大作业上交时文件名写法为:姓名 奥鹏卡号 学习中心(如:戴卫东101410013979浙江台州奥鹏学习中心1VIP)以附件word文档形式上交离线作业(附件的大小限制在10M以内),选择已完成的作业(注意命名),点提交即可。如下图所示。注意事项:独立完成作业,不准抄袭其他人或者请人代做,如有雷同作业,成绩以零分计!题目一:进制转换程序要 求:(1)撰写一份word文档,里面包括(算法思路、算法程序框图、主要函数代码、使用指令具体含义)章节。(2)算法思路:比如可设计十进制转化十六进制的算法,简单介绍该算法的基本思想,100字左右即可。(3)算法程序框图:绘制流程
5、图或原理图,从算法的开始到结束的程序框图。(4)主要函数代码:列出算法的具体代码。(5)列出算法中使用指令的含义,比如解释MOV指令的含义,ADD指令的含义,至少撰写十个指令。总 则:只能使用汇编语言进行编制,不能选用C/C+等高级语言!答:算法思路采用一个子程序DECIBIN实现从键盘取得十进制数并把它转换为二进制数;另一个子程序BINIHEX把此二进制数以十六进制数的形式在屏幕上显示出来。为避免屏幕上的重叠,另外用CRLF子程序取得回车和换行效果。各个子程序之间用BX寄存器来传送信息。在过程DECIBIN中取得的输入数据转换为二进制数后保存在BX寄存器中,而过程BINIHEX需要把BX寄存
6、器中的数用十六进制形式显示出来。二、 算法程序框图三、 主要函数代码程序(指令含义在代码后面):DECIHEX SEGMENT ; 定义代码段ASSUME CS:DECIHEXMAIN PROC FAR ; 主程序REPEAT: CALL DECIBIN ; 调用子程序输入十进制数CALL CRLF ; 显示回车、换行CALL BINIHEX ; 以十六进制数输出CALL CRLF ; 显示回车、换行JMP REPEAT ; 转REPEA T,继续MAIN ENDPDECIBIN PROC NEAR ; 十进制数输入子程序MOV BX, 0 ; BX保存输入数NEWCHAR: MOV AH,
7、1INT 21H ; 调用DOS功能输入字符SUB AL, 30H ; 转为数0-9JB EXIT ; 小于0,不是数字CMP AL, 9D ; 与9比较JA EXIT ; 大于,不是数字CBW ; AL=AXXCHG AX, BX ; AX、BX互换MOV CX, 10D ; CX=10MUL CX ; AX=AX*CXADD BX, AX ; BX为前面输入的结果JMP NEWCHAREXIT: RETDECIBIN ENDPBINIHEX PROC NEARMOV CH, 4 ; CH循环次数ROTA TE: MOV CL, 4 ;每次循环输出一位十六进制数ROL BX, CL ; 即移
8、位4个二进制位MOV AL, BL ; AL=BLAND AL, 0FH ; 取低4位ADD AL, 30H ; 转变为ASCII码CMP AL, 3AH ; 是否为0-9JL PRINTIT ; 是转PRINTITADD AL, 7H ; 否转为A-FPRINTIT: MOV DL, AL ; DL=输出字符MOV AH, 2INT 21H ;调用DOS中断,显示字符DEC CHJNZ ROTA TE ; 没循环结束,继续RET ; 返回BINIHEX ENDPCRLF PROC NEAR ; 输出回车、换行MOV DL, 0DHMOV AH, 2INT 21H ; 输出回车MOV DL, 0AHMOV AH, 2INT 21H ; 输出换行RETCRLF ENDPDECIHEX ENDSEND MAIN