汇编判断闰年实习报告.doc

汇编判断闰年实习报告.doc

ID:58631726

大小:43.00 KB

页数:5页

时间:2020-10-17

汇编判断闰年实习报告.doc_第1页
汇编判断闰年实习报告.doc_第2页
汇编判断闰年实习报告.doc_第3页
汇编判断闰年实习报告.doc_第4页
汇编判断闰年实习报告.doc_第5页
资源描述:

《汇编判断闰年实习报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1.实验题目编写一个判断闰年的汇编语言程序,判断某个年份是否是闰年,如果是,输出“yes!”;如果不是,则输出“No!”。2.实验目的1)学习汇编基本程序结构(顺序、分支、循环)编程;2)学习int21h的01h,09h,0ah号功能;3)学习如何用堆栈方法解决实际问题。3.实验步骤1)根据题意,程序启动运行之后,用户在键盘上输入判断的年份,输出判断的结果。所以,程序主要结构应如下:接收在键盘上输入的年份字符串,存储在缓冲区year;将缓冲区中的年份转换成10进制数赋给变量yeard;判断变量y

2、eard是否满足闰年的条件;输出判断的结果。2)首先,定义数据段。数据段包括输入判断闰年年份提示,判断是否结束程序的提示,输入字符串的缓冲区(其中定义了允许输入的最大字节数,实际输入的个数,实际字符串存储的缓冲区大小),闰年和非闰年的判断提示,缓冲区的偏移量,十进制形式存储的变量yeard;3)定义堆栈段,由于判断闰年时会改变yeard的数值,所以定义200个字节的堆栈空间供程序使用;4)接下来进入代码段的实现,从程序结构上看,用INT21H的09号功能输出输入判断闰年年份的提示,用INT21H

3、的10号功能输入年份字符串,将字符串存储在缓冲区year中;1)定义最大输入的字符个数为5(包括回车),用循环again1将year转化为十进制数存入变量yeard中;a)设置最大循环次数为4,初始字符串偏移量i为2,年份变量yeard为0;b)首先将ax寄存器置0,然后将year的首地址赋给si,再将si加上偏移量i用寄存器间接寻址方式将si存储的字符赋给al;c)将ax中存放的字符减去30h转化为十进制数值,把该数值加到年份变量yeard中,然后bx清0,将实际输入的个数存入bl中,将偏移量

4、i与bx+1作比较(判断是否读到year的最后一个有效字符),是,跳出循环again1,否,继续下一步;d)将ax中的数值乘以10再赋给yeard,然后i自增1,回到b。2)判断yeard是否为闰年,是,输出“yes!”,否则输出“No!”;a)将存有十进制形式的年份ax的数值压入栈中,然后与4进行整除运算,判断其余数是否为0。是,则进行下一步;否,跳到e;b)将栈中的数值出栈赋给寄存器ax,再ax的数值压入栈中,然后与100进行整除运算,判断其余数是否为0。是,则进行下一步;否,跳到d;c)将

5、栈中的数值出栈赋给寄存器ax,然后与100进行整除运算,判断其余数是否为0。是,则进行下一步;否,跳到e;d)输出提示“yes!”;跳到步骤7;e)输出提示“No!”;3)输出提示“Continue?(n)”,若想结束程序则按‘N’/’n’,否则按其他任意键。源程序代码datasegmentoutputdb'Inputtheyear:','$'judgedb13,10,'Continue?(n)',13,10,'$'yeardb5;允许输入的最大字节数db?;实际输入的个数db5dup(?),'

6、$';实际字符串存储的缓冲区judge1db'yes!','$'judge2db'no!','$'idw?;缓冲区的偏移量yearddw0;10进制数形式的年份entdb13,10,'$'dataendsstacksegmentdb200dup(0)stackendscodesegmentassumecs:code,ss:stack,ds:datastart:movax,data;初始段寄存器movds,axcontinue:leadx,output;在屏幕上输出输入提示movah,09hint

7、21hleadx,year;从键盘输入输入年份字符串movah,0ahint21hleadx,ent;换行movah,09hint21hmovcx,4;设置最大循环次数movi,2;取输入年份缓冲区字符串的偏移量movyeard,0;年份置0again1:movax,0leasi,yearaddsi,imoval,[si]subax,30h;将字符转化为10进制addax,yeardmovbx,0movbl,year[1];将实际输入的个数赋给bl寄存器addbx,1;计算出需要处理数据的次数c

8、mpi,bxjeover1movdx,0movbx,10mulbxmovyeard,axinciloopagain1over1:pushax;将ax压栈movdx,0movbx,4;将年份yeard与4整除divbxcmpdx,0jnenotleappopax;将ax出栈pushax;将ax压栈movdx,0movbx,100;将年份yeard与100整除divbxcmpdx,0jneisleappopax;将ax出栈movdx,0movbx,400;将年份yeard与400整除divbxcmp

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。