采用汇编语言实现阶乘运算.doc_第1页
采用汇编语言实现阶乘运算.doc_第2页
采用汇编语言实现阶乘运算.doc_第3页
采用汇编语言实现阶乘运算.doc_第4页
采用汇编语言实现阶乘运算.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

汇编语言程序设计报告汇编语言程序设计报告 课程设计题目:采用汇编语言实现阶乘运算 学 号: 10081437 姓 名: 张子琦 院 系: 测试与光电工程学院 专 业: 测控技术与仪器 指导教师: 陈振华 采用汇编语言实现阶乘运算采用汇编语言实现阶乘运算 学生姓名:张子琦 班级:10081437 指导老师:陈振华 摘要摘要:汇编语言是微型计算机原理及应用的基础,微机主机和接口所要实现的 功能都要通过汇编语言来实现。尽管汇编语言程序设计编程效率低,但其运行 效率高、速度快。因此掌握汇编语言是学好微机原理和接口设计的第一步。编 写计算 N!的程序。数值由键盘输入,结果在屏幕上输出。1 关键字关键字: : 汇编语言 N! 键盘输入 屏幕输出 指导老师签名:指导老师签名: Factorial implemented in assembly language Student name :Ziqi Zhang Class:10081437 Supervisor:Zhenhua Chen Abstract:Assembly language is the basis of the principles and applications of the microcomputer, the microcomputer host functions and interfaces to achieve should be achieved through the assembly language. Despite the low efficiency of assembly language programming programming, but its high operating efficiency, and speed. Therefore, the assembly language is the first step to learn Microcomputer Principle and Interface Design. Written calculation of N! Procedures. Numerical keyboard input, output results on the screen. Key words: Assembly language N! Keyboard input Screen output Signature of Supervisor: 目录目录 1 1 背景背景2 2 1 1 1.1 汇编语言 .1 1.2 设计概述 .2 2 2 功能描述功能描述 2 2 3 3 详细设计详细设计 2 2 3.1 原理及设计思路2 3.2 流程图 3 3.3 源程序代码124 4 4 运行过程运行过程 8 8 4.1 编译源程序 8 4.2 汇编 8 4.3 连接并生成可执行文件 9 4.4 运行程序 9 5 5 心得体会心得体会 1010 6 6 参考文献参考文献 1 10 0 7 7 致谢致谢 1111 1 1 背景背景2 2 1.11.1 汇编语言汇编语言 汇编语言是直接面向处理器( Processor)的程序设计 语言。处理器是 在指令的控制下工作的,处理器可以识别的每一条指令称为机器指令。每一 种处理器都有自己可以识别的一整套指令,称为指令集。处理器执行指令时, 根据不同的指令采取不同的动作,完成不同的功能,既可以改变自己内部的 工作状态,也能控制其它外围电路的工作状态。 人类最容易接受自己每天都使用的自然语言。为了使机器指令的书写和 理解变得容易,需要借鉴自然语言的优点,为此就引入了汇编语言。汇编语 言使用符号来代表不同的机器指令,而这些符号非常接近于自然语言的要素。 基本上,汇编语言里的每一条指令,都对应着处理器的一条机器指令。 汇编语言包括两个部分:语法部分和编译器。语法部分提供与机器指令 相对应的助记符,方便指令的书写和阅读。当然,汇编语言的符号可以被人 类接受,但不能被处理器识别,为此,还要由汇编语言编译器将这些助记符 转换成机器指令。 根据应用领域的不同,处理器的种类繁多,比如用于工业控制和嵌入式 计算的 Z80、MC68000和 MCS-51、广泛应用于个人计算机的 INTEL x86 系列,以及基于 ARM 体系结构的处理器,包括苹果公司在内的大企业都是 ARM 的客户。事实上,今天的 ARM 是最受欢迎的 32位嵌入式处理器,而 且,今天的 ARM 处理器比 INTEL 奔腾系列卖得还多,基本上是 3:1的比 例。 不同的处理器有不同的指令集。正是因为这个原因,每一种处理器都会 有自己专属的汇编语言语法规则和编译器。即使是同一种类型的处理器,也 可能拥有不同的汇编语言编译器。一个明显的例子是INTEL x86系列的处 理器,围绕它就开发出好多种编译器来,如 MASM、NASM、FASM、TASM 和 AT循环输出 PUSH CX MOV DI,CX CALL OUTPUT POP CX DEC CX CMP CX,0 JGE ROUTPUT MOV DX,OFFSET YN MOV AH,9 INT 21H MOV AH,0 INT 16H CMP AH,31H ;KEY: N(N) JNZ START EXIT: MOV AX,4C00H INT 21H MAIN ENDP SHURU PROC PUSH DX PUSH CX PUSH BX PUSH AX XOR BP,BP MOV BX,10 MOV CX,5 INPUT: MOV AH,0 ;键盘输入数据 INT 16H CMP AL,0DH ;以回车结束输入 JZ OK CMP AL,0 ;只允许输入09 JB INPUT CMP AL,9 JA INPUT MOV AH,0EH ;显示有效输入 INT 10H AND AX,000FH XCHG AX,BP MUL BX ;扩大10倍 ADD BP,AX ;加一位 LOOP INPUT OK:NOP ;数值结果放入 BP ;恢复用到的寄存器 POP AX POP BX POP CX POP DX RET SHURU ENDP SHUCHU: PUSH DX PUSH CX MOV AX,CX XOR CX,CX MOV BX,10 NX1: XOR DX,DX DIV BX OR DX,0E30H PUSH DX INC CX CMP AX,0 JNZ NX1 NX2: POP AX INT 10H LOOP NX2 POP CX POP DX RET SHOW: MOV AX,0E21H ;! INT 10H MOV AL,“=“ INT 10H MOV CX,BP JCXZ SSS RSS: CALL SHUCHU CMP CX,1 JZ SSS MOV AX,0E2AH ;“*“ INT 10H LOOP RSS SSS: MOV AX,0E3DH ;“=“ INT 10H RET FRACTOR PROC NEAR MOV CX,N ;N,要求阶乘的数 MOV I, 1 MOV M, 0 ;M,步长 MOV DI,0 MOV SI,DI SHL SI,1 MOV WORD PTR SI+200H,1 CTRLI: MOV C, 0 ;C,进位 MOV DI,0 CTRLDI: CMP DI,M ;M,步长 JA CMPC DONE: MOV SI,DI SHL SI,1 MOV AX,SI+200H MOV BX,I MUL BX ADD AX,C ;C,进位 ADC DX,0 MOV BX,1000 DIV BX MOV C,AX ;C,进位 MOV SI,DI SHL SI,1 MOV SI+200H,DX INC DI JMP CTRLDI CMPC: CMP C,0 ;C,进位 JBE NEXT INC M ;M,步长 MOV AX,C MOV SI+2+200H,AX NEXT: INC I CMP CX,0 JNG IF0 LOOP CTRLI IF0: MOV DI,M ;M,步长 RET FRACTOR ENDP OUTPUT PROC NEAR C2: MOV SI,DI SHL SI,1 MOV BX,SI+200H BID PROC MOV CX,1000 MOV AX,BX MOV DX,0 DIV CX MOV BX,DX MOV CX,100 CALL DDIV MOV CX,10 CALL DDIV MOV CX,1 CALL DDIV RET BID ENDP DDIV PROC MOV AX,BX MOV DX,0 DIV CX MOV BX,DX MOV DL,AL ADD DL,30H MOV AH,02H INT 21H RET DDIV ENDP RET OUTPUT ENDP STRING DB 0DH,0AH,INPUT A NUMBER:,0DH,0AH,$ ERROR DB 0DH,0AH,“OUT OF RANGE! $“ YN DB 0DH,0AH,CONTINUE (YES/NO) ? $ C10 DW 10 ;输入十进制转换的数 I DW ? N DW ? ;要求阶乘的数 M DW ? ;步长 C DW ? ;进位 DW ? CODES ENDS END START 4 4 系统效果及存在问题系统效果及存在问题 4.14.1 编译源程序编译源程序 在 DOS 模式下,键入:edit g:masm5njc.asm。将源程序代码写入并保存。 4.24.2 汇编汇编 在 DOS 模式下,键入:masm g:masm5njc.asm,执行汇编。 (由于机器系统为 Microsoft Windows8 X64,故必须借用软件 DOSBOX 以实现 32 位的程序运行) 4.34.3 连接并生成可执行文件连接并生成可执行文件 在 DOS 模式下,键入:link g:masm5njc.obj,执行连接。 (由于机器系统为 Microsoft Windows8 X64,故必须借用软件 DOSBOX 以实现 32 位的程序运行) 图 2:DOSBOX 下运行 masm 汇编结果 4.34.3 运行程序运行程序 在 DOS 模式下,键入 njc.exe 以运行计算 N!的程序。 (由于机器系统为 Microsoft Windows8 X64,故必须借用软件 DOSBOX 以实现 32 位的程序运行) 在程序中,若输入超出范围,则提示 OUT OF RANGE!完成一次计算后,询问 CONTINUE?(YES/NO),键入 Y 则返回继续,可重新计算其他数;键入 N 则退出。 5 5 心得体会心得体会 图 3:DOSBOX 下运行 link 连接结果 图 4:DOSBOX 下运行 njc 程序过程 微机原理与接口技术是一门很有趣的课程,任何一个计算机系统都是一个 复杂的整体,学习计算机原理是要涉及到整体的每一部分。讨论某一部分原理 时又要涉及到其它部分的工作原理。这样一来,不仅不能在短时间内较深入理 解计算机的工作原理,而且也很难孤立地理解某一部分的工作原理。所以,在 循序渐进的课堂教学过程中,我总是处于“学会了一些新知识,弄清了一些原 来保留的问题,又出现了一些新问题”的循环中,直到课程结束时,才把保留 的问题基本搞清楚。 学习该门课程知识时,其思维方法也和其它课程不同,该课程偏重于工程 思维,具体地说,在了解了微处理器各种芯片的功能和外部特性以后,剩下额 是如何将它们用于实际系统中,其创造性劳动在于如何用计算机的有关技术和 厂家提供的各种芯片,设计实用的电路和系统,再配上相应的应用程序,完成 各种实际应用项目。 总之,这次课程设计对于我们有很大的帮助,通过课程设计,我更加深入 地理解了,微机原理课程上讲到的各种芯片的功能,以及引脚的作用,同时加 深了对于主要芯片的应用的认识,熟悉了汇编程序的编写过程和运行过程,最 后还提高了自己的动手能力。感谢老师的悉心指导。 6 6 参考文献参考文献 1.微机原理实验与课程设计指导书 ,陆红伟编,中国电力出版社,2006 年 2.汇编语言、微机原理及接口技术(第三版) ,郑初华编,电子工业出版社, 2011 年 7 7 致谢致谢 这次课程设计能够顺利完成,离不开陈老师的指导和同学们的帮助。由于 个人对专业知识理解不够透彻,在做课程设计的整个过程中都显

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论