资源描述:
《两个多位十进制数相加的实验.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、学生实验报告(2010—学年第学期)课程名称:微型计算机原理与接口技术开课实验室:2011年月日年级、专业、班学号姓名成绩实验项目名称两个多位十进制数相加的实验指导教师教师评语教师签名:年月日注:报告内容按实验须知中几点要求进行。一、实验目的1、学习数据传送和算术运算指令的用法。2、熟悉在PC机上建立、汇编、链接、调试和运行8088汇编语言程序的过程。3、学会PC机得安装4、认识编程过程二、实验原理及基本技术路线图或实验内容(方框原理图或程序流程图)将两个多位十进制数相加。要求被加数均以ASCII码形式
2、各自顺序存放在以DATA1和DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。-6-程序框图三、所用软件-6-四、实验步骤整个程序分为4个部分:显示加数、转换、相加、输出结果。五、源码程序编制及分析注释CRLFMACRO;宏定义指令(回车执行程序)MOVDL,0DH;回车MOVAH,02H;2号调用,显示回车INT21HMOVDL,0AH;换行MOVAH,02H;2号调用换行INT21HENDM;宏指令定义结束DATASEGMENT;数据段定义DATA1DB33H,39H,31H,37H
3、,34H;第一个数据(作为加数)47193DATA2DB36H,35H,30H,38H,32H;第二个数据(作为被加数)28056DATAENDS;数据段定义结束STACKSEGMENT;堆栈段定义STADB20DUP(?);定义从STA开始20个单元作为堆栈使用TOPEQULENGTHSTA;TOP等于堆栈单元数-6-STACKENDSCODESEGMENT;代码段定义ASSUMECS:CODE,DS:DATA,SS:STACK,ES:DATASTART:MOVAX,DATAMOVDS,AX;设置数据
4、段MOVAX,STACKMOVSS,AX;设置堆栈段MOVAX,TOPMOVSP,AXMOVSI,OFFSETDATA2;DATA2的偏移地址送SIMOVBX,05;计数次数为5次CALLDISPL;调用多次显示子程序DISPL(显示28056)CRLF;回车换行MOVSI,OFFSETDATA1;DATA1的偏移地址送SIMOVBX,05;计数次数为5次CALLDISPL;调用多次显示子程序DISPL(显示47193)CRLF;回车换行MOVDI,OFFSETDATA2CALLADDA;使用加法运算程
5、序MOVSI,OFFSETDATA1;将和显示在屏幕上MOVBX,05;显示结束CALLDISPL;调用多次显示子程序DISPLCRLF;执行回车换行程序MOVAX,4C00H;返回系统提示符INT21HDISPLPROCNEAR;多次显示子程序DS1:MOVAH,02;显示功能号MOVDL,[SI+BX-1];显示字符串中一字符INT21H;DOS的中断调用DECBX;BX减1,修改偏移量-6-JNZDS1;如果BX未减到零跳到DSL执行指令RET;返回DISPLENDP;完成显示功能子程序定义ADD
6、APROCNEAR;实行加法运算子程序定义、属性为NEARMOVDX,SIMOVBP,DIMOVBX,05;转换5次AD1:SUBBYTEPTR[SI+BX-1],30H;把加数的ASCLL转换为16进制SUBBYTEPTR[DI+BX-1],30H;把被加数的ASCLL转换为16进制DECBX;修改偏移量JNZAD1MOVSI,DXMOVDI,BPMOVCX,05;包括进位,共5位CLC;清进位AD2:MOVAL,[SI]MOVBL,[DI]ADCAL,BL;进行代进位加法AAA;非组合BCD码的加法
7、调整MOV[SI],AL;结果送被加数区INCSIINCDI;指向下一位LOOPAD2;循环MOVSI,DXMOVDI,BPMOVBX,05AD3:ADDBYTEPTR[SI+BX-1],30HADDBYTEPTR[DI+BX-1],30HDECBX;十六进制的数字串转化JNZAD3-6-RETADDAENDP;加法程序结束CODEENDS;代码段结束ENDSTART;整个程序结束五、实验结果六、心得体会通过这次实验让我对这个软件的编程有了更深的了解、知道如何安装这个软件、怎样运行程序。让我学到了很多课
8、本是学不到的东西,有一点意外收获的感觉。-6-