资源描述:
《多位十进制乘法汇编》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、****************************************************************************两个任意位数的十进制数相乘****************************************************************************.modelsmall;定义存储单元.stack10h;定义堆栈段.data;定义数据段p1db'Pleaseinputthefirstnumber:$'p2db'Pleaseinputthesecondnumber:$'p3d
2、b'hereistheresult:$'xdb20dup(?);定义乘数ydb20dup(?);定义被乘数zdb?resultdb40dup(?);定义结果countdw?idb?jdb?----------------------------------------------------------------------------inputmacroopr;输入乘数、被乘数的宏定义locala1locala2localovermovax,@datamovds,axleasi,opra1:;判断输入是否为0-9的整数,把输入的十进制数转换成二进制
3、数movah,1int21hcmpal,0dhjeovercmpal,'0';判断al中的ascci码,如果小于'0',则输入不在正确的范围内,退出jlovercmpal,'9';同上,判断al中的Ascci码,如果大于'9',退出jgoversubal,30h;ASCII码转换成二进制数movdi,siadddi,18da2:;先输入的数向后移movbx,ds:[di]movds:[di+1],bxdecdicmpdi,sijgea2movds:[si],al;保存进opr中的最低位jmpa1;跳转到a1over:callcrlf;调用回车换行子程序
4、endm---------------------------------------------------------------------------multiplemacroopr1,opr2,opr3leasi,opr3movcount,si;取opr3的地址leasi,opr1;取opr1的地址leadi,opr2;去opr2的地址movi,0movj,0a5:;有进位的数位上的计算pushsipushdimovbh,0movbl,iaddsi,bxmovbl,jadddi,bxmoval,ds:[si];取乘数的一个数位上的数movbl
5、,ds:[di]movah,0mulblaammovz,ah;把进位保存到z中movsi,countmovbh,0movbl,iaddsi,bxmovbl,jaddsi,bxmovbl,ds:[si];取result对应数位上的原有值movah,0addal,blaaaaddz,ah;进位相加movds:[si],al;保存结果a4:movax,0incsimovbl,ds:[si]moval,zaddal,blaaamovds:[si],al;结果保存到result中cmpah,0jen2;如果无进位,则跳到n2movz,ahjmpa4n2:popd
6、ipopsiincjcmpj,20jgen3jmpshorta5;j循环n3:movj,0incicmpi,20jgeover2jmpshorta5;i循环over2:endm----------------------------------------------------------------------------.code;定义代码段mainprocfarmovx,0movy,0movresult,0movax,@datamovds,axleadx,p1movah,9int21hcallcrlfinputx;输入乘数callcrlf;按回
7、车leadx,p2movah,9int21hcallcrlfinputy;输入被乘数callcrlf;按回车multiplex,y,result;两数相乘callcrlf;按回车leadx,p3movah,9int21hcalloutput;输出结果callcrlfretmainendp------------------------------------------------------------------------------outputprocnearleadi,result;取result的首地址赋给dimovsi,di;取resul
8、t的首地址赋给siaddsi,40da3:decsi;si地址减1cmpdi,sijen1;如