计算机组成原理实验题_第1页
计算机组成原理实验题_第2页
计算机组成原理实验题_第3页
计算机组成原理实验题_第4页
计算机组成原理实验题_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.这是一个判断某一年是否为润年的程序,运行可执行程序lfleap.exe后,输入具体的年份,可输出是本年是否为闰年的提示信息。DATASEGMENT ;定义数据段INFONDBODH,OAH,'PLEASEINPUTAYEAR:$';声明空间存储输入提示信息,其中0d回车,0a换行YDB0DH,0AH,'THISISALEAPYEAR!$';声明空间存储是闰年提示信息,同上另起一行输出NDB0DH,0AH,'THISISNOTALEAPYEAR!$';声明空间存储不是闰年提示信息,同上另起一行输出WDW0 ;声明空间存储输入年份解析后生成的年份数字BUFDB8DB?DB8DUP(?);声明空间作为缓冲区,总共10个字节,第一个表示准备接受的字DATAENDSSTACKSEGMENTSTACKDB200DUP(0)STACKENDS ;定义一个栈,200字节CODESEGMENTASSUMEDS:DATA,SS:STACK,CS:CODESTART:MOVAX,DATAMOVDS,AX;指定堆栈LEADX,INFONMOVAH,9;在屏幕上显示提示信息INT21H ;将infon开始的字符串输出到屏幕LEADX,BUFMOVAH,10;从键盘输入年份字符串INT21HMOVCL,[BUF+1];获取实际输入长度LEADI,BUF+2;获取字符串首地址CALLDATACATE;调用子程序,将输入字符串传化为年份数字CALLIFYEARS;调用子程序,判断是否闰年JCA1;如果进位标记C为1则跳转到al

LEADX,N;否则输出不是闰年信息MOVAH,9INT21HJMPEXIT;输出是闰年信息;;输出是闰年信息;程序结束MOVAH,9INT21HEXIT:MOVAH,4CHINT21HDATACATEPROCNEAR;;指明该子程序在主程序段内PUSHCX;DECCX;备份LEASI,BUF+2;将buf中第一个字符(即buf的第三个字节数据)的地址赋给siTT1:INCSI ;循环,使得si指向最后一个字符(即buf中回车符前面的一个)LOOPTT1;LEASI,CX[DI]POPCX;回复CXMOVDH,30H;辅助数据,用来将数字字符对应的ASCII码转换为其代表的数字本身MOVBL,10;辅助数据,用来在每进一位时使得ax乘以10MOVAX,1;ax用来装对应位的权值L1:PUSHAX;备份axSUBBYTEPTR[SI],DH;将单个字符转换为对应的数字MULBYTEPTR[SI];将单个字符转换为对应的数字ADDW,AX;加到结果上(易知当所有位都加完时,即是我们想要的年份数字)POPAX;恢复axMULBL;权值乘以10DECSI;si指向更高一位数字LOOPL1RET ;子程序返回

DATACATEENDPIFYEARSPROCNEAR 指明该子程序段在主程序段内,该子程序用于检测是否是闰年,接收年份数据,改变C标记位表示不同结果1.pushbx;备份bx2.pushcx;备份cx,下面cx用于存储原始年份数据3.pushdx ;备份dx,下面dx用于存储除法余数4. movax,[w];获取年份数据5.movcx,ax;将年份数据备份到cx,因为后面做除法时ax值将会改变6.movdx,0;因为被除数要为32字节,高位在dx,本程序中为07.movbx,100;这三行判断是否能被100整除8.divbx9.cmpdx,010.jnzlab1;若不能被100整除,跳转到lab111.movax,cx;否则判断能否被400整除12.movbx,40013.divbx14.cmpdx,015.jzlab2;若能表示是闰年,跳转到lab216.clc;否则不是闰年,将C标记位清零,并跳转到lab317.jmplab318.lab1:movax,cx;不能被100整除时跳转到此处,进一步判断能否被4整除19.movdx,020.movbx,421.divbx22.cmpdx,023.jzlab2;若不能被100整除但能能被4整除是闰年,跳转到lab224.clc;若不能被100整除也不能被4整除不是闰年,将c标志位置0,并跳转到lab325.jmplab326.lab2:stc;若是闰年跳转到此处将c标志位置127.lab3:popdx;相应寄存器恢复28.popcx29.popbx30.ret;子程序返回31. ifyearsendp32.codeends33. endstart

