资源描述:
《汇编语言32位乘法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、assumecs:code,ds:datadatasegmentNAdw0F321H,09AFCHNBdw08818H,0301DH;-------第一个字是等待相乘的数的高16位,第二个是低十六位T1dw0,0,0T2dw0,0,0;-------32位数乘以16位数不可能大于48位,所以分配3个字Rdw0,0,0,0;-------32位数乘以32位数不可能大于64位,所以为结果分配4个字dataendscodesegmentstart:movax,datamovds,ax;-------初始化段寄存器Step1:movax,NA+2movbx,NB+2mulbxmo
2、vT1+4,axmovcx,dx;-------NumberA的低16位乘以NumberB的低十六位,结果存入T1+4;进位存入CXmovax,NAmovbx,NB+2mulbxmovT1+2,axaddT1+2,cxadcT1,dx;-------NumberA的高16位乘以NumberB的低十六位,结果存入T1+4;结果存入T1+2,将T1+2与上一次相乘的进位相加存入T1+2;将第二次相乘的进位带符号相加入T1(前一位的相加可能产生进位)Step2:movax,NA+2movbx,NBmulbxmovT2+4,axmovcx,dx;-------同理movax,NA
3、movbx,NBmulbxmovT2+2,axaddT2+2,cxadcT2,dx;-------同理SUM:movax,T1+4movR+6,axmovax,T2+4addT1+2,axmovax,T1+2movR+4,axmovax,T2+2adcT1,axmovax,T1movR+2,axmovax,T2adcR,ax;-------错位相加movax,4C00Hint21Hcodeendsendstart原理图:NANA+2×NBNB+2——————————————————T1T1+2T1+4+T2T2+2T2+4——————————————————RR+2R+4
4、R+6编写一个程序,从键盘上连续输入多个字符,遇到“$”时终止,然后以与输入相反的顺序将该字符串以大写的形式在屏幕上显示出来要求:用“先进后出”的设计思路,使用堆栈技术,结合DOS的中断调用,实现输入字符串的倒序显示CODESEGMENT;作业ASSUMECS:CODE,ds:codeorg100hSTART:pushcspopdscldleadx,msgmovah,9int21h;提示xorcx,cxt0:movah,1int21h;接收数据cmpal,'$';'$'结束程序jzshowcmpal,'a'jby1cmpal,'z'jay1subal,20h;小写转大写y
5、1:inccxpushaxjmpt0jcxzquitshow:moval,0dhinccxpushaxmoval,0ahinccxpushax;字符串倒序输出movcx,cxnext:popdxmovah,2int21hloopnextquit:movah,1int21h;等待MOVAX,4C00HINT21Hmsgdb09,'Inputastring...',0dh,0ah,'$'CODEENDSENDSTART