汇编大作业(四则运算器含代码).

上传人:我** 文档编号:115344322 上传时间:2019-11-13 格式:DOC 页数:37 大小:2.19MB
返回 下载 相关 举报
汇编大作业(四则运算器含代码)._第1页
第1页 / 共37页
汇编大作业(四则运算器含代码)._第2页
第2页 / 共37页
汇编大作业(四则运算器含代码)._第3页
第3页 / 共37页
汇编大作业(四则运算器含代码)._第4页
第4页 / 共37页
汇编大作业(四则运算器含代码)._第5页
第5页 / 共37页
点击查看更多>>
资源描述

《汇编大作业(四则运算器含代码).》由会员分享,可在线阅读,更多相关《汇编大作业(四则运算器含代码).(37页珍藏版)》请在金锄头文库上搜索。

1、计算机组成原理与汇编语言程序设计(2013)汇编程序大作 业云南大学软件学院实验报告姓名年级班级学号专业序号实验名称实验八 汇编程序综合设计实验(四则运算器)成绩指导教师 (签名):实验内容:1设计一个功能完善的四则运算器:程序有友好的运行界面;可以方便的输入输出2,10,16进制数据(要求可以处理4位的数据);可以方便的对数据进行四则运算;要求程序能够处理基本的错误信息;程序要求菜单控制;其他程序简介:该程序采用了主程序、子程序、宏相结合的编写方式,通过主程序调用了加、减、乘、除的子程序,在这四个子程序中有分别调用了二、十、十六进制输入输出、进制间转化的子程序。在数值转化为ASCII码的部分

2、,定义了宏进行调整输出。程序实现了16位的二进制、4位的十进制、4位的十六进制的加、减、乘、除运算,并可以通过用户的选择将其转化为其他相应的进制。其中乘法运算的进制转化功能尚不完善,当运算结果超过4位时不能正确的将结果进行输出并进行进制转化。子过程: addition:加法部分 subtraction:减法部分 multiplication:乘法部分division:除法部分b_in:二进制输入hd_in:十六进制、十进制输入b_out:二进制输出btod:二进制转化十进制并输出both:二进制转化十六进制并输出宏: btth:将数值转化为ASCII码保存算法说明: 二进制计算时,要求输入0和

3、1,从高到低为输入,将先输进的数*2+后输入的数,保存到寄存器中,如 1011则按(1*2+0)*2+1)*2+1 十进制计算时,要求输入0-9的整数,从高到低输入,将先输进的数*10+后输进的数,保存到寄存器中,如9817 则按(9*10+8)*10+1)*10+7 十进制计算时,要求输入0-F的整数,从高到低输入,将先输进的数*10H+后输进的数,保存到寄存器中,如AD17 则按(A*10H+D)*10H+1)*10H+7 通过add、sub、mul、div等汇编指令进行计算。二进制输出,从高位到低位按位依次保存到dl中,加30h后输出十进制输出,将结果分别除以10000、(上一步余数除)

4、1000、(上一步余数除)100、(上一步余数除)10将商分别加30h后输出,将最后的余数加上30h后输出 十六进制输出,从高到低每四位依次输出与9比较,大于9加37h调整,小于9加30h调整程序流程及实验结果:主程序部分:提示用户进行运算符号的选择,并进行子程序部分的调用四则运算部分流程:四则运算的加、减、乘、除四部分子程序的流程大致相同,此处采用同一个流程图表示,该部分提示用户进行进制选择,跳转的相应位置并进行相应的运算,调用输入输出子程序,对结果进行进制转化二进制输入流程:该部分进行二进制数的输入,通过移位将先输入的数保存到高位,后输入的数保存到低位,将最终结果保存到bx中二进制输出:该

5、部分将运算结果以2进制的形式输出,通过加30h将数值转化为ASCII码输出十、十六进制数的输入该部分实现十及十六进制数的输入,将最终结果保存到bx中;二进制转十进制并输出该部分通过将得到的二进制数求商取余的方式将最高位的取到商中并输出;二进制转十六进制:该部分通过移位的方式将二进制数转化为16进制输出,其中判断了所输出值与9的大小关系,大于9则加37h调整,小于9则加30h调整加法部分:二进制加法,并将结果转化为10进制二进制加法,并将结果转化为16进制:十进制加法,并将结果转化为二进制:十进制加法,并将结果转化为16进制:十六进制加法,并将结果转化为二进制:十六进制加法,并将结果转化为十进制

6、减法部分:二进制减法,并将结果转化为十进制输出:二进制减法并将结果转化为十六进制输出:十进制减法,并将结果转化为二进制输出:十进制减法,并将结果转化为十六进制输出:十六进制减法,并将结果转化为二进制输出:十六进制减法,并将结果转化为10进制输出:乘法部分:二进制乘法,并结果转化为10进制输出:二进制乘法并将结果转化为16进制输出:十进制乘法并将结果转化为二进制输出十进制乘法,并将结果转化为16进制输出:十六进制乘法,并将结果转化为二进制输出:十六进制乘法,并将结果转化为十进制输出:除法部分:二进制除法,并将结果转化为十进制输出:二进制除法,并将结果转化为16进制输出:十进制除法,并将结果转化为

7、二进制输出:十进制除法,并将结果转化为16进制输出:十六进制除法,并将结果转化为二进制输出:十六进制除法,并将结果转化为10进制输出:代码:datasegmentnote1 db Input a-add,b-sub,c-mul,d-div,0ah,0dh,$note2 db 0ah,0dh,Input a-binary,b-decimal,c-hexadecimal,0ah,0dh,$note3 db 0ah,0dh,Input addend ,0ah,0dh,$note4 db 0ah,0dh,Input another addend, 0ah,0dh,$note5 db 0ah,0dh,T

8、he answer is,0ah,0dh,$note6 db 0ah,0dh,Change the answer to a-decimal,b-hexadecimal,any other key-exit,0ah,0dh,$note7 db 0ah,0dh,Change the answer to a-binary,b-hexadecimal,any other key-exit,0ah,0dh,$note8 db 0ah,0dh,Change the answer to a-binary,b-decimal,any other key-exit,0ah,0dh,$note9 db 0ah,0

9、dh,Input minuend, 0ah,0dh,$note10 db 0ah,0dh,Input subtrahend, 0ah,0dh,$note11 db 0ah,0dh,Input multiplicand ,0ah,0dh,$note12 db 0ah,0dh,Input another multiplicand ,0ah,0dh,$note13 db 0ah,0dh,Input dividend, 0ah,0dh,$note14 db 0ah,0dh,Input divisor, 0ah,0dh,$num dw 0num1 dw 0num2 dw 0sig db ?data en

10、dscode segmentassume ds:data,cs:codestart:mov ax,data mov ds,ax lea dx,note1 mov ah,09h int 21h m1:mov ah,01h int 21h cmp al,a je ad cmp al,b je subt cmp al,c je mult cmp al,d je divi jmp m1 ad:call addition jmp over subt:call subtraction jmp over mult:call multiplication jmp over divi:call division over:mov ah,01h int 21h mov ah,4ch int 21haddition proc lea dx,note2 mov ah,09h int 21h mov ah,01h int 21h mov sig,al cmp al,a je b_add

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号