资源描述:
《计算机组成原理实验题》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、一.这是一个判断某一年是否为润年的程序,运行可执行程序lfleap.exe后,输入具体的年份,可输岀是本年是否为闰年的提示信息。DATASEGMENT;定义数据段INFONDBODH,OAH,'PLEASEINPUTAYEAR:$';声明空间存储输入提示信息,其屮0d回车,0a换行YDBODH,OAH,'THISISALEAPYEAR!$';声明空间存储是闰年提示信息,同上另起一行输出NDBODH,OAH/THISISNOTALEAPYEAR!$';声明空间存储不是闰年提示信息,M上另起一行输出WDW0;声明空间
2、存储输入年份解析后生成的年份数字BUFDB8DB?DB8DUP(?);声明空间作为缓冲区,总共10个字节,第一个表示准备接受的字DATAENDSSTACKSEGMENTSTACKDB200DUP(O)STACKENDS;定义一个栈,200字节CODESEGMENTASSUMEDS:DATA,SS:STACK,CS:CODESTART:MOVAX,DATAMOVDSZAX;指定堆栈LEADX,INFON;在屏幕上显示提示信息MOVAH,9INT21H;将infon开始的字符率输出到屏幕LEADX,BUF;从键盘输入
3、年份字符串MOVAH,10INT21HMOVCL,[BUF+1]LEADI,BUF+2CALLDATACATECALLIFYEARS;获取实际输入氏度;获取字符串酋地址;调用子程序,将输入字符中传化为年份数字;调用子程序,判断是否闰年JCA1;如果进位标记C为1则跳转到alLEADX,N;否则输出不是闰年信息MOVAH,9INT21HJMPEXITAl:LEADX,YMOVAH,9INT21HEXIT:MOVAH,4CHINT21H;输出是闽年信,&;程汴结朿DATACATEPROCNEAR;PUSHCX;DEC
4、CX;指明该子程序在主程序段内;备份LEASI,BUF+2;将buf中第一个字符(即buf的第三个字节数据)的地址赋给siTT1:INCSI;循环,使得si指向®后一个字符(即buf中回车符前面的一个)LOOPTT1;LEASI,CX[DI]POPCX;回复〔乂MOVDH,30H;辅助数据,用来将数字字符对应的ASCII码转换为其代表的数字本身MOVBL,1O;辅助数据,用來在每进一位时使得ax乘以10MOVAX,1;ax用來装对应位的权值LI:PUSHAX;备份axSUBBYTEPTR[SI],DH;将单个字符
5、转换为对应的数字MULBYTEPTR[SI];将单个字符转换为对应的数字ADDWZAX;加到结果上(易知当所有位都加完时,即是我们想要的年份数字)POPAX;恢复axMULBL;权值乘以10DECSI;si指向更高一位数字LOOPL1RET;子程序返回DATACATEENDPIFYEARSPROCNEAR指明该子程序段在主程序段内,该子程序用于检测是否是闰年,接收年份数据,改变C标记位表示不M结果pushbx;备份bxb.pushex;备份cx,下面ex用于存储原始年份数据3.pushdx癱备份dx,下而dx用于
6、存储除法余数4.movax,[w]J获取年份数据5.会改变movcx^ax;将年份数据备份到ex,因为后面做除法时ax值将6.0movdx^0;因为被除数要为32字节,髙位在dx,本程序中为7.movbx,100;这三行判断是否能被100整除8.divbx9.empdx3010.jnzlabl;若不能被100整除,跳转到labl11.movax>ex;否则判断能否被400整除12.movbx)40013.divbx14.empdx,015.jzlab2;若能表示是闰年,跳转到lab216.clc;否则不是闰年,将
7、C标记位淸零,并跳转到lab317.jmplab318.labl:movax>ex;不能被100整除时跳转到此处,进一步判断能否被4整除19.movdx,020.movbxj21.divbx22.empdx.,023.jzlab2;若不能被100整除但能能被4整除是闰年,跳转到lab224.clc;若不能被100幣除也不能被4幣除不是闰年,将c标志位0,并跳转到lab325.jmpLab326.lab2:stc;若是闰年跳转到此处将c标志位置127.lab3:popdx;相应寄存器恢复28.popex29.pop
8、bx30.ret;子程序返回31.ifyearsendp32.codeends33.endstart34.MOVAX,WMOVCX,AXMOVDX,0MOVBX,4DIVBXCMPDX,0JNZLABIMOVAX,CXMOVBX,1OODIVBXCMPDX,0JNZLAB2MOVAX,CXMOVBX,400DIVBXCMPDX,0JZLAB2LABI:CLCJMPLAB3