汇编简单整数的四则运算_第1页
汇编简单整数的四则运算_第2页
汇编简单整数的四则运算_第3页
汇编简单整数的四则运算_第4页
汇编简单整数的四则运算_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、汇编语言程序设计 综合程序设计实验报告 简单整数的四则运算 信1101-1班 汪洋 完成日期:2013.11.25 口 号: 段兴林 20112837 20112872 、项目简介 我们组的实验为多位数整数的简单加减乘除运算。在这里,只涉及两 个数的运算。执行简单的加法,减法,乘法,与除法,当然在除法中 只能求出整数的部分,且不显示余数。 二、小组成员具体分工 段兴林:主要负责数据的输入,即inp ut number部分,标题的输出显 示。 汪洋:主要负责输入缓冲区的数据的计算,即jisuan以及ABC,def 的子程序的部分。标题的输出显示。 三、需求分析与设计 需求分析:主要的四项基本操作

2、 1加法 2减法 3乘法 4.除法 本项目以实现整数的基本四则运算为目的。 因此在这里需要解决三个 问题:1、数字的输入。2、数字的运算。3、数字的输出显示。 1、数字输入: 本输入方式以mov ah,Oa int 21h使用0a命令调用dos系统功能调用, 将输入的数据以显示字符的方式,输入缓冲区。 2、数据的运算: 在这里,运算的前提是存储器中已经存放了真实的“数字”。但从缓 冲区输入的数据,只是一个一个紧连的字符,要将字符变成真实的“数 字”,所以要将字符进行格式的转化。首先要定义好CX,便于进行loop 的循环。然后再循环中将最高位的数乘以10.举一个简单的例子。在 缓冲区输入了 12

3、3.但在存入存储单元时是三个字节单元放置了符号 1,符号2,符号3.次将最高位乘以10,即,1*10+2=12,12*10+3=123. 这样就将符号串123,变为了数字123.这样就可以再进行计算了。 3、数据的输出: 在这里数据的输出,也要讲数字变为字符串的形式,否则是不能输出 的。因此与数据的计算部分是相同的,也要将每一位都分隔开来。逐 位的输出。 四、代码及分析 DB DATA SEGMENT INFOO 13 10 *$ INFO1 DB 13,10:* Welcome to using my caculater! *$ INFO2 DB 13,10,* (Press any key

4、 to continues) *$ INFO3 DB 13,10,$ BINFO0 DB 13,10:* 1.ADD *$ BINFO1 DB 13,10:* 2.SUB *$ BINFO2 DB 13,10:* 3.MUL *$ BINFO3 DB 13,10:* 4.DIV *$ BINFO4 DB 13,10:* 5.EXIT (or press any other key) *$ CINFO0 DB 13,10:* 1.INPUT THE FIRST NUMBER *$ CINFO1 DB 13,10:* *$ 2.1 NPUT THE SECOND NUMBER ;第一个字符放10

5、;第二个字符放0 BUFF DB 10 DB 0 DB 10 DUP(0) ARRAY1 DB 13,10, PI ease input the first number:$ ARRAY2 DB 13,10, Please input the seco nd number:$ 以上部分就是标题 ARRAY DW 2 DUP(0) RESULT DB 10 DUP( 0),$ CRLF DB 0DH,0AH,$ FLAGS DB 0;flag中存放的是判断功能选择的字符 DATA ENDS ;数据段结束 ;代码段 CODE SEGMENT ASSUME CS:CODE,DS:DATA START

6、: MOV AX,DATA MOV DS,AX ;程序的主线 AB:CALL MAINMENU MOV AH,7 INT 21H CMP AL,13 JZ EEXIT CALL TWOMENU ;主菜单的子程序 mai n menu ;键盘输入,无回显 ;是否是回车 ;调用二级子菜单 MOV FLAGS,0FFH ;输入选择功能部分 MOV AH,7 INT 21H ;比较输入的与1-5之间的数 CMP AL,31H JB EEXIT CMP AL,34H JA EEXIT MOV FLAGS,AL ;array是字类型的,将其中的两个空间中放置了 MOV ARRAY,0FFH 最大的数 MO

7、V ARRAY2,0FFH ; ADS: A1: A2: CALLTHMENU MOV AH,7 INT 21H CMP AL,1 JZ A1 CMP AL,2 JZ A2 JMP EEXIT MOV DX,OFFSET ARRAY1 CALL INP UTNUMBER CMP CX,0 JZ EEXIT MOV WORD PTR ARRAY0,AX CALL JISHUAN JC AB JMP ADS MOV DX,OFFSET ARRAY2 CALL INP UTNUMBER CMP CX,0 JZ EEXIT MOV WORD PTR ARRAY2,AX CALL JISHUAN JC

