多位十进制数加法器实验

上传人:re****.1 文档编号:562781904 上传时间:2023-04-27 格式:DOCX 页数:4 大小:14.60KB
返回 下载 相关 举报
多位十进制数加法器实验_第1页
第1页 / 共4页
多位十进制数加法器实验_第2页
第2页 / 共4页
多位十进制数加法器实验_第3页
第3页 / 共4页
多位十进制数加法器实验_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

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

1、实验三 多位十进制数加法器设计1、实验目的(1)继续熟练掌握在 PC 机上建立、汇编、链接、调试和运行 8088 汇编语言 程序的过程;(2)学习数据传送和算术运算指令的用法;(3)掌握子程序设计方法;(4)掌握宏汇编设计方法;(5)掌握键盘输出的DOS功能调用方法。2、实验内容(1)将两个多位十进制数相加。要求被加数、加数均以 ASCII 码形式各自 按高位高地址的规律分别顺序存放在以DATA1和DATA2为首的5个内存单元中 (低位在前),结果送回结果变量DATA3处,并屏幕显示结果。(2)在以上程序基础上,设计一个多位十进制数加法器,键盘输入十进制 加数和被加数,将输入和输出结果以竖式形

2、式显示在屏幕。3、提示:(1)算法说明:以42136与1254 7相加为例,首先将两个数中的 每一位都以ASCI I码存入相应的内存单元,然后将每一位数都减去30H, 并将被加数DATA1和加数DATA2相对应位相加(BCD码加法及其十进制调整, 要考虑低位向高位的进位),存入相应的结果 DATA3 存储单元中,最后将该单元 中的每一位数转换成相应的ASCI I码,调用DOS系统功能调用的显示字符 指令,显示两数相加的结果。( 2)部分程序代码:DATA SEGMENT;数据段;补充必要的代码,定义被加数、加数和结果变量DATA ENDSSTACK SEGMENT STACK;堆栈段STA D

3、B 64 DUP(0)SP_TOP DB 0 STACK ENDSCODE SEGMENT; 代码段.;补充必要的代码;显示回车换行功能用宏定义CRLF实现,放在代码段最前面CRLFMACROMOVDL,0DH;回车(0DH为回车的ASCII码)MOVAH,02H; 送 DOS 的中断调用功能号INT21H; DOS 的中断调用.;补充必要的代码:用DOS功能调用实现换行,0AH为换行的ASCII码ENDMSTART:.; 补充必要的代码:程序开头必须要有的五条指令; 显示被加数,并回车换行MOVBX, OFFSET DATA1MOVSI, 05CALLDISPL; 显示被加数, DISPL

4、为显示子程序CRLF; 回车、换行宏调用; 补充必要的代码,显示加数CALLADDA;调用加法运算子程序; 补充必要的代码,显示结果; 补充必要的代码:回车、换行.; 补充必要代码:主程序结束,返回 DOS;DISPL 为字符串显示子程序DISPLDSL:PROC NEAR; 子程序定义MOV AH,02; 送显示功能号MOV DL,BX+SI-1 ; 显示字符串中一字符INT21H; DOS INT 21 功能调用DECSI;修改偏移量JNZDSLRETDISPLENDP; 多位数加法子程序ADDAPROC NEAR.;需要自编的求和核心程序RETADDAENDP;代码段与程序结束CODEE

5、NDSEND START(3) 加法器的设计:需要用到字符串输入和字符串输出的DOS功能调用。回撤换行的 ASCII 码分别是 0DH, 0AH i. 0AH 功能输入:STR1 DB 6, ?, 6 DUP(20H);存放键盘输入的被加数,最多5位数+1位结束符回车符0DHSTR2 DB 6, ?, 6 DUP(20H); 存放键盘输入的加数 STR3 DB 10, DUP(20H), $LEADX,STR1MOVAH,OAHINT21HCRLFLEADX,STR1MOVAH,OAHINT21Hii. 09H 功能输出:把加数与被加数从低位到高位按位相加后,若结果的由高位到低位的 ASCII

6、 存入了STR3,则LEADX,STR3MOVAH,O9HINT21H执行后,结果可显示在当前光标出。注意竖式显示的时候,要对齐。4实验及报告要求:1) 要求画出完整的程序流程图。2) 根据流程图和部分提示代码,编写完整的汇编代码源文件(特别是以上红字 部分),并存入合适目录,要求补充写出所有未注释的伪指令和指令的注释;3) 编译、连接生成可执行文件,分别在debug和Emu8086下调试该可执 行文件,给出程序运行时的各段地址(CS=?,DS=?SS=?ES =?)及两个子程序入口的IP;试改变加数和被加数,如何从内存中观察结 果的变化?总结子程序格式及其调用方法;结合本程序说明宏调用与子程

7、序 的区别。4) 写出完整的实验报告,特别是“实验结果”与“实验总结体会”部分,是评 分的主要依据。5) 实验总结中要求结合实验中的经验、教训或体会对汇编语言格式、调试方法、 汇编指令及汇编语言编程方法、微机原理学习方法作出总结。5.思考题1)在键盘上输入一个字符或数字,要求:对十六进制数字(由0 9, AF 或af组成),显示该数字的十进制值;当输入值为Q时结束程序,对其他输 入提示输入不合法。画出程序流程图并请写出完整程序代码。(必做)2)请问你的程序能否处理加数和被加数都介于065535范围但计算结果超 出该范围的情况? 如何改进?3)加数或被加数为负数,结果是否正确,输出格式上作何处理?

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

当前位置:首页 > 学术论文 > 其它学术论文

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