汇编课程设计报告
汇编实验10课程设计

汇编实验10课程设计一、课程目标知识目标:1. 学生能够理解汇编语言的基本概念,掌握汇编指令的使用方法。
2. 学生能够描述实验10涉及的寄存器、寻址方式和指令的功能。
3. 学生能够解释汇编程序中出现的符号、标签和伪指令的含义。
技能目标:1. 学生能够运用汇编语言编写简单的程序,实现基本的输入输出、运算和控制流程。
2. 学生能够使用调试工具对汇编程序进行调试,找出并修正程序中的错误。
3. 学生能够分析汇编程序的执行过程,理解计算机硬件与软件的交互原理。
情感态度价值观目标:1. 学生通过学习汇编实验,培养对计算机底层原理的兴趣和好奇心,激发进一步学习的动力。
2. 学生能够认识到编程语言的发展历程,了解汇编语言在计算机体系结构中的地位,增强对计算机科学的敬畏之心。
3. 学生在学习过程中,培养团队协作、问题解决和自主学习的能力,形成积极向上的学习态度。
课程性质:本课程为计算机科学与技术专业选修课,以实验和实践为主,结合理论知识,培养学生的实际操作能力。
学生特点:学生已具备一定的计算机硬件和软件基础知识,具有较强的逻辑思维能力和动手操作能力。
教学要求:教师应注重理论与实践相结合,关注学生的个体差异,鼓励学生积极参与实验,充分调动学生的主观能动性。
同时,将课程目标分解为具体的学习成果,以便在教学设计和评估中实现有效监控。
二、教学内容本课程教学内容主要包括以下几部分:1. 汇编语言基础知识回顾:引导学生复习寄存器、指令系统、寻址方式等相关知识,为实验10的学习打下基础。
2. 实验目的与要求:介绍实验10的目的,明确实验要求和预期成果,让学生了解实验的重要性和实践意义。
3. 实验内容:- 编写汇编程序,实现数据输入输出、运算和控制流程等功能;- 学习使用调试工具,对汇编程序进行调试和优化;- 分析汇编程序执行过程,理解计算机硬件与软件的交互原理。
4. 教材章节:参考教材第十章“汇编语言程序设计”相关内容,结合实验10的具体要求,组织教学内容。
51汇编电子琴课程设计

51汇编电子琴课程设计一、课程目标知识目标:1. 学生能理解51汇编语言的基本原理,掌握与电子琴相关的硬件控制方法。
2. 学生能掌握电子琴音阶、音调和音符的基础知识,并能运用51汇编语言实现音符的播放。
3. 学生了解电子琴的电路原理,能分析并描述51汇编在电子琴中的应用。
技能目标:1. 学生能运用51汇编语言编写程序,实现电子琴的基本功能,如播放音符、和弦等。
2. 学生能够通过编程解决实际问题,如调试程序、优化代码等。
3. 学生培养团队协作能力,通过小组合作完成一个具有实际功能的电子琴项目。
情感态度价值观目标:1. 学生培养对编程和电子制作的兴趣,激发创新精神。
2. 学生在课程学习中,培养耐心、细心和专注的品质,提高解决问题的能力。
3. 学生通过课程学习,认识到编程与实际生活的联系,增强学以致用的意识。
本课程针对高年级学生,结合学科特点和教学要求,将知识目标、技能目标和情感态度价值观目标进行分解,旨在使学生在掌握汇编语言基础知识的同时,提高实际动手能力和团队合作能力,培养对编程和电子制作的兴趣,为后续学习奠定基础。
二、教学内容本课程教学内容以《51单片机原理与应用》教材为基础,结合课程目标,组织以下内容:1. 51单片机基础知识:介绍51单片机的内部结构、工作原理及编程环境。
2. 汇编语言基础:讲解汇编指令、寄存器、伪指令等基本概念。
3. 电子琴硬件原理:分析电子琴的电路原理,介绍相关元件及其功能。
4. 音符与音阶编程:教授如何用51汇编语言实现音符、音阶的编程控制。
5. 电子琴程序设计:指导学生编写程序,实现电子琴的基本功能。
6. 项目实践:分组进行项目实践,完成一个具有实际功能的电子琴制作。
教学内容安排和进度如下:第一周:51单片机基础知识学习,了解汇编语言环境。
第二周:汇编语言基础,学习汇编指令和寄存器。
第三周:电子琴硬件原理,学习相关元件及其功能。
第四周:音符与音阶编程,编写相关程序。
第五周:电子琴程序设计,完善程序功能。
汇编语言课程设计动画设计

