您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 汇编语言实验报告——累加
《汇编语言》实验报告——累加器制作2014级计算机科学与工程学院学号:姓名一、实验要求:1.显示INPUTN:,提示用户输入数字字串2.检测输入字串的合法性,非法给出提示3.将输入数字字串转化为数值,存入变量n4.累加1~n,存入变量sum5.以十进制显示sum二、流程图:开始输入判断是否为回车判断是否为数字是转化为数值,将堆栈中的高位数字乘10然后与低位数字相加,放入堆栈否显示“error”结束否是判断cx=0否将CX加到AX中是得出sum的值将结果除以10并将余数存入堆栈,累计位数cx,直至商为0将堆栈中的数字依次输出显示,直至cx=0三、源代码:DATASSEGMENTstr1dbInputN:,$str2dbsum=,$str3db0ah,error,$ndw0sumdw0DATASENDSCODESSEGMENTASSUMECS:CODES,DS:DATASSTART:MOVAX,DATASMOVDS,AXLEAdx,str1;输出提示符movah,9int21hinput:movah,01;输入数字int21hcmpal,0dh;判断是否为回车jzstep1cmpal,0;判断字符合法性jberrorcmpal,9jaerrorsubal,0;转化为ASCII码movah,0;此段将高位乘10pushaxmovax,nshlax,1pushaxmovcl,2shlax,clmovbx,0popbxaddax,bxmovbx,0;高位与低位相加popbxaddax,bxmovn,axxorcx,cx;设定累加次数movcx,njmpinputstep1:movax,cxsubcx,1step2:addax,cx;求累加和loopstep2movsum,axleadx,str2movah,9int21hmovcx,0movax,sumstep3:movdx,0movbx,10;将结果除以10并把余数压进栈divbxpushdxinccxcmpax,0hjnzstep3step4:xorax,axpopax;栈内依次输出movdx,axadddx,30hmovah,2int21hloopstep4jmplasterror:leadx,str3;输出错误提示语movah,9int21hlast:MOVAH,4CHINT21HCODESENDSENDSTART四、实验测试截图五、实验心得:本次试验的目的在于通过编辑累加器程序来熟悉汇编语言中对循环结构的使用,其中包括循环输入字符并判断合法性、累加计算、循环输出计算结果。其中的关键点在于通过堆栈来保护和存放数据,并在多次存放后依次提出数据,要求我们能够灵活地利用堆栈与寄存器之间的转换进行较为复杂的逻辑运算。经过逐步编写和多次修改完善,终于成功地完成了本次实验。在实验过程中,我的逻辑思维能力得到加强,对分步编写和局部细化了解得更加透彻,同时对循环结构、数据输入和输出过程更加熟练,课堂上学习的知识得到了练习,掌握地更加牢固,收益匪浅。
本文标题:汇编语言实验报告——累加
链接地址:https://www.777doc.com/doc-5561921 .html