资源描述:
《微机原理实验1.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验一两个多位十进制数相减实验一.实验要求将两个多位十进制数相减,要求被减数,减数均以ASCII码形式按顺序存放在以DATAI和DATA2为首的5个内存单元中(低位在前),结果送回DATAI处。二、实验目的1.学习数据传送和算术运算指令的用法。2.熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。DATASEGMENTDATA1DB33H,39H,31H,37H,38H;第一个数据(作为被减数)DATA2DB36H,35H,30H,38H,32H;第二个数据(作为减数)MES1DB'-','$'MES2DB'
2、=','$'DATAENDSSTACKSEGMENT;堆栈段STADB20DUP(?)TOPEQULENGTHSTASTACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK,ES:DATASTART:MOVAX,DATAMOVDS,AXMOVES,AXMOVAX,STACKMOVSS,AXMOVAX,TOPMOVSP,AXMOVSI,OFFSETDATA1MOVBX,05CALLDISPL;显示被减数MOVAH,09HLEADX,MES1INT21HMOVSI,OFFSETDA
3、TA2MOVBX,05;显示减数CALLDISPLMOVAH,09HLEADX,MES2INT21HMOVSI,OFFSETDATA1MOVDI,OFFSETDATA2CALLSUBA;减法运算MOVSI,OFFSETDATA1MOVBX,05;显示结果CALLDISPLMOVDL,0DHMOVAH,02HINT21HMOVDL,0AHMOVAH,02HINT21HINT21HMOVAX,4C00HINT21HDISPLPROCNEAR;显示子功能DSI:MOVAH,02MOVDL,[SI+BX-1];显示字符串中一字符
4、INT21HDECBX;修改偏移量JNZDSIRETDISPLENDPSUBAPROCNEARMOVDX,SIMOVBP,DIMOVBX,05SU1:SUBBYTEPTR[SI+BX-1],30HSUBBYTEPTR[DI+BX-1],30HDECBX;将ASCII码表示的数字串JNZSU1;转化为十六进制的数字串MOVSI,DXMOVDI,BPMOVCX,05;包括进位,共5位CLC;清进单位SU2:MOVAL,[SI]MOVBL,[DI]SBBAL,BL;带进位相减AAS;非组合BCD码的减法调整MOV[SI],AL
5、;结果送被减数区INCSIINCDI;指向下一位LOOPSU2;循环MOVSI,DXMOVDI,BPMOVBX,05SU3:ADDBYTEPTR[SI+BX-1],30HADDBYTEPTR[DI+BX-1],30HDECBX;十六进制的数字串转化ASCII码表示的数字串JNZSU3RETSUBAENDPCODEENDSENDSTART实验二两个数相乘的实验一.实验要求实现十进制数的乘法,被乘数和乘数均以ASCII码形式存放在内存中,算式结果在屏幕上显示出来。二.实验目的掌握乘法指令和循环指令的用法。DATASEGMEN
6、TDATA1DB32H,39H,30H,35H,34HDATA2DB34HMES1DB'*','$'MES2DB'=','$'RESULTDB6DUP(00H)DATAENDSSTACKSEGMENTSTADB20DUP(?)TOPEQULENGTHSTASTACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK,ES:DATASTART:MOVAX,DATAMOVDS,AXMOVAX,STACKMOVSS,AXMOVSP,TOPLEASI,DATA1MOVBX,05HL1:MO
7、VAH,02HMOVDL,[SI+BX-1]INT21HDECBXJNZL1MOVAH,09HLEADX,MES1INT21HLEASI,DATA2MOVAH,02HMOVDL,[SI]INT21HMOVAH,09HLEADX,MES2INT21HMOVSI,OFFSETDATA2;显示算式MOVBL,[SI];乘数DATA2→BLANDBL,00001111B;屏蔽高4位,ASCII码转化为十六进制数MOVSI,OFFSETDATA1MOVDI,OFFSETRESULTMOVCX,05LOOP1:MOVAL,[SI]A
8、NDAL,00001111B;取被乘数DATA1,ASCII变十六进制数INCSI;指向被乘数1的下一字符单元MULBL;相乘AAM;AAM调整ADDAL,[DI];结果低位与前次计算的进位相加AAA;AAA调整MOV[DI],ALINCDI;结果送存到下一单元MOV[DI],AHLOOPLOOP1;计算结果高位进位