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