汇编语言课程设计动画设计一、课程目标知识目标:1. 让学生掌握汇编语言的基本概念和原理,理解汇编语言与计算机硬件的紧密联系。
2. 使学生了解动画设计的基本原理,掌握汇编语言在动画设计中的应用方法。
3. 帮助学生掌握汇编语言编程技巧,提高解决实际问题的能力。
技能目标:1. 培养学生运用汇编语言编写简单动画程序的能力。
2. 培养学生运用汇编语言进行程序调试和优化的能力。
3. 提高学生分析问题和解决问题的能力,培养创新思维和团队协作精神。
情感态度价值观目标:1. 培养学生对计算机编程和动画设计的兴趣,激发学习热情。
2. 培养学生勇于尝试、不断探索的精神,增强自信心。
3. 使学生认识到汇编语言在计算机科学中的地位和作用,提高社会责任感。
课程性质分析:本课程为信息技术课程,旨在让学生掌握汇编语言编程技能,培养其在动画设计领域的实际应用能力。
学生特点分析:学生为高中生,具备一定的计算机操作基础和编程知识,对新鲜事物充满好奇,但可能对汇编语言较为陌生。
教学要求:1. 理论与实践相结合,注重培养学生的实际操作能力。
2. 创设情境,激发学生的学习兴趣和主动性。
3. 注重分层教学,关注学生个体差异,提高全体学生的编程素养。
二、教学内容1. 汇编语言基础知识:介绍汇编语言的基本概念、语法和指令系统,重点讲解与动画设计相关的寄存器、内存操作等内容。
- 教材章节:第一章 汇编语言概述,第二章 指令系统与语法- 内容列举:数据类型、寄存器、指令格式、寻址方式等2. 动画设计原理:讲解动画设计的基本原理,如帧动画、逐行绘制等,分析汇编语言在动画设计中的应用。
- 教材章节:第三章 动画设计基础- 内容列举:动画原理、帧动画、逐行绘制、颜色表示等3. 汇编语言编程实践:通过实例教学,让学生掌握汇编语言编程技巧,学会编写简单动画程序。
- 教材章节:第四章 汇编语言编程实践- 内容列举:汇编语言编程环境、编写源程序、编译与链接、程序调试与优化等4. 动画设计实例分析:分析经典动画设计实例,让学生了解汇编语言在实际动画制作中的应用。
计算机组成原理与汇编实验报告.

计算机组成原理与汇编实验报告.计算机组成原理与汇编课程设计实验报告⽬录⼀、课程设计⽬标 (3)⼆、课程设计基本要求 (3)三、课程设计的内容 (3)四、课程设计的要求 (5)五、实验详细设计 (5)1.统计⽂件中各字母出现的频率 (5)2.⽤递归计算50以内Fibonacci 数, 以⼗进制数输出 (9)3.虚拟平台模拟机实验 (11)六、使⽤说明 (19)七、总结与⼼得体会 (19)⼋、参考⽂献 (20)九、附录 (20)1.字符统计.asm (20)2.斐波那契数(⼩于50).asm (29)⼀、课程设计⽬标通过课程设计使学⽣综合运⽤所学过的计算机原理与汇编知识,增强解决实际问题的能⼒,加深对所学知识的理解与掌握,提⾼软硬件开发⽔平,为今后打下基础。
课程设计的⽬的和要求:1、使学⽣巩固和加强《计算机原理与汇编语⾔》课程的基本理论知识。
2、使学⽣掌握汇编语⾔程序设计的⽅法及编程技巧,正确编写程序。
3、使学⽣养成良好的编程习惯并掌握调试程序的基本⽅法。
4、使学⽣养成规范书写报告⽂档的能⼒,撰写课程设计总结报告。
5、通过查阅⼿册和⽂献资料,培养学⽣独⽴分析问题和解决问题的能⼒。
⼆、课程设计的基本要求1、认真查阅资料,独⽴完成设计任务,每道题都必须上机通过。
2、编写预习报告,写好代码,上机调试。
3、独⽴思考,培养综合分析问题解决问题和调试程序的能⼒。
4、按时完成课程设计,写出课程设计报告。
三、课程设计的内容1、给定⼀个英⽂ASCII码⽂件,统计⽂件中英⽂字母的频率,以⼗进制形式输出。
2、⽤递归计算50以内Fibonacci 数, 以⼗进制数输出.3、虚拟平台的模型机实验,具体要求如下:1)选择实验设备,将所需要的组件从组件列表中拖到实验设计流程栏中2)搭建实验流程:根据原理图1和电路图(见附件),将已选择的组件进⾏连线。
3)输⼊机器指令:选择菜单中的“⼯具”,再选择“模型机调试”,在指令输⼊窗⼝中输⼊如下指令:00000000000100000000100100100000000010110011000000001011010000000000000000000001本实验设计机器指令程序如下:4)这⾥做的是个加法运算,第⼀个加数已经存⼊到内存的0000 1010单元中,第⼆个加数是需要⼿⼯输⼊的。
课程设计报告--汇编程序设计(进制转换)