MOVAX,WMOVCX,AXMOVDX,0MOVBX,4DIVBXCMPDX,0JNZLAB1MOVAX,CXMOVBX,100DIVBXCMPDX,0JNZLAB2MOVAX,CXMOVBX,400DIVBXCMPDX,0JZLAB2LAB1:CLCJMPLAB3LAB2:STCLAB3:POPDXPOPCXPOPBXRETIFYEARSENDPCODEENDSENDSTART二.这是一个显示系统日期和时间的程序,运行时,在出现的提示信息中输入大写字母"D”可显示系统当前日期;输入大写字母“T”,可显示系统当前时间;输入大写字母"Q”,可结束程序。STACKSEGMENTSTACKDW200DUP(?)STACKENDSDATASEGMENTSPACEDB1000DUP('')PATTERNDB6DUP(''),0C9H,26DUP(0CDH),0BBH,6DUP('')DB6DUP(''),0BAH,26DUP(20H),0BAH,6DUP('')DB6DUP(''),0C8H,26DUP(0CDH),0BCH,6DUP('')DBUFFERDB8DUP(':'),12DUP('')DBUFFER1DB20DUP('')STRDB0DH,0AH,'PLEASEINPUTDATE(D)ORTIME(T)ORQUIT(Q):$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOVAX,0001H ;设置显示方式为40*25彩色文本方式INT10HMOVAX,DATAMOVDS,AXMOVES,AXMOVCX,1000MOVAX,1300HINT10HMOVBP,OFFSETPATTERN;显示矩形条MOVDX,0B00HMOVCX,120MOVBX,004EHMOVAX,1301HINT10HLEADX,STRMOVAH,9INT21HMOVAH,1INT21HCMPAL,44HJNEACALLDATEA:CMPAL,54HJNEBCALLTIMEB:CMPAL,51H;显示提示信息;从键盘输入单个字符;AL='D'?;显示系统日期;AL='T'?;显示系统时间;AL='Q'?JNESTART;显示日期子程序;取日期;显示日期子程序;取日期;日期数值转换成相应的ASCII码字符INT21HDATEPROCNEARDISPLAY:MOVAH,2AHINT21HMOVSI,0MOVAX,CXMOVBX,100DIVBLMOVBL,AHCALLBCDASC1MOVAL,BLCALLBCDASC1INCSIMOVAL,DHCALLBCDASC1INCSIMOVAL,DLCALLBCDASC1MOVBX,004EHMOVAX,1301HINT10HMOVAH,02H ;设置光标位置MOVDX,0300HMOVBH,0INT10HMOVBX,0018HREPEA:MOVCX,0FFFFH ;延时REPEAT1:LOOPREPEAT1DECBXJNZREPEAMOVAH,01H ;读键盘缓冲区字符到AL寄存器INT16HJEDISPLAYJMPSTARTMOVAX,4C00HINT21HRETDATEENDP