8、AB JMP ADS 程序的主线结束 ;调用三级菜单 ;是1的话,输入第一个数 ;是2的话,输入第二个数 ;否则结束 ;BUFF中存放数据(以字节为单位) ;al里存放着真正输入字符的数字 ;将数字放入array中 ;计算 L0: P ROC n ear MOV CH,0 ;将ex的高位清零 mov BX,0 MOV CL,BUFFBX+1 ;将BUFF中的第二个数给低位 CMP CX,0 ;此时ex是10,字的形式 JZ ABCD P USH CX ;不是0,10进栈 ADD BX,2 ;此时bx为2 P USH BX ;进栈:10-2 (栈顶) SUB BUFFBX,30H ;将BUFF中

9、的全部转换为数字 INC BX LOOP L0 POPBX ;将栈顶2给bx MOV AX,0 MOV CH,0 MOV CL,BUFFBX-1 ;BUFF1给 el 将缓冲区中的数转换为十进制数 ABC L1: ABCD: ABC MOV DL,10 MUL DL;al*dl ADD AL,BYTE PTR BUFFBX INC BX LOOP L1 POPCX RET END P 十进制数转换结束 ;10出栈,给了 CX ;是零结束 -输出结果 P ROC mov SI,0 ADD SI,4 MOV RESULTSI+1,$ MOV CX,5 MOV DX,0 MOV BX,10 DIV

10、BX P USH DX ADD DL,30H MOV RESULTSI,DL DEC SI POPDX LOOP AG1 MOV CX,4 INC SI MOV AL,RESULTSI CMP AL,30H JNZ NOZEARO LOOP AG3 INC SI NOZEARO: CALL DIS PCRLF lea DX,RESULTSI MOV AH,9 INT 21H RET DEFENDP ;输出结果结束 ;输出换行 DIS PCRLF P ROC n ear;换行子程序 MOV DX,OFFSET INFO3 mov ah,9 DEF AG1: AG3: ;将 RESULT5=$ ;

11、(dx,ax)/bx ;将余数dx压入栈 ;低位加48,显示成数字的符号 ;RESULT4=第一位数字 ;si-1 ;将余数弹栈给dx ;将高位时0的滤掉 int 21h ret DIS PCRLF endp DIS PINFO proc near;输出标题的子程序 MOV AH,9 INT 21H RET DIS PINFO END P ;输出换行结束 ;输入数据 INP UTNUMBER P ROC n ear MOV AH,9 INT 21H MOV DX,OFFSET BUFF ;将缓冲区的数据输入 BUFF MOV AH,0AH INT 21H ;紧接着调用abc CALL ABC

12、RET INP UTNUMBER END P ;输入数据结束 ;计算 JISHUAN P ROC ;比较是否溢出 CMP ARRAY0,0FFH JZ NNN CMP ARRAY2,0FFH JZ NNN CMP FLAGS,31H JZ ISADD CMP FLAGS,32H JZ ISSUB CMP FLAGS,33H JZ ISMUL JMP ISDIV NNN: CLC;进位位置0 RET ISADD: MOV BX,WORD PTR ARRAY0 MOV AX,WORD PTR ARRAY2 ADD AX,BX JMP DIS P ISSUB: MOV AX,WORD PTR ARR

13、AY0 MOV BX,WORD PTR ARRAY2 CMP AX,BX JB SMALL SUB AX,BX JMP DIS P SMALL: SUB BX,AX MOV AX,BX JMP DIS P ISMUL: MOV AX,WORD PTR ARRAY0 MOV BX,WORD PTR ARRAY2 MUL BX MOV DX,0 JMP DIS P ISDIV: MOV AX,WORD PTR ARRAY0 MOV BX,WORD PTR ARRAY2 MOV DX,0 DIV BX MOV DX,0 DIS P: CALL DEF STC;进位位置1 RET JISHUAN EN

14、D P ;计算结束 ;菜单部分 MAINMENU P ROC n ear;主菜单 MOV DX,OFFSET INFO0 CALL DIS PINFO mov dxQffset INFO1 call DIS PINFO mov dx,offset INFO2 call DIS PINFO MOV DX,OFFSET INFO0 CALL DIS PINFO RET ;二级菜单 MAINMENU END P TWOMENU P ROC n ear CALL DIS PCRLF MOV DX,OFFSET INFO0 CALL DIS PINFO ;CALL DIS PCRLF MOV DX,OF

15、FSET BINFO0 CALL DIS PINFO MOV DX,OFFSET BINFO1 CALL DIS PINFO MOV DX,OFFSET BINFO2 CALL DIS PINFO MOV DX,OFFSET BINFO3 CALL DIS PINFO MOV DX,OFFSET BINFO4 CALL DIS PINFO ;CALL DIS PCRLF MOV DX,OFFSET INFO0 CALL DIS PINFO RET TWOMENU END P THMENU P ROC n ear CALL DIS PCRLF CALL DIS PCRLF MOV DX,OFFSET INFO0 CALL DIS PINFO ;CALL DIS PCRLF MOV DX,OFFSET CINFO0 CALL DIS PINFO MOV DX,OFFSET CINFO1 CALL DIS PINFO ;CALL DIS PCRLF MOV DX,OFFSET INFO0 CALL DIS PINFO RE

温馨提示

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

最新文档

评论

0/150

提交评论