课程设计报告--汇编程序设计(进制转换)汇编语言课程设计报告:代码与数制之间的转换内容提要:本课程设计的主要内容是代码与数制之间的转换~程序的主要功能如下:1. 将十六进制数转换成其对应的ASCII码2. 将ASCII码转换成其对应的十六进制数3. 实现二进制数与十六进制数之间相互转换4. 实现十进制数与二进制数之间相互转换5. 实现十六进制数与十进制数之间相互转换数制转换是计算机科学技术中最为基础的运算~在日常生活中~人们习惯性地使用十进制数进行计算。
而在计算机内部~所有的信息,数、字符、汉字、计算机的指令、状态,都是用二进制数来表示的。
在计算机中~二进制数的运算、处理比十进制数的更容易实现。
有时为了缩短书写~在计算机中还采用十六进制数。
所以~我们需要把数从二进制数形式转换成其他进制的形式~甚至在不同的进位制之间进行转换。
- 1 -汇编语言课程设计报告:代码与数制之间的转换目录一、前言〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 1.1 程设计的目的〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 1.2 代码与数制之间的转换程序的意义〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 1.3 数制之间的转换程序的主要功能〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3正文〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 二、2.1 代码与数制之间相互转换程序的设计大纲〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 2.2 代码与数制之间相互转换程序的结构图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃4 2.3 友好交互界面结构图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃5 2.4 程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃62.4.1 主程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃62.4.2 键盘输入子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃62.4.3 ASC码转16进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃72.4.4 16进制转ASC进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃82.4.5 2,16进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃82.4.6 2?16进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃92.4.7 16?2进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃92.4.8 2~10进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃102.4.9 2?10进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃102.4.10 10?2进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃112.4.11 10~16进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃112.4.12 10?16进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃122.4.13 16?10进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃12三、源程序及其注释〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃13四、课程设计体会〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃29五、参考文献〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃29- 2 -汇编语言课程设计报告:代码与数制之间的转换课程设计题目:代码与数制之间的转换一、前言1.1 课程设计的目的, 加深对汇编语言课程理论方面的理解, 通过编写一定规模和难度的程序,进行一次较全面的汇编编程训练,提高分析问题和解决问题的能力, 提高调试程序的能力1.2 代码与数制之间的转换程序的意义数制转换是计算机科学技术中最为基础的运算,在日常生活中,人们习惯性地使用十进制数进行计算。
王爽《汇编语言》课程设计一

课程设计(一)一、有除法溢出的dtoc子程序为:dtoc: push cxs:mov cx,10call divdw ;进行16位除法,被除数低16位存放在ax中,高16位存放在dx中,除数为10,存放在cx中,并调用不会产生溢出的除法运算的子程序divdwadd cx,30h ;将余数加上30h,就得到十进制数码字符对应的ASCII 码mov [si],cx ;将十进制数码字符对应的ASCII码存放在数据段中inc sipush ax ;保存此时的axadd ax,dx ;商是由ax和dx中的数据组合而成,为了判断商是否为0 mov cx,ax ;将商的高16位和低16位加起来,送给cxpop ax ;恢复axjcxz ok ;若商为0,则结束子程序jmp short sok: mov byte ptr [si],0 ;在字符串的结尾添个0call back ;调用把字符串反过来的子程序backpop cxretdivdw:mov bx,axmov ax,dxmov dx,0div cxpush axmov ax,bxdiv cxmov cx,dxpop dxretback:push dipush cxmov cx,simov di,0s1:mov al,[di]mov ah,0push axinc diloop s1mov di,0mov cx,sis2:pop axmov [di],alinc diloop s2pop cx二、课程设计首先,定义数据的时候,定义了一个栈段,在data段的开始定义了一个有10字节的空间,用来把数据转换成十进制形式的字符串,后面的总收入、雇员数、人均收入均为dword数据,方便后面统一来进行循环处理。
其次,刚开始的时候,用一个循环来计算人均收入,并把得到的数据放在data段中(在data段中定义了21个为0的dword数据用来存放人均收入)。
再次,在总体思路上,就是先定义一个32*21个字节的table段,把分别用子程序dtoc 把每个用二进制存放的数据转换成对应的十进制字符串,把字符串存放到table段中相应的位置,通过四个循环能把所有数据对应的字符串存放到table段中,这时的table 段中的存储模式与要求显示在屏幕上的模式一样,所以可以用一个双重循环将table 中的内容一个字节一个字节地复制到显示缓冲区的偶地址上,奇地址存放字符的颜色属性白色07h。
汇编语言课程设计2

