汇编语言实现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

1 / 3
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功