微机原理实验一__两个多位十进制数相加实验试做报告.doc_第1页
微机原理实验一__两个多位十进制数相加实验试做报告.doc_第2页
微机原理实验一__两个多位十进制数相加实验试做报告.doc_第3页
微机原理实验一__两个多位十进制数相加实验试做报告.doc_第4页
微机原理实验一__两个多位十进制数相加实验试做报告.doc_第5页
全文预览已结束

下载本文档

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

文档简介

实验一 两个多位十进制数相加实验试做报告【实验目的】1熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序的过程。2熟悉和掌握用DEBUG调试程序的方法。【实验性质】验证性实验(学时数:3H)。【实验内容】将两个多位十制数相加,要求加数和被加数均以ASCII码形式各自顺序存放在以DATAl和DATA2为首的5个内存单元中(低位在前),结果送回DATAl处。【实验说明】汇编语言没有十进制加法指令,ADD/ADC加法指令的运算对象是二进制数,如果要进行BCD码数的加法,需要对结果进行修正。组合BCD码的加法调整指令为DAA,它针对AL寄存器中的组合BCD码数之和进行修正。对于未组合BCD码的加法调整指令为AAA(加法的ASCII码调整指令),它将存于AL寄存器中的一位ASCII码数加法运算的结果调整为一位拆开型十进制数,仍保留在AL中,如果向高位有进位(AF=1),则进到AH中。对于多字节的ASCII码相加,只能从最低位开始逐个字节地进行加法操作,并随即进行调整。参考程序清单(WJSY0.ASM):DATASEGMENTDATA1DB 33H,39H,31H,37H,34HDATA2DB 36H,35H,30H,38H,32HDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AXMOV CX,5;计数MOV SI,0;做指针用,因从DATA1的第一个数取数,故SI=0CLCNEXT:MOV AL,DATA1SI;取被加数给ALADC AL,DATA2SI;取加数和AL相加AAA;未组合十进制数加法调整指令MOV DATA1SI,AL;结果回送至DATA1处INC SI;修改SI指向下一位数 LOOP NEXTMOV SI,5;因显示是从高位到低位,故SI=5L: ADD DATA1SI-1,30H;还原成ASCII码 MOV DL,DATA1SI-1 MOV AH,02;送显示 INT 21H DEC SI JNZ L MOV AH,4CH;返回DOS INT 21HCODEENDS END START运行结果:75249上述程序有很多不方便的地方,比如加数和被加数以低字节在前高字节在后顺序存放在内存单元中,不符合我们日常的习惯,如果改为高字节在前低字节在后的形式存放数据,程序如何改变?程序只显示了相加结果,没有显示加数和被加数,如果要求显示加数和被加数,程序如何修改?如果按47193+28056=75249格式显示,程序如何修改?程序清单(WJSY1.ASM):DATASEGMENTDATA1DB 34H,37H,31H,39H,33H;高位在前低位在后DATA2DB 32H,38H,30H,35H,36HDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AXMOV SI,5;做加法是从低位开始加,故 SI=5CLCNEXT:MOV AL,DATA1SI-1;取被加数给ALADC AL,DATA2SI-1;取加数和AL相加AAA;未组合十进制数加法调整指令MOV DATA1SI-1,AL;结果回送至DATA1处DEC SI;修改SI指向下一位数 JNZ NEXTL: ADD DATA1SI,30H;还原成ASCII码 MOV DL,DATA1SI MOV AH,02;送显示 INT 21H INC SICMP SI,5 JNZ L MOV AH,4CH;返回DOS INT 21HCODEENDS END START运行结果:75249程序清单(WJSY2.ASM):DISP MACRO ;回车换行宏定义MOV AH,2MOV DL,0DHINT 21H MOV AH,2MOV DL,0AHINT 21HENDMDATASEGMENTDATA1DB 34H,37H,31H,39H,33HDATA2DB 32H,38H,30H,35H,36HDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV SI,OFFSET DATA1 CALL DISPL;调显示子程序显示被加数DISP;宏调用,回车换行MOV SI,OFFSET DATA2CALL DISPL;调显示子程序显示加数DISP;宏调用,回车换行MOV SI,5CLCNEXT:MOV AL,DATA1SI-1ADC AL,DATA2SI-1;做加法AAAMOV DATA1SI-1,ALDEC SI JNZ NEXTL:ADD DATA1SI,30H;还原为ASCII码MOV DL,DATA1SIMOV AH,02;送显示INT 21HINC SICMP SI,5 JNZ LMOV AH,4CHINT 21HDISPL PROC;显示子程序MOV BX,0 D1:MOV DL,SI+BXMOV AH,2INT 21HINC BXCMP BX,5JNZ D1RETDISPLENDPCODEENDSEND START运行结果:471932805675249程序清单(wjsy3a.asm)DISP MACRO M;显示运算符宏定义MOV AH,2MOV DL,MINT 21HENDMDATASEGMENTDATA1DB 34H,37H,31H,39H,33HDATA2DB 32H,38H,30H,35H,36HDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AXMOV SI,OFFSET DATA1CALL DISPL;调显示子程序显示被加数DISP +;宏调用显示“+”MOV SI,OFFSET DATA2CALL DISPL;调显示子程序显示加数DISP =;宏调用显示“=”MOV SI,5CLCNEXT:MOV AL,DATA1SI-1ADC AL,DATA2SI-1AAAMOV DATA1SI-1,ALDEC SI JNZ NEXTL:ADD DATA1SI,30HMOV DL,DATA1SIMOV AH,02INT 21HINC SICMP SI,5 JN

温馨提示

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

评论

0/150

提交评论