没有合适的资源?快使用搜索试试~ 我知道了~
首页计算机汇编语言课程设计(详细)
资源详情
资源评论
资源推荐
目录
一 设计内容………………………………………………..3
1.1 判断闰年…………………………………………………..3
1.1.1 设计思路………………………………………………………3
1.1.2 流程图…………………………………………………………4
1.1.3 运行结果………………………………………………………5
1.1.4 程序小结………………………………………………………5
1.2 字符串处理………………………………………………..6
1.2.1 设计思路………………………………………………………6
1.2.2 流程图…………………………………………………………7
1.2.3 运行结果………………………………………………………7
1.2.4 程序小结………………………………………………………7
1.3 数据加密…………………………………………………...8
1.3.1 设计思路………………………………………………………8
1.3.2 流程图…………………………………………………………8
1.3.3 运行结果………………………………………………………8
1.3.4 程序小结………………………………………………………9
1.4 四则运算……………………………………………………9
1.4.1 设计思路………………………………………………………9
1.4.2 流程图…………………………………………………………10
1.4.3 运行结果………………………………………………………11
1.4.4 程序小结………………………………………………………12
二 课程设计总结…………………………………………13
三 程序源码………………………………………………13
3.1 判断闰年…………………………………………………..13
3.2 字符串处理………………………………………………..17
3.3 数据加密…………………………………………………...21
3.4 四则运算……………………………………………………22
中南大学汇编语言课程设计
一 设计内容
具体要求:本学期的课程设计要求综合运用所学的知识,上机解决一些适
合于汇编语言处理的相关问题,通过分析、设计、编码、调试等各环节的训练,
深刻理解、牢固掌握汇编语言程序设计技术,掌握分析、解决实际问题的能力。
对所给出的问题进行具体的分析,对要完成的任务作出明确的回答。强调的是
做什么,而不是怎么做。{对需要解决的问题进行仔细的分析,给出相应的算法
并画出流程图。在此基础上完成代码的书写。
此次的要解决的问题有如下的四个:判断闰年,字符串处理,数据加密和四则
运算。
*******************************************************************************
*******************************************************************************
1.1 判断闰年
题目描述:根据输入的具体年份(在,要求对输入进行有效性检查),判
断是否闰年,并给出相应的提示信息.
1.1.1 设计思路
此题目要求是对闰年的判断,首先要知道闰年的含义:能被 4 整除但不能被
100 整除,或是被只被 400 整除。对年份的输入要做进一步的范围限制:因为
输入的年份只能是四位的,所以第一步的判断是输入的位数必须是四位的,输
入不等于四位的时候,程序提示输入数据错误,输入的位数保存在 buf 的缓冲
区的第二个字节中;第二步判断输入的数据是不是都是数字,把缓冲区中的数
据和字符’0’’ 9’比较,在’0’和’ 9’范围之外时,程序提示输入数据错误;输入的
全部都是数字后,要把这些数字字符全部转换为十进制的数字,转换后的数还
要判断它的范围,必须在 1900-2100 之间,之外的程序要提示输入的数据出现
错误;最后一步就是进行最重要的操作:判断闰年。
1.1.2 流程图
此程序设计的时候用到了很多的循环和分支,还有子程序。
主流程图:
数据段定义数据缓冲区 buf:
Buf db 8:用于接受输入,缓冲区长度
db ? ;实际输入长度,
db 8 dup (?);存放实际输入的数据。
字符位数的判断:
第 2 页 共 31 页
中南大学汇编语言课程设计
mov cl,[buf+1];cl 取得实际输入字符数
cmp cl,4;cl 和 4 进行比较
jne input_error; 如果实际输入字符数不等于 4,则提示输入错误
input_error:输出字符串“Input Error!”
is_num:判断输入的是否都是数字,如果不是,则提示输入错误
cmp byte ptr [si],'0' ;数据和字符 0 比较
jb input_error ;ASCⅡ 值小于{30H,跳转到提示错误信息分支
cmp byte ptr [si],'9' ;数据和字符 9 比较
ja input_error ;ASCⅡ 值大于{39H,跳转到提示错误信息分支
try_again:是否再进行一次输入操作
子程序 str2int:将一个数字字符串转换成对应的数字
子程序 isleap:判断输入的数字是否为闰年
子函数流程图:
子函数中 ax 作为输入的参数,保存运算时年份;di 指向被判断数字的存储地
址;bx 保存除数;cx 保存年份;dx 和 ah 保存除法的余数。
第 3 页 共 31 页
开{{{始
输入数据到 buf
[buf+1]≠4
[buf+1]=4
跳转到 input_error is_num 判断输入字符是否全是数
字
调用 str2int
调用 isleap
try_again 继续?
结{{{束
Y
YN
Y
Y
Y
N
N
N
中南大学汇编语言课程设计
1.1.3 运行结果
对输入的数字进行处理,范围在 1900-2100。输入数字越界是出现“Input
Error!”的提示;当输入的是非数字的时候,提示“Input Error!”;输入的数字是
界内润年(能被 4 整除但不能被 100 整除,或是被 400 整除)时,提示“This is
a leap year!”;输入的数字是界内非闰年,提示“This is not a leap year!”;每次的
输入运行后,都会其实要不要再次进行输入“Do you want to rry again?(Y/N)”
第 4 页 共 31 页
子函数 isleap
跳转到 input_error
Ax 在 1900-2100?
ax/4 余数 dx=0?
非闰年
ax 复值,ax/100,余数 ah
=
0?
闰年 非闰年
ax 复 值 ,
ax/
400,dx=0?
闰年 非闰年
isleap proc near
mov cx,ds:[di]
mov ax,cx
cmp ax,1900
jl input_error
cmp ax,2100
ja input_error
mov dx,0
mov bx,4
div bx
cmp dx,0
jnz not_leap
mov ax,cx
mov bx,100
div bl
cmp ah,0
jnz is_leap
mov ax,cx
mov dx,0
mov bx,400
div bx
cmp dx,0
isleap endp
中南大学汇编语言课程设计
1.1.3 程序小结
程序的判断闰年过程中要判断它的范围,而从键盘输入的数据都是以字符
的形式输入的,一次比较之前必须进行字符到数字的转化,0-9 的 ASCⅡ 是
30H-39H,所以用输入字符的 ASCⅡ 值减去 30H 就可以得到相应的数字,数
字整体的转化还需要进一步的进行:从个位起,个位乘以 1,十位乘以 10,百
位乘以 100,千位乘以 1000,这样就可以和要判断的闰年比较了。起初想不通,
运行起来就明白了,所以还是要多实践。
*******************************************************************************
*******************************************************************************
1.2 字符串处理
题目描述:从键盘输入不超过 20 个字符的字符串,以回车为结束,将其中
非数字和非字母的去掉并完成以下输出:
(1)显示去掉的字符的个数
(2)显示输入字符的总数、数字的个数和字母的个数
(3)将新的字符串显示出来
1.2.1 设计思路
输入的字符放在缓冲区中,限定最大的输入位数是 20。以 si 为变址寄存器
si 首先指向字符存放的缓冲区,对这个字符进行判断,如果它的 ASCⅡ 值是在
30H-39H,那么这个字符就是一个整数,整数计数器要加 1,同时把这个整数
复制到另一块存储区中;如果它的 ASCⅡ 值是在 41H-5aH 和 61H-7aH,那么
这个字符是一个字母,字母计数器要加 1,同时把这个字母复制到另一块存储
区中;如果字符的 ASCⅡ 值是以上不同的,则这个字符就是要删除的,非数字
和字母的计数器同时也要加 1,此时完成了计数的功能。因为计数器计数的时
候并不是十进制的,所以在显示数字之前要将它进行十进制的转化。新字符串
的显示只要读出另一块存储区保存的字符串就可以了。
第 5 页 共 31 页
剩余30页未读,继续阅读
lvshao2006
- 粉丝: 1
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
- MW全能培训汽轮机调节保安系统PPT教学课件.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0