TIMEPROCNEAR;显示时间子程序TIMEPROCNEAR;显示时间子程序DISPLAY1:MOVSI,0MOVBX,100DIVBLMOVAH,2CH;取时间INT21HMOVAL,CHCALLBCDASC;将时间数值转换成ASCII码字符INCSIMOVAL,CLCALLBCDASCINCSIMOVAL,DHCALLBCDASCMOVBP,OFFSETDBUFFERMOVDX,0C0DHMOVCX,20MOVBX,004EHMOVAX,1301HINT10HINT10HMOVBX,0018HRE:MOVCX,0FFFFHREA:LOOPREADECBXJNZREMOVAH,01HINT16HJEDISPLAY1JMPSTARTMOVAX,4C00HINT21HRETTIMEENDP;时间数值转换成;时间数值转换成ASCII码字符子程序PUSHBXCBWMOVBL,10DIVBLADDAL,'0INCSIADDAH,'0'MOVDBUFFER[SI],AHINCSIPOPBXRETBCDASCENDPBCDASC1PROCNEAR ;日期数值转换成ASCII码字符子程序PUSHBXCBWMOVBL,10DIVBLADDAL,'0'MOVDBUFFER1[SI],ALINCSIADDAH,'0'MOVDBUFFER1[SI],AHINCSIPOPBXRETBCDASC1ENDPCODEENDSENDSTART三.这是一个显示系统时间的程序,运行时,在屏幕的右上角将以“时:分:秒”的形式显示本机系统的时间。该程序只能在DOS下运行。cursorequ45Hattribequ2fhcodesegmentassumecs:code,ds:codestart:jmp gooldcurdw ?OLD1CDW 2DUP(?)NEWINT1C:PUSHFCALLDWORDPTRCS:OLD1CpushaxPUSHBXPUSHCXPUSHDXXORBH,BHMOVAH,3INT10HMOVCS:OLDCUR,DXMOVAH,2xorbh,bhMOVDX,CURSORINT10HMOVAH,2;读取系统时钟INT1AHPUSHDXPUSHCXPOPBXPUSHBXCALLSHOWBYTECALLSHOWCOLONPOPBXXCHGBH,BLCALLSHOWBYTECALLSHOWCOLONPOPBXCALLSHOWBYTEMOVDX,CS:OLDCURMOVAH,2XORBH,BHINT10HPOPDXPOPCXPOPBXPOPAXIRETSHOWBYTEPROCNEARPUSHBXMOVCL,4MOVAL,BHSHRAL,CLADDAL,30HCALLSHOWCALLCURMOVEPOPBXMOVAL,BHANDAL,0FHADDAL,30HCALLSHOWCALLCURMOVERETSHOWBYTEENDPSHOWCOLONPROCNEARMOV AL,':'CALL SHOWCALL CURMOVERETSHOWCOLONENDPCURMOVEPROCNEARTOC\o"1-5"\h\zPUSH AXPUSH BXPUSH CXPUSH DXMOV AH,3MOV BH,0INT 10HINC DLMOV AH,2INT10HPOPDXPOPCXPOPBXPOPAXRETCURMOVEENDPSHOWPROCNEARPUSHAXPUSHBXPUSHCXMOVAH,09HMOVBX,attribMOVCX,1INT10HPOPCXPOPBXPOPAXRETGO:PUSHCSPOPDSMOVAX,351CH;取中断向量INT21HMOVOLD1C,BX;保存原中断向量MOVBX,ESMOVOLD1C+2,BXMOVDX,OFFSETNEWINT1C;置新的中断向量MOVAX,251CHINT21HMOVDX,OFFSETGOSUBDX,OFFSETSTARTMOVCL,4SHRDX,CLADDDX,11HMOVAX,3100H;结束并驻留INT21HCODEENDSENDSTART四.这是一个网上电子表DATASEGMENT;*****定义PLEASE等提示信息STRDB20DB50H,7,0,0DB6CH,7,0,1DB65H,7,0,1DB61H,7,0,1DB73H,7,0,1DB65H,7,0,1DB70H,7,1,-10DB72H,7,0,1DB65H,7,0,1DB73H,7,0,1DB73H,7,0,1DB53H,7,0,2DB6BH,7,0,2DB65H,7,0,1DB79H,7,0,1DB65H,7,0,2DB78H,7,0,1DB69H,7,0,1;*****定义0-9十个图形数字S0DB6DB5FH,7,0,0DB7CH,7,1,-1DB7CH,7,1,0DB5FH,7,0,1DB7CH,7,0,1DB7CH,7,-1,0SYDB2DB7CH,7,1,0DB7CH,7,1,0S2 DB5DB5FH,7,0,0DB7CH,7,1,1DB5FH,7,0,-1DB7CH,7,1,-1DB5FH,7,0,1S3 DB5DB5FH,7,0,0DB7CH,7,1,1S4 DB4DB7CH,7,1,0DB5FH,7,0,1DB7CH,7,1,1DB7CH,7,-1,0S5 DB5DB5FH,7,0,0DB7CH,7,1,-1DB5FH,7,0,1DB7CH,7,1,1DB5FH,7,0,-1S6 DB6DB5FH,7,0,0DB7CH,7,1,-1DB5FH,7,0,1DB7CH,7,1,1DB5FH,7,0,-1DB7CH,7,0,-1S8DB7DB7CH,7,1,0DB5FH,7,-1,1DB7CH,7,1,1DB5FH,7,0,-1DB7CH,7,1,1DB5FH,7,0,-1DB7CH,7,0,-1S9DB6DB7CH,7,1,0DB5FH,7,-1,1DB7CH,7,1,1DB5FH,7,0,-1DB7CH,7,1,1DB5FH,7,0,-1S11DB2DB03H,7,1,0DB03H,7,1,0DATAENDSSTACKSEGMENTSTACKENDSCODESEGMENTASSUMECS:CODE,SS:STACK,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAH,0MOVAL,4INT10HMOVAH,0BHMOVBH,0MOVBL,1INT10HMOVAH,0BHMOVBH,1MOVBL,4INT10HMOVAH,2INT1AH;设置显示方式;置彩色调板;置彩色调板;取系统时间MOVAX,0MOVBX,0MOVAH,CH;取系统时间;保存分钟MOVBH,DH;保存秒MOVBL,DL;保存百分之一秒TT:PUSHAXPUSHBX;保存分钟MOVBH,DH;保存秒MOVBL,DL;保存百分之一秒TT:PUSHAXPUSHBXMOVAH,0MOVAL,4INT10HMOVAH,0BHMOVBH,0MOVBL,1INT10HMOVAH,0BHMOVBH,1MOVBL,4INT10HMOVAL,CLMOVAH,1;读键盘缓冲区字符INT16HMOVAH,1;读键盘缓冲区字符INT16HJZWWMOVAH,8;从键盘输入字符INT21HCMPAL,'S';输入S,结束程序JETUWW:POPBXPOPAXCALLXIANPUSHAX;调用显示子程序;取系统时间QU:MOVAH,2;取系统时间INT1AHCMPBH,DHJEQUPOPAXINCBHCMPBH,100JLTTINCALCALLBEEPCMPAL,100JLTTMOVAL,0INCAHCMPAH,24JLTTMOVAH,0JMPTTTU:MOVAH,4CHINT21HRET;对时间值进行处理并显示的子程序;对时间值进行处理并显示的子程序PUSHSIPUSHDIPUSHDXPUSHCXPUSHBXPUSHAXPOPAXPUSHAXMOVBX,AXMOVAX,0MOVAL,BHMOVCL,4SHRAL,CLMOVBL,ALMOVDH,10MOVDL,2CALLFFPOPAXPUSHAXMOVBX,AXMOVAX,0MOVAL,BHANDAL,0FHMOVBL,ALMOVDL,6CALLFFMOVDH,10MOVDL,10MOVBL,10CALLFFPOPAXPUSHAXMOVCL,4SHRAL,CLMOVBL,ALMOVDH,10MOVDL,14CALLFFPOPAXPUSHAXANDAL,0FHMOVBL,ALMOVDH,10CALLFFMOVDL,22MOVBL,10CALLFFPOPAXPOPBXPUSHBXPUSHAXMOVAX,0MOVAL,BHMOVCL,4SHRAL,CLMOVBL,ALMOVDH,10MOVDL,26CALLFFPOPAXPOPBXPUSHBXPUSHAXANDAL,0FHMOVBL,ALMOVDH,10MOVDL,30CALLFFMOVDH,0MOVDL,15MOVBL,22CALLFFPOPAXPOPBXPOPCXPOPDXPOPDIPOPSIRETXIANENDPFFPROC;显示具体数值PUSHAXPUSHBXPUSHCXPUSHDXCMPBL,0JEL0CMPBL,1JEL1CMPBL,2JEL2CMPBL,3JEL3CMPBL,4JEL4CMPBL,5JEL5CMPBL,6JEL6CMPBL,7J

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论