多位十进制数加法器设计

上传人:自*** 文档编号:79768215 上传时间:2019-02-17 格式:DOC 页数:16 大小:695.50KB
返回 下载 相关 举报
多位十进制数加法器设计_第1页
第1页 / 共16页
多位十进制数加法器设计_第2页
第2页 / 共16页
多位十进制数加法器设计_第3页
第3页 / 共16页
多位十进制数加法器设计_第4页
第4页 / 共16页
多位十进制数加法器设计_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《多位十进制数加法器设计》由会员分享,可在线阅读,更多相关《多位十进制数加法器设计(16页珍藏版)》请在金锄头文库上搜索。

1、深 圳 大 学 实 验 报 告 课程名称: 微机原理及应用实验 实验项目名称: 多位十进制数加法器设计 学院: 物理科学与技术学院 专业: 应用物理 指导教师: 报告人: 学号: 班级: 应用物理班 实验时间: 2015-10-19 实验报告提交时间: 2015-11-02 教务处制一、 实验名称: 多位十进制数加法器设计二、实验目的(1)继续熟练掌握在PC机上建立、汇编、链接、调试和运行8088汇编语言程序的过程; (2)学习数据传送和算术运算指令的用法; (3)掌握子程序设计方法; (4)掌握宏汇编设计方法; (5)掌握键盘输出的DOS功能调用方法。三、实验内容(1)将两个多位十进制数相加

2、。要求被加数、加数均以ASCII码形式各自按高位高地址的规律分别顺序存放在以DATAl和DATA2为首的5个内存单元中(低位在前),结果送回结果变量DATA3处,并屏幕显示结果。(2)在以上程序基础上,设计一个多位十进制数加法器,键盘输入十进制加数和被加数,将输入和输出结果以竖式形式显示在屏幕。四、实验任务分析与算法分析(软件实验)或实验电路及连线(硬件实验)实验及报告要求:)要求画出完整的程序流程图。)根据流程图和部分提示代码,编写完整的汇编代码源文件(特别是以上红字部分),并存入合适目录,要求补充写出所有未注释的伪指令和指令的注释;)编译、连接生成可执行文件,分别在和Emu8086下调试该

3、可执行文件,给出程序运行时的各段地址(?,?)及两个子程序入口的IP; 试改变加数和被加数,如何从内存中观察结果的变化?总结子程序格式及其调用方法;结合本程序说明宏调用与子程序的区别。)写出完整的实验报告,特别是“实验结果”与“实验总结体会”部分,是评分的主要依据。)实验总结中要求结合实验中的经验、教训或体会对汇编语言格式、调试方法、汇编指令及汇编语言编程方法、微机原理学习方法作出总结。实验任务1. 将两个多位十进制数相加。要求被加数、加数均以ASCII码形式各自按高位高地址的规律分别顺序存放在以DATAl和DATA2为首的5个内存单元中(低位在前),结果送回结果变量DATA3处,并屏幕显示结

4、果。算法分析: 定义两个加数,并分别存至两个变量之中;分别取变量中的对应万千百十个位上的数,由ASCII码转换成数值后,对应位相加(使用带进位的加法命令),得到的数值保存至结果变量的对应位上,并调用DOS屏幕显示字符功能显示。功能:将被加数和加数分别显示,接着运行加法运算,然后将结果显示出来。算法说明: 定义数据段:定义被加数和加数,且要使其用ASCII码以十六进制之间的转换; 定义堆栈段,并给SP_TOP单元赋初值0; 定义代码段,并将源代码放在里面首先,编写主程序;接着,编写显示、回车换行和加法运算的子程序。程序结束。所用到的寄存:AX、SS、CS、DS、ES、SI、SP、DI五、程序说明

5、(预习)六、源程序清单及其每句的注释1.没有键盘录入的源程序CRLF MACRO ;回车换行宏定义 MOV AH,02 MOV DL,0DH INT 21H MOV AH,02 MOV DL,0AH INT 21H ENDM DATA SEGMENT ; 数据段DATA1 DB 35H,34H,33H,32H,35H ;代表12345 DATA2 DB 30H,32H,34H,36H,38H ;代表86420DATA3 DB 6 DUP(0), $ CARY DB 0 DATA ENDSSTACK SEGMENT STACK ; 堆栈段 STA DB 64 DUP(0)STACK_TOP DB

6、 0STACK ENDSCODE SEGMENT ; 代码段 ASSUME CS:CODE , DS:DATA , ES:DATA , SS:STACK START: ; 程序开头必须要有的五条指令 MOV AX, DATA MOV DS, AX ; 设置数据段 MOV AX, STACK MOV SS, AX ; 设置堆栈段 LEA SP, STACK_TOP ; 设置栈顶指针;- ; 程序的中间部分 LEA BX,DATA1 ;加数1送至BX,传至子程序DISP的形参 CALL DISP ;调用显示字符串子程序,将第一个加数显示到屏幕 LEA BX,DATA2 ;加数2送至BX,传至子程序

7、DISP的形参 CALL DISP ;调用显示字符串子程序,将第一个加数显示到屏幕 LEA BX, DATA1 ;加数1送至BX MOV SI,0 ;定义指针SI依次指向变量单元的下一个数据,相当指针 MOV CX,5 ;设置循环次数5NEXT1: SUB BYTE PTR BXSI,30H ;将BX里面的对应存储单元的字符串ASCII码转换为对应二进制 INC SI ;指针自加一 LOOP NEXT1 ;循环执行 LEA BX, DATA2 ;加数1送至BX MOV SI,0 ;定义指针SI依次指向变量单元的下一个数据,相当指针 MOV CX,5 ;设置循环次数5NEXT2: SUB BYT

8、E PTR BXSI,30H ;将BX里面的对应存储单元的字符串ASCII码转换为对应二进制 INC SI ;指针自加一 LOOP NEXT2 ;循环执行 CLC ;清屏 CALL ADDC ;调用加法子程序 LEA DX, DATA3 ;调用DOS功能09号,显示字符串,把最终结果显示到屏幕上 MOV AH,9 INT 21H ;- ; 程序结束必须要有的两条指令 MOV AX, 4C00H ; INT 21H ; ;- ;显示字符串子程序DISP PROC ; 子程序定义 MOV SI,5 DSP: MOV AH, 2 ; 送显示功能号 MOV DL,BX+SI-1 ; 显示字符串中一字符

9、 INT 21H ; DOS INT 21 功能调用 DEC SI ;修改偏移量 CMP SI,0 JNZ DSP CRLF ;宏调用 RETDISP ENDP;加法子程序ADDC PROC ; 子程序定义 LEA SI,DATA1 ;加数1有效偏移地址送至SI LEA DI,DATA2 ;加数2有效偏移地址送至DI LEA BX, DATA3 ;结果变量的基地址送至BX ADD BX,5 ;设置相加次数 MOV CX,5 ;设置循环次数 AD: MOV AL,BYTE PTRSI ;指针SI指向的内存单元的内容转换类型属性送至AL ADC AL,BYTE PTRDI ;指针SI指向的内存单元的内容转换类型属性相加后送至AL AAA ;加法十进制调整 JC SETCARY ;判断是否进位,是跳至SETCARY MOV CARY,0 ;否,进位变量置0 JMP NEXT ;无条件跳转NEXT SETCARY:MOV CARY,1 ;进位变量置1 NEXT: ADD AL,30H ;AL中数据进行ASCII码调整 MOV BYTE PTR BX,AL ;将得到的AL最终结果送至BX基地址对应的内存区

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 毕业论文

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