汇编语言 课程设计2一、课程目标知识目标:1. 让学生掌握汇编语言的基本概念,包括寄存器、指令、寻址方式等;2. 培养学生运用汇编语言进行程序设计的能力,能够编写简单的汇编程序;3. 使学生了解汇编语言与硬件的关系,理解计算机的工作原理。
技能目标:1. 培养学生运用汇编语言进行问题分析、程序设计和调试的能力;2. 培养学生熟练使用汇编语言开发工具,如汇编器、链接器等;3. 培养学生具备一定的计算机硬件操作能力,能够进行基本的汇编指令执行过程分析。
情感态度价值观目标:1. 培养学生对计算机科学的兴趣,激发学习汇编语言的积极性;2. 培养学生具备良好的编程习惯,注重程序的可读性和效率;3. 培养学生具备团队协作意识,能够在小组合作中发挥各自优势,共同解决问题。
课程性质分析:本课程为计算机科学与技术专业核心课程,旨在培养学生的计算机底层编程能力,加深对计算机硬件和软件的深入理解。
学生特点分析:学生具备一定的计算机基础和编程能力,但可能对汇编语言较为陌生,需要从基本概念入手,逐步引导学生掌握汇编语言编程技巧。
教学要求:1. 结合实际案例,注重理论与实践相结合,提高学生的实际操作能力;2. 采用任务驱动法,引导学生主动探究,培养学生的自主学习能力;3. 强化实践环节,注重个体差异,提供针对性的辅导和指导。
二、教学内容1. 汇编语言基础知识:- 寄存器概念与分类- 指令系统与指令格式- 常用汇编指令及其功能- 数据表示与寻址方式2. 汇编语言程序设计:- 程序结构及伪指令- 汇编程序编写与调试方法- 简单程序设计实例分析- 子程序设计与调用3. 汇编语言与硬件的关系:- 计算机硬件工作原理概述- 指令执行过程分析- 中断与异常处理- 存储器组织与管理4. 实践环节:- 使用汇编语言开发工具进行程序编写与调试- 常见汇编程序案例分析- 小组项目:设计并实现一个简单的汇编程序教学内容安排与进度:第一周:汇编语言基础知识(1-2章)第二周:汇编语言程序设计(3-4章)第三周:汇编语言与硬件的关系(5-6章)第四周:实践环节(7章)教材章节关联:1. 汇编语言基础知识:对应教材第1-2章内容2. 汇编语言程序设计:对应教材第3-4章内容3. 汇编语言与硬件的关系:对应教材第5-6章内容4. 实践环节:对应教材第7章内容教学内容确保科学性和系统性,结合实际案例,使学生能够循序渐进地掌握汇编语言知识,提高编程能力。
单片机课程设计报告(利用蜂鸣器播放音乐)汇编

课程设计:电子设计题目名称:音乐流水灯姓名:戴锦超学号:08123447班级:信科12-3班完成时间:2014年10月23日1设计的任务设计内容:动手焊接一个51单片机设计目标:利用单片机上的蜂鸣器以及二极管实现音乐播放以及根据音乐的节奏而规律性闪亮的二极管。
并且通过程序调节音乐节奏的快慢。
2 设计的过程2.1 基本结构1.STC89C52RC在本次的试验中采用了STC89C52RC单片机,STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期,工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机),工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz,用户应用程序空间为8K字节。
(STC89C52RC引脚图)STC89C52RC单片机的工作模式:(1)典型功耗<0.1μA,可由外部中断唤醒,中断返回后,继续执行原程序(2)空闲模式:典型功耗2mA(3)正常工作模式:典型功耗4Ma~7mA(4)唤醒,适用于水表、气表等电池供电系统及便携设备2.蜂鸣器及其工作原理:蜂鸣器按其结构分主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。
接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。
本实验采用的是电磁式蜂鸣器。
蜂鸣器按其是否带有信号源又分为有源和无源两种类型。
有源蜂鸣器只需要在其供电端加上额定直流电压,其内部的震荡器就可以产生固定频率的信号,驱动蜂鸣器发出声音。
无源蜂鸣器可以理解成与喇叭一样,需要在其供电端上加上高低不断变化的电信号才可以驱动发出声音。
本实验采用的是有源蜂鸣器。
(蜂鸣器与单片机连接电路图)2.2 软件设计过程1.蜂鸣器发声原理本实验由于采用有源蜂鸣器,只需将引脚端口P1^4清零,蜂鸣器即可发声;P1^4置位,蜂鸣器停止发声。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汇编课程设计报告学号:课程设计题目打印水仙花数学院计算机科学与技术专业计算机科学与技术班级姓名指导教师武汉理工大学《汇编语言程序设计》课程设计2012 年 6 月28 日课程设计任务书学生姓名:专业班级:指导教师:工作单位:计算机科学与技术学院题目: 打印水仙花数初始条件:理论:完成了《汇编语言程序设计》课程,对微机系统结构和80系列指令系统有了较深入的理解,已掌握了汇编语言程序设计的基本方法和技巧。
实践:完成了《汇编语言程序设计》的4个实验,熟悉了汇编语言程序的设计环境并掌握了汇编语言程序的调试方法。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)进一步理解和掌握较复杂程序的设计方法,掌握子程序结构的设计和友好用户界2.1简要分析2.1.1原理说明可以用标签来接收三位数,标签的好处在于可以限制输入的位数,并且通过实际输入位数可以直接进行一部分的异常处理。
将数存到标签后,因为是以ASCII码的形式存的,所以需要进行转换,将其变成十六进制数,转换后将数字存到申请的内存字中。
在转换成十六进制数的过程中,可以对输入的数进行异常处理,判断是否输入有误。
在输出水仙花数时,设置一个计数器,从100开始循环判断,直到等于用户输入的数为止,依次判断是否为水仙花数,决定是否输出该数。
在输出时,分别取出水仙花数的个、十、百位数,转换成ASCII码再输出。
系统提示是否继续后,程序对用户输入的信息进行判断,若为y或Y则系统回到初始状态,若为n或N则退出系统,若为其他则提示输入错误并重新输入。
2.1.2程序流程图是否继续2.2 数据段设计data segmentmess1 db 0dh,0ah,'Please input a nubmer(100<=number<=999):','$'mess2 db 0dh,0ah,'Do you want to continue(y/n)? ','$' mess3 db 0dh,0ah,'shuixianhuashu:',0ah,'$'error db 0dh,0ah,'Input error,please input again!','$' numpar label bytemax db 4act db ?numfld db 4 dup(?);存放输入的字符串,设定了最大长度,避免错误。
real dw ? ;用于存放转换后的十六进制数data ends3.子程序设计与描述3.1输入一个三位数:;input a numbernum proc nearlea dx,mess1mov ah,9int 21hmov ah,0ahlea dx,numparint 21hcall convertretnum endp3.2 将输入的数据转换成十六进制数并进行异常处理:convert proc nearmov bx,0mov dx,0mov ax,0cmp act,3 ;判断是否为三位数jne errmov bl,numfld[2] ;判断个位是否为1~9cmp bl,2fhjbe errcmp bl,3ahjge errsub bl,30hmov al,numfld[1] ;判断十位是否为0~9cmp al,2fhjbe errcmp al,3ahjge errsub al,30hmov dh,10mul dhadd bl,almov al,numfld[0] ;判断百位是否为0~9cmp al,30hjbe errcmp al,3ahjge errsub al,30hmov dh,100mul dhadd ax,bxmov real,ax ;将转换后的十六进制数存到内存中jmp exterr: ;错误处理lea dx,errormov ah,9int 21hcall numext:retconvert endp3.2 判断是否为水仙花数并输出结果( display子程序);display shuixianhuashudisplay proc nearlea dx,mess3mov ah,9int 21hmov cx,100cmp3:mov ax,cx ;将百位数的立方存入bx中mov dh,100div dhmov dh,almul dhmul dhmov bx,axmov ax,cx ;将十位数的立方加到bx中mov dh,10div dhmov ah,0div dhmov al,ahmov dh,ahmul dhmul dhadd bx,axmov ax,cx ;将个位数的立方加到bx中mov dh,10div dhmov al,ahmov dh,ahmul dhmul dhadd bx,axmov dx,cx ;若是水仙花数则跳转到printcmp dx,bxje printmov ax,real ;若等于用户输入的数据则终止cmp cx,axje stopinc cx ;否则计数器加一继续比较jmp cmp3print:mov ax,bx ;打印百位mov dh,100div dhmov dl,aladd dl,30hmov ah,2int 21hmov ax,bx ;打印十位mov dh,10div dhmov ah,0div dhmov dl,ahadd dl,30hmov ah,2int 21hmov ax,bx ;打印个位div dhmov dl,ahadd dl,30hmov ah,2int 21hmov dl,20hint 21hmov ax,realcmp ax,cxje stopinc cxjmp cmp3stop:retdisplay endp4.源程序与执行结果4.1源程序代码data segmentmess1 db 0dh,0ah,'Please input anubmer(100<=number<=999):','$' ;提示输入一个三位数mess2 db 0dh,0ah,'Do you want to continue(y/n)? ','$';提示是否继续mess3 db 0dh,0ah,'shuixianhuashu:',0ah,'$';提示输出水仙花数error db 0dh,0ah,'Input error,please input again!','$';出错信息numpar label bytemax db 4act db ?numfld db 4 dup(?);存放输入的字符串,设定了最大长度,避免错误。
real dw ?;用于存放转换后的十六进制数data endscode segmentassume ds:data,cs:codemain proc farstart:mov ax,datamov ds,axgo:call numcall displayagain:lea dx,mess2mov ah,9int 21hmov ah,1int 21hcmp al,89je gocmp al,121je gocmp al,78je exitcmp al,110je exitlea dx,errormov ah,9int 21hjmp againexit:mov ah,4chint 21hmain endp;--------------------------------------;input a number;输入一个三位数num proc nearlea dx,mess1mov ah,9int 21hmov ah,0ahlea dx,numparint 21hcall convertretnum endp;---------------------------------------;convert decimal to hexadecimal;store to real;将输入的数据转换成十六进制数并进行异常处理convert proc nearmov bx,0mov dx,0mov ax,0cmp act,3 ;判断是否为三位数jne errmov bl,numfld[2] ;判断个位是否为0~9cmp bl,2fhjbe errcmp bl,3ahjge errsub bl,30hmov al,numfld[1] ;判断十位是否为0~9cmp al,2fhjbe errcmp al,3ahjge errsub al,30hmov dh,10mul dhadd bl,almov al,numfld[0] ;判断百位是否为1~9cmp al,30hjbe errcmp al,3ahjge errsub al,30hmov dh,100mul dhadd ax,bxmov real,ax ;将转换后的十六进制数存到内存中jmp exterr: ;错误处理lea dx,errormov ah,9int 21hcall numext:retconvert endp;---------------------------------------;display shuixianhuashu;判断是否为水仙花数并输出结果display proc nearlea dx,mess3mov ah,9int 21hmov cx,100cmp3:mov ax,cx ;将百位数的立方存入bx中mov dh,100div dhmov dh,almul dhmul dhmov bx,axmov ax,cx ;将十位数的立方加到bx中mov dh,10div dhmov ah,0div dhmov al,ahmov dh,ahmul dhmul dhadd bx,axmov ax,cx ;将个位数的立方加到bx中mov dh,10div dhmov al,ahmov dh,ahmul dhmul dhadd bx,axmov dx,cx ;若是水仙花数则跳转到printcmp dx,bxje printmov ax,real ;若等于用户输入的数据则终止cmp cx,axje stopinc cx ;否则计数器加一继续比较jmp cmp3print:mov ax,bx ;打印百位mov dh,100div dhmov dl,aladd dl,30hmov ah,2int 21hmov ax,bx ;打印十位mov dh,10div dhmov ah,0div dhmov dl,ahadd dl,30hmov ah,2int 21hmov ax,bx ;打印个位div dhmov dl,ahadd dl,30hmov ah,2int 21hmov dl,20hint 21hmov ax,realcmp ax,cxje stopinc cxjmp cmp3stop:retdisplay endp;-------------------------------------- code endsend start4.2 测试方法4.2.1 测试用例输入数字:①错误输入12②错误输入045③正确输入265是否继续:①错误输入1②错误输入t③正确输入y④正确输入n4.2.2 测试结果5.总结5.1不足本程序只是针对了三位数进行设计,对于四位数进行过设计,但没法正确输出,最后只完成了判断输出三位数的水仙花数,所以在功能上有所不足,只是实现了最基本的判断三位数是否为水仙花数并且输出。