实验一、两个多位十进制数相加的实验1、实验目的(1).学习数据传送和算术运算指令的用法。(2).熟悉在PC机上建立、汇编、链接、调试和运行8088汇编语言程序的过程。2、实验内容将两个多位十进制数相加。要求被加数均以ASCII码形式各自顺序存放在以DATAl和DATA2为首的5个内存单元中(低位在前),结果送回DATAl处。3、程序框图4、参考程序:DATASEGMENTDATA1DB33H,39H,31H,37H,34H;第一个数据(作为被加数)DATA2DB36H,35H,30H,38H,32H;第二个数据(作为加数)DATAENDSSTACKSEGMENTSTACK'STACK';堆栈段STADB32DUP(?)TOPEQULENGTHSTASTACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVAX,STACKMOVSS,AXMOVAX,TOPMOVSP,AXMOVSI,OFFSETDATA2MOVBX,05CALLDISPL;显示被加数CALLCRLF;回车、换行MOVSI,OFFSETDATA1MOVBX,05;显示加数CALLDISPLCALLCRLF;回车、换行MOVDI,OFFSETDATA2CALLADDA;加法运算MOVSI,OFFSETDATA1MOVBX,05;显示结果CALLDISPLCALLCRLFMOVAX,4C00HINT21HCRLFPROCNEAR;回车、换行于功能MOVDL,0DH;回车MOVAH,02HINT21HMOVDL,0AH;换行MOVAH,02HINT21HRETCRLFENDPDISPLPROCNEAR;显示于功能DSL:MOVAH,02MOVDL,[SI+BX-1];显示字符串中一字符INT21H;DECBX;修改偏移量JNZDSLRETDISPLENDPADDAPROCNEARMOVDX,SIMOVBP,DIMOVBX,05ADI:SUBBYTEPTR[SI+BX-1],30HSUBBYTEPTR[DI+BX-1],30HDECBX;将ASCII码表示的数字串转化为十六进制串JNZADIMOVSI,DXMOVDI,BPMOVCX,05;包括进位,共5位CLC;清进位位AD2:MOVAL,[SI]MOVBL,[DI]ADCAL,BL;带进位相力口AAA;非组合BCD码的加法调整MOV[SI],AL;结果送被加数区INCSIINCDI;指向下一位LOOPAD2;循环MOVSI,DXMOVDI,BPMOVBX,05HAD3:ADDBYTEPTR[SI+BX-1],30HADDBYTEPTR[DI+BX-1],30HDECBX;十六进制的数字串转化为ASCll码表示的串JNZAD3RETADDAENDPCODEENDSENDSTART