汇编大作业设计报告-基于MASM集成环境的计算器.docx_第1页
汇编大作业设计报告-基于MASM集成环境的计算器.docx_第2页
汇编大作业设计报告-基于MASM集成环境的计算器.docx_第3页
汇编大作业设计报告-基于MASM集成环境的计算器.docx_第4页
汇编大作业设计报告-基于MASM集成环境的计算器.docx_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

汇编大作业设计报告班级:JS001005学号:2010300128姓名:王永威一、程序题目及功能1. 题目:基于MASM集成环境的计算器2. 程序功能:本程序实现了两个无符号字节类型的十进制的加法(ADDITION)、减法(SUBTRACTION)、乘法(MULTIPLICATION)、除法(DIVISION)、乘方(POWER OF (X,N) 和阶乘运算(FACTORIAL OF N).二、程序设计要求1. 程序设计要求 1 综合使用32位指令、伪指令、宏指令、子程序等知识 2 开发程序的总代码行数不应少于300行 3 提交作业的内容: 源代码和简要设计报告;编译生成的二进制程序以及关于程序生成方法的说明。2. 作业完成度: 本程序是在 MASM for Windows(32位系统,兼容XP)集成开发环境下开发的,综合使用了32位指令、伪指令、宏指令(如程序的宏定义DISP)以及递归设计,每一个计算功能模块都采用子程序以实现。开发程序总代码为438行,源代码、编译生成的二进制程序以及程序成方法见后文,并通过多次实验验证了程序的正确性。三、程序设计流程1. 具体流程图(如图1所示)2. 程序各模块分析 1 主程序模块分析 本模块中设计了菜单选项,通过y 或n可以选择继续还是退出操作。如果继续,则会给出子菜单选项,对应了a-f 7 个运算功能,选择其中一个后,会根据子函数相应功能提示用户进行一个或两个输入数据。输入后屏幕即可显示运行结果。 在主函数中使用了宏定义:DISP MACRO M,功能是便于字符串的显示。除此之外,主函数可以调用数据输入、输出以及其他各个子函数。2 一般运算函数分析加法、减法、乘法、除法和乘方都是通过子函数的参数传递、特定函数的运算和输出打印来实现的。3 递归函数分析在功能f中,通过建立堆栈的方法实现递归调用。 菜单 转入相关函数执行N退出吗? 选择a-fY退出图1 程序流程3. 程序正确性验证 1 程序开发环境 Masm for Windows 集成环境共享版 2 程序运行方法介绍 一步步按照下面图示的演示即可实现程序完整的功能: 附源程序:;THIS IS A COMPLIING PROGRAM;IT IS TO CALCULATE ADDITION,SUBTRACTION;MULTIPLICATION,DIVISION;POWER OF (X,N) AND FACTORIAL OF NUMBER NDATA SEGMENTSTR1 DB 0AH,0DH, * *$STR2 DB 0AH,0DH, * *$STR3 DB 0AH,0DH, * WELCOME TO OUR CALCULATOR! *$STR4 DB 0AH,0DH, * *$STR5 DB 0AH,0DH, * THIS IS PROGRAM OF BASIC CALCULATOR *$STR6 DB 0AH,0DH, * *$STR7 DB 0AH,0DH, * PRESS y TO BEGIN EXCHANGING! *$STR8 DB 0AH,0DH, * PRESS n TO EXIT! *$STR9 DB 0AH,0DH, * *$STR10 DB 0AH,0DH,* *$STR11 DB 0AH,0DH,INPUT ERROR,PLEASE REPRESS!$STR12 DB 0AH,0DH,a.ADDITION$STR13 DB 0AH,0DH,b.SUBTRACTION$STR14 DB 0AH,0DH,c.MULTIPLICATION$STR15 DB 0AH,0DH,d.DIVISION$STR16 DB 0AH,0DH,e.POWER(X,N)$STR17 DB 0AH,0DH,f.FACTORIAL N!$STR18 DB 0AH,0DH,RESULT IS:$STR19 DB 0AH,0DH,INPUT TWO NUMBERS:$STR20 DB 0AH,0DH,NUMBERS INPUT ARE:$STR21 DB 0AH,0DH,YOUR CHOICE IS:$STR22 DB 0AH,0DH,QUO AND RES ARE:$STR23 DB 0AH,0DH,INPUT ONE NUMBER:$NUM EQU 2NUM_VALUE DW NUM DUP(?)NUM2 DD ?BUF1 DB ERROR $BUF DD 5temp1 dw 1 dup(?)temp2 dw 1 dup(?)DATA ENDSSTACK SEGMENT DB 200 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKINPUT1 PROC NEAR MOV AH,1 INT 21H RETINPUT1 ENDP;DEC TO ASCII FUNCTIONDECIN PROC NEAR PUSH CX PUSH AX MOV DX,0DC1:CALL INPUT1 SUB AL,30H CMP AL,0 JL DC2 CMP AL,9 JG DC2 CBW ;IF BETWEEN 0 AND 9 PUSH AX ;AFTER INPUT,TEMPORAL CHAR IS IN AX MOV AX,DX ;INITIAL DX IS 0, AFTER IS FORMER AX MOV CX,10 MUL CX ;UPDATE DECIMAL INPUT MOV DX,AX POP AX ADD DX,AX JMP DC1DC2:MOV DI,DX ;DEAL WITH SPACE/END OF A NUMBER POP AX POP CX RETDECIN ENDP OUTPUT PROC NEAR PUSH DX MOV DL,AL MOV AH,2 INT 21H POP DX RETOUTPUT ENDP;BINARY TO ASCIIDECOUT PROC NEAR PUSH DI PUSH DX PUSH CX PUSH AX MOV CX,0 LEA DI,NUM_VALUEDEC1:PUSH CX MOV AX,BX MOV DX,0 MOV CX,10 DIV CX XCHG AX,DX ADD AL,30H ;CHANGE RESIDUE TO ASCII MOV DI,AL INC DI POP CX INC CX MOV BX,DX ;MOV QUOTIENT TO BX CMP DX,0 JNZ DEC1DEC2:DEC DI MOV AL,DI CALL OUTPUT LOOP DEC2 POP AX POP CX POP DX POP DI RETDECOUT ENDP;DISPLAY SPACE FUNCTIONDISPS PROC NEAR PUSH AX PUSH DX MOV AH,2 MOV DL,32 INT 21H POP DX POP AX RETDISPS ENDP;ADDITIONADDITION PROC NEAR PUSH DI PUSH BX PUSH DX LEA DI,NUM_VALUE MOV BX,DI+2 ADD DI,BX MOV BX,DI LEA DX,STR18 MOV AH,9 INT 21H CALL DECOUT POP DX POP BX POP DI RETADDITION ENDP;SUBTRACTIONSUBTRACTION PROC NEAR PUSH DI PUSH BX PUSH CX LEA DI,NUM_VALUE MOV BX,DI+2 SUB DI,BX MOV BX,DI LEA DX,STR18 MOV AH,9 INT 21H CALL DECOUT POP CX POP BX POP DI RETSUBTRACTION ENDP;MULTIPLICATION MULTIPLICATION PROC NEAR PUSH AX PUSH DI PUSH BX PUSH CX PUSH DX LEA DI,NUM_VALUE MOV DX,0 MOV AX,DI MOV BX,DI+2 MUL BX ;RESULT STORED IN DX:AX MOV DI,DX MOV DI+2,AX ;STORE DX:AX TO NUM_VALUE RESPECTIVELY LEA DX,STR18 MOV AH,9 INT 21H LEA DI,NUM_VALUE MOV CX,NUM CMP DX,0 JNZ LP1LP1: MOV BX,DI+2 MOV DI,BX MOV BX,DI CALL DECOUT POP DX POP CX POP BX POP DI POP AX RET LP2:MOV BX,DI CALL DECOUT INC DI INC DI LOOP LP2 POP DX POP CX POP BX POP DI POP AX RETMULTIPLICATION ENDP;DIVISION DIVISION PROC NEAR PUSH AX PUSH DI PUSH BX PUSH CX PUSH DX LEA DI,NUM_VALUE MOV DX,0 MOV AX,DI MOV BX,DI+2 DIV BX ;RESULT: QUOTIENT AX,RESIDUE DX MOV DI,AX MOV DI+2,DX LEA DX,STR22 MOV AH,9 INT 21H LEA DI,NUM_VALUE MOV CX,NUMLP3:MOV BX,DI CALL DECOUT CALL DISPS INC DI INC DI LOOP LP3 POP DX POP CX POP BX POP DI POP AX RETDIVISION ENDP;POWERPOWER PROC NEAR PUSH AX PUSH DI PUSH BX PUSH CX PUSH DX LEA DI,NUM_VALUE MOV DX,0 MOV AX,DI MOV CX,DI+2 DEC CX LP4: MOV BX,DI ;AX*BX-DX:AX MUL BX LOOP LP4 MOV DI,AX ;STORE RESULT INTO NUM_VALUE LEA DX,STR18 MOV AH,9 INT 21H LEA DI,NUM_VALUE MOV BX,DI CALL DECOUT CALL DISPS POP DX POP CX POP BX POP DI POP AX RETPOWER ENDP;FACTORIALFACTORIAL PROC NEAR PUSH DI PUSH DX PUSH BX PUSH AX PUSH BP PUSH SP LEA DI,NUM_VALUE PUSH DI CALL RECURSIVE ;MOV AX,1 MOV BX,AX LEA DX,STR18 MOV AH,9 INT 21H CALL DECOUT CALL DISPS POP SP POP BP POP AX POP BX POP DX POP DI RETFACTORIAL ENDPRECURSIVE PROC NEAR PUSH BP MOV BP,SP MOV BX,BP+4 CMP BX,1 JZ INITIAL DEC BX PUSH BX CALL RECURSIVE MOV BX,BP+4 MOV DX,0 MUL BX JMP EXIT1INITIAL: MOV AX,1EXIT1: MOV SP,BP POP BP RET 2 RECURSIVE ENDP ;INPUT NUMBERS FUNCTION FOR FAC_CAMPUTE ONLYINPUT2 PROC NEAR LEA DX,STR23 MOV AH,9 INT 21H LEA DI,NUM_VALUE CALL DECIN RETINPUT2 ENDP;INPUT NUMBERS FUNCTION FOR OTHERSINPUT PROC NEAR LEA DX,STR19 MOV AH,9 INT 21H LEA DI,NUM_VALUE MOV CX,NUMINLP:CALL DECIN INC DI INC DI LOOP INLP RETINPUT ENDP;MAIN FUNCTIONSTART: MOV AX,DATA MOV DS,AXDISP MACRO M LEA DX,M MOV AH,9 INT 21H ENDM DISP STR1 DISP STR2 DISP STR3 DISP STR4 DISP STR5 DISP STR6 DISP STR7 DISP STR8 DISP STR9 DISP STR10 DISP STR21LOP: MOV AH,1 INT 21H CMP AL,y ;IF YES, THEN GO TO DETAILED ORDER JZ ORDER CMP AL,n ;IF NO,THEN TO TO EXIT JZ EXIT DISP STR11 ;OTHERWISE GO TO ERROR JMP LOPORDER: DISP STR12 DISP STR13 DISP STR14 D

温馨提示

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

评论

0/150

提交评论