您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 汇编语言实现2个任意数相加
DATASSEGMENTXDB100DUP(?)YDB100DUP(?)ZDB100DUP(?),'$';此处输入数据段代码DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXMOVBX,0DATAX:MOVAH,01H;01回显,将数据存放在AL中INT21HCMPAL,'+';+与输入的数据相减是否为0,即用“+作为X的结束标志”JZA1;判断,为0时,跳转A1,不为0,执行下一条语句PUSHAX;将AX整个16位(包括AH,AL)一起进栈INCBX;计数JMPDATAX;循环将X的每个位依次输入A1:MOVCX,BXMOVSI,0A11:POPAX;将AX内的数据出栈MOVX[SI],AL;将AL的数据保存到X段中INCSILOOPA11;依次循环保存MOVBX,0DATAY:MOVAH,01HINT21HCMPAL,'='JZA2PUSHAXINCBXJMPDATAYA2:MOVCX,BXMOVSI,0A12:POPAXMOVY[SI],ALINCSILOOPA12;同理,此处是以=作为Y值的结束标志,输入Y值并保存在Y段RESULT:CLCPUSHF;CF先进栈MOVCX,100MOVSI,0MOVDI,99A3:MOVAL,X[SI];将X段数据放在AL中MOVDL,Y[SI];将X段数据放在DL中POPFADCAL,DL;考虑进位运算,AL+DL+CFAAAPUSHFADDAL,30H;转换成ASCII码MOVZ[DI],AL;将结果从第99位倒着保存到Z段中INCSIDECDILOOPA3;依次循环将结果保存到Z段MOVSI,0A4:CMPZ[SI],30HJNZA5INCSIJMPA4;从第0位开始判断,看Z[SI]中的数据是否为0A5:LEADX,Z[SI]MOVAH,09H;直到不为0的数据那一位是开始显示到第99位INT21HMOVAH,4CHINT21HCODESENDSENDST
本文标题:汇编语言实现2个任意数相加
链接地址:https://www.777doc.com/doc-5102140 .html