




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
汇编语言程序设计汇编语言程序设计 课程设计课程设计 题目 求 1 N 之间的所有素数 质数 专业 计算机科学与技术 学号 2010810070 姓名 陈高伟 2011 2012 学年第二学期 一 一 设计目的设计目的 汇编语言课程设计是对所学课程内容全面 系统的总结 巩固和提高的一项课程实践 活动 根据汇编语言的特点 选择相应的题目 在老师的指导下 由学生独立完成 课程 设计要求同学们熟悉汇编语言的编程 BIOS 中断调用 系统功能调用 磁盘数据的查询 存取等相关知识 通过课程设计 一方面提高运用汇编语言编程解决实际问题的能力 另 一方面使同学们更深入的了解计算机系统内部的有关知识 为以后的学习和系统开发奠定 良好的基础 二 设计内容二 设计内容 从键盘输入一个十进制数 N 最大为 65535 把小于等于该数的所有素数显示在屏幕 上 三 程序设计原理三 程序设计原理 1 本课程设计总体包含了结构化程序设计方法的三种逻辑结构 顺序结 构 循环结构和选择结构 另外也用到了模块化设计 主程序去调用 PRINT 显示子程序 进而实现整体素数结果的显示 2 在程序开始前 先在数据段定义数组 bcd 在子程序 PRINT 中将借助 bcd 来逐个显示素数 接着定义一个字单元 SHU 用来存用户输入的数以 及定义一些程序运行时必要的提示信息和变量以及定义一些必要的宏 3 数据段定义完毕后 就进入代码段的书写 先初始化一系列程序运行 需要的变量 数组等 接着打印菜单 提示输入选择菜单 这里用到选 择结构 4 提示用户输入数据 2 65535 将用户输入的数据 N 转化为对应十 进制数的二进制存在字单元 SHU 中 这里就用到了循环结构 5 用筛选法求 用户所输入的数 N 的所有素数 并借组 PRINT 显示子 函数来显示所有素数 这里也用到循环结构 6 考虑到用户若输入的数 N 很大 则产生的所有素数超出屏幕一次所能 查看的个数 所以用 count 计数变量来控制每输出 8 个素数换一行 用 count1 计数变量通过判断和循环实现分页显示的功能 7 每做一次素数显示就会自动跳转到菜单让用户重新选择是否要再一次 执行程序 若用户选择退出 那么程序结束 若用户选择继续那么跳到 第 4 步继续执行 四 程序流程图四 程序流程图 N Y Y N Y N 开始 初始化变量 Count 0 Count1 0 Bx 0 Cx 5 BCD BX 20H BX BX 1 CX 0 打印菜单 提示菜单 选项 MOV AH 1 INT 21H 提示用户输入数据 N BX 0 AL 0 MOV AH 1 INT 21H AL AL 30H AL 是不是回车 PUSH AX AX BX DX AX AX 10 BX AX POP AX AH 0 BX BX AX Y N Y N Y N N Y SHU BX BXSHU Count 0 结束 下面是子程序 PRINT 的流程图 N Y PRINT 开始 PUSH DX PUSH AX PUSH BX AX 0 设 SI 指向数组 BCD 第一个位置 BX 10 DX 清零 DX DX AX BX 的余数 SI SI 1 SI DL 令 SI 指向数组 BCD 第 5 个位置 将存在 AX 里的素数输出 POP BX POP AX POP DX RET 结束 五 源程序五 源程序 DATAS SEGMENT SHU DW 用于存用户输入的数 N DW 10 BCD DB 5 DUP menu db 13 10 db 1 Looking for prime number 13 10 db 0 Exit 13 10 db 13 10 input db Please chooce put numb db Please input number 2 65535 find db All the primes are found 13 10 count db 0 count1 db 0 goon db Continue to check 13 10 DATAS ENDS put macro x 输出提示信息 lea dx x mov ah 9 int 21h endm huanhang macro 回车换行 cout 13 cout 10 endm cout macro w push dx push ax mov dl w mov ah 2 int 21h pop ax pop dx endm CODES SEGMENT ASSUME CS CODES DS DATAS START MOV AX DATAS MOV DS AX go menu mov count 0 count用于统计输出个数 在这里输出8个换一行 mov count1 0 mov bx 0 mov cx 5 re set 初始化用于显示 mov bcd bx 20h 输出素数的数组bcd inc bx loop re set huanhang put menu 打印菜单 choice huanhang put input MOV AH 1 INT 21H cmp al 0 jz finish cmp al 1 jnz choice huanhang re put put put numb MOV BX 0 NEW CHAR MOV AH 1 INT 21H SUB AL 30H JL EXIT PUSH AX MOV AX BX 用户输入数据 2 65535 MUL N mov bx ax POP AX MOV AH 0 ADD BX AX JMP NEW CHAR EXIT MOV SHU BX cmp bx 2 jb re put 若用户输入错误 则自动跳转让用户重新输入 huanhang put find 提示将要显示结果 MOV AX 2 CALL PRINT inc count inc count1 cout 20h cmp bx 2 jz go menu MOV AX 3 L1 MOV BX 2 L2 PUSH AX xor dx dx DIV BX POP AX CMP DX 0 JZ no prime 用筛选法求 用户所 INC BX 输入的数的所有素数 CMP BX AX JNZ L2 CALL PRINT inc count inc count1 cout 20h 打印一个加一个空格 cmp count1 120 jz continue cmp count 8 打印8个换一行 jz line feed jmp no prime continue huanhang mov count 0 mov count1 0 push ax put goon mov ah 1 int 21h pop ax no prime INC AX CMP AX SHU JNA L1 jmp go menu line feed huanhang mov count 0 jmp no prime finish MOV AH 4CH INT 21H PRINT PROC push dx PUSH AX PUSH BX LEA SI BCD MOV BX 10 L3 XOR DX DX DIV BX MOV SI DL INC SI OR AX AX JNZ L3 LEA SI BCD 4 借助BCD数组将素数输出 MOV CX 5 L4 MOV DL SI CMP DL JZ L5 ADD DL 30H L5 MOV AH 2 INT 21H DEC SI LOOP L4 POP BX POP AX pop dx RET PRINT ENDP CODES ENDS END START 六 调试过程六 调试过程 1 1 用户菜单选项选择不对则提示用户重新输入 直到用户输入正确 0 或 1 为止 2 2 让用户输入一个 2 到 65535 之间的数 并打印小于等于该数的所有素数 3 3 当输入的数产生的所有素数个数超出屏幕显示范围时 采用分页显示功能 七 遇到的问题及解决方法七 遇到的问题及解决方法 1 遇到的问题 在打印显示素数时 显示一个素数后面就跟着打印一个空格 但是由于定 义的显示空格的宏被调用后改变了 AX 和 DX 的值使得后面显示时出现了严 重错误 解决方法 在定义显示空格的宏时把 AX 和 DX 中的内容压入栈保护起来 显示完后 再将其出栈 这样就解决了上面的问题 2 遇到的问题 在做二进制转换成十进制的除十取余运算时 用 DIV 之前没有把 DX 清零 导致除法出错 程序无法正常运行 解决方法 在用 DIV 之前把 DX 清零 3 遇到的问题 在用户输入的数很大导致产生的素数个数超过屏幕一次所能显示的范围时 无法查看所有的素数 解决方法
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025关于融资租赁委托合同
- 2025财产抵押担保借款合同范本
- 2025客运合同范本参考
- 2025装饰工程合同附加协议
- 视频监控产品合同范本
- 2025租赁合同担保的规定范文
- 旧料加工改造合同范本
- 软件股权转让合同范本
- 保安超龄返聘合同范本
- 解除挂靠经营合同范本
- 2024年重庆永川区招聘社区工作者后备人选笔试真题
- 医学技术专业讲解
- 2025年临床助理医师考试试题及答案
- 唯奋斗最青春+课件-2026届跨入高三第一课主题班会
- 2025民办中学教师劳务合同模板
- 2025年南康面试题目及答案
- 2025年事业单位考试贵州省毕节地区纳雍县《公共基础知识》考前冲刺试题含解析
- 高中喀斯特地貌说课课件
- 黄冈初一上数学试卷
- 2025年中国花盆人参行业市场发展前景及发展趋势与投资战略研究报告
- 广东省安装工程综合定额(2018)Excel版
评论
0/150
提交评论