匯編試驗(yàn)報(bào)告-學(xué)生信息管理系統(tǒng)方案_第1頁(yè)
匯編試驗(yàn)報(bào)告-學(xué)生信息管理系統(tǒng)方案_第2頁(yè)
匯編試驗(yàn)報(bào)告-學(xué)生信息管理系統(tǒng)方案_第3頁(yè)
匯編試驗(yàn)報(bào)告-學(xué)生信息管理系統(tǒng)方案_第4頁(yè)
匯編試驗(yàn)報(bào)告-學(xué)生信息管理系統(tǒng)方案_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

./學(xué)生信息管理系統(tǒng)1.實(shí)驗(yàn)類別使用匯編語(yǔ)言編程2.實(shí)驗(yàn)容和實(shí)驗(yàn)?zāi)康膶W(xué)生的信息包括、班級(jí)、學(xué)號(hào)和成績(jī),其中成績(jī)精確到1位小數(shù)。編寫程序?qū)崿F(xiàn)以下功能:〔1 可以錄入學(xué)生的信息,成績(jī)以十進(jìn)制形式錄入,并顯示;〔2 可以按成績(jī)進(jìn)行排序顯示;〔3 可以統(tǒng)計(jì)平均成績(jī);〔4 可以統(tǒng)計(jì)不及格、60~70、70~80、80~90、90~100各分?jǐn)?shù)段的人數(shù)。3.實(shí)驗(yàn)設(shè)備環(huán)境Windows7操作系統(tǒng)的pc機(jī),使用QASM270編譯器環(huán)境下編寫。4.實(shí)驗(yàn)實(shí)現(xiàn)過(guò)程及方法首先數(shù)據(jù)采用二維數(shù)組的形式進(jìn)行存儲(chǔ),分為學(xué)生信息部分與成績(jī)部分。然后將輸入學(xué)生數(shù)也保存在一個(gè)一維數(shù)組中。然后再信息的存儲(chǔ)過(guò)程中,對(duì)于字符串輸入進(jìn)行轉(zhuǎn)換,以二進(jìn)制的形式存儲(chǔ)在數(shù)據(jù)段中。然后采用冒泡排序,對(duì)于數(shù)據(jù)段中的人員信息進(jìn)行排序。以成績(jī)?yōu)閰?shù)。然后再對(duì)每個(gè)人員成績(jī)進(jìn)行遍歷,統(tǒng)計(jì)各個(gè)數(shù)據(jù)層次中人員數(shù),然后再成績(jī)遍歷的同時(shí),將平均成績(jī)也同時(shí)求出,在求平時(shí)成績(jī)的時(shí)候,首先先將整數(shù)部分乘10然后再加上小數(shù)部分,以便于后續(xù)的輸出。將排序后的人員信息及成績(jī)顯示出來(lái),然后將平均成績(jī)也同時(shí)打印出來(lái),還有各個(gè)分?jǐn)?shù)層次中的人員數(shù)也都一并顯示出來(lái)。下面是一些主要代碼來(lái)實(shí)現(xiàn)上述過(guò)程:;數(shù)據(jù)部分NUMBERDB3DUP<0>;第一個(gè)存?zhèn)€/十位<ASCII碼>,第二個(gè)存?zhèn)€位<ASCII碼>,第三個(gè)存學(xué)生數(shù)<二進(jìn)制>;用20字節(jié)單元表示學(xué)生信息,0-19中:0對(duì)應(yīng)最大字符,1對(duì)應(yīng)實(shí)際輸入,2-18對(duì)應(yīng)輸入信息,19對(duì)應(yīng)'$'INFORMATIONDB99DUP<20DUP<0>>;用7字節(jié)單元來(lái)存分?jǐn)?shù),0-6中,0-4對(duì)應(yīng)輸入字符,5對(duì)應(yīng)輸入整數(shù)部分的二進(jìn)制數(shù),6對(duì)應(yīng)于小數(shù)部分的二進(jìn)制數(shù)GRADEDB99DUP<7DUP<0>>AVERAGE_GRADE_BUFFERDB2DUP<0>;第一個(gè)存整數(shù)部分<二進(jìn)制形式>,STORE_STUDENT_NUM;存儲(chǔ)學(xué)生總數(shù),結(jié)果送cx中STORE_STUDENT_INFORMATION;存儲(chǔ)學(xué)生信息STORE_STUDENT_GRADE;存儲(chǔ)每個(gè)學(xué)生成績(jī)SORT;采用冒泡排序_DISPLAY;顯示結(jié)果FIND_RESULT;顯示平均成績(jī)和分段人數(shù)關(guān)鍵算法的流程圖:關(guān)于分段人數(shù)與總成績(jī)的計(jì)算冒泡排序算法:處理計(jì)算處理計(jì)算計(jì)算總成績(jī)<60?<70?<80?<90?<=100錯(cuò)誤返回NNNNNA++B++C++D++E++YYYYY處理排序冒泡i=0交換i++Ki<=Ki+1i=counter?返回YNYN5.效果圖輸入三人信息,班級(jí)學(xué)好,然后輸入此人成績(jī)??梢钥吹饺说陌闯煽?jī)排序,然后將平均值輸出,而且統(tǒng)計(jì)了各個(gè)分?jǐn)?shù)區(qū)間的人數(shù)。輸入5人信息,并將其打印出來(lái)。6.實(shí)驗(yàn)心得通過(guò)編寫學(xué)生管理系統(tǒng)的匯編實(shí)驗(yàn),讓我對(duì)匯編語(yǔ)言有了很深的了解,對(duì)于語(yǔ)言的熟悉度也提高了很多。在編寫的過(guò)程中遇到了很多的問(wèn)題,由于匯編語(yǔ)言使用起來(lái)比較繁瑣〔個(gè)人感覺(jué),很多部運(yùn)行的數(shù)據(jù)不能很好的呈現(xiàn)出來(lái),所以對(duì)數(shù)據(jù)的保存,處理等方面出現(xiàn)了很大的錯(cuò)誤,主要是在字符的輸入與二進(jìn)制的轉(zhuǎn)換,還有就是在數(shù)據(jù)處理的時(shí)候會(huì)出現(xiàn)很多標(biāo)志位,這些標(biāo)準(zhǔn)為對(duì)于處理后數(shù)據(jù)的保存有很大的影響,但是通過(guò)課本上的實(shí)驗(yàn)例子,對(duì)于這些問(wèn)題基本上都能得到一定的解決。還有就是在需要跳轉(zhuǎn)的時(shí)候,由于跳轉(zhuǎn)指令使用對(duì)標(biāo)志位或者條件使用比較靈活,有很多種的跳轉(zhuǎn)指令,這些指令在使用起來(lái)是很方便但是由于判斷條件很多,可能不小心就出現(xiàn)了跳轉(zhuǎn)出錯(cuò)。還有就是,跳轉(zhuǎn)不到想要跳轉(zhuǎn)的地方。這些問(wèn)題需要在編寫的過(guò)程中非常的小心,同時(shí)也能將這些指令得使用規(guī)則得到一個(gè)很好的理解與記憶??傊?在此次的匯編實(shí)驗(yàn)的編寫過(guò)程中,理解了很多在課堂上學(xué)習(xí)到的知識(shí),也同時(shí)記憶了這些指令的使用規(guī)則與方法。對(duì)于匯編語(yǔ)言有了一定程度的理解與掌握。源程序:DATASSEGMENT;此處輸入數(shù)據(jù)段代碼;輸入輸出提示字符STUDENT_NUMDB'Pleaseinputthenumberofstudents<1-99>:','$'STUDENT_INFORMATIONDB0DH,0AH,'Pleaseinputthestudentinformation<classidname>:',0DH,0AH,'$'STUDENT_GRADEDB0DH,0AH,'Pleaseinputthestudentgrade<0.0-100.0>:',0DH,0AH,'$'AVERAGE_GRADEDB0DH,0AH,'Theaveragegradeis:','$'RESULT1DB0DH,0AH,'Thenumberofstudentin[>=90]is:','$';各分?jǐn)?shù)段人數(shù)RESULT2DB0DH,0AH,'Thenumberofstudentin[80-90]is:','$'RESULT3DB0DH,0AH,'Thenumberofstudentin[70-80]is:','$'RESULT4DB0DH,0AH,'Thenumberofstudentin[60-70]is:','$'RESULT5DB0DH,0AH,'Thenumberofstudentin[<=60]is:','$'GRADE_RANKDB0DH,0AH,'Thegradelist<hightolow>is:',0DH,0AH,'$';打印排名BLANKDB'','$'HUANHANGDB0DH,0AH,'$'KAISHISHUCHUDB0DH,0AH,'***********************************',0DH,0AH,'$';數(shù)據(jù)NUMBERDB3DUP<0>;第一個(gè)存?zhèn)€/十位<ASCII碼>,第二個(gè)存?zhèn)€位<ASCII碼>,第三個(gè)存學(xué)生數(shù)<二進(jìn)制>;用20字節(jié)單元表示學(xué)生信息,0-19中:0對(duì)應(yīng)最大字符,1對(duì)應(yīng)實(shí)際輸入,2-18對(duì)應(yīng)輸入信息,19對(duì)應(yīng)'$'INFORMATIONDB99DUP<20DUP<0>>;用7字節(jié)單元來(lái)存分?jǐn)?shù),0-6中,0-4對(duì)應(yīng)輸入字符,5對(duì)應(yīng)輸入整數(shù)部分的二進(jìn)制數(shù),6對(duì)應(yīng)于小數(shù)部分的二進(jìn)制數(shù)GRADEDB99DUP<7DUP<0>>AVERAGE_GRADE_BUFFERDB2DUP<0>;第一個(gè)存整數(shù)部分<二進(jìn)制形式>,第二個(gè)存小數(shù)部分<二進(jìn)制形式>N0DB0;各分?jǐn)?shù)段人數(shù)存儲(chǔ)區(qū)<二進(jìn)制形式>N1DB0N2DB0N3DB0N4DB0DATASENDSCODESSEGMENTASSUMECS:CODES,DS:DATASSTART:;此處輸入代碼段代碼MOVAX,DATASMOVDS,AXMOVSI,0;指向每個(gè)學(xué)生信息MOVDI,0;指向每個(gè)學(xué)生成績(jī)MOVCX,100;初始化學(xué)生數(shù)MOVDX,OFFSETSTUDENT_NUM;請(qǐng)求輸入學(xué)生總數(shù)MOVAH,09INT21HCALLSTORE_STUDENT_NUM;存儲(chǔ)學(xué)生總數(shù),結(jié)果送cx中CMPCX,0;輸入為0退出JLEOUTTODOSCMPCX,100;學(xué)生數(shù)超出本程序圍,退出JGEOUTTODOSINPUT:MOVDX,OFFSETSTUDENT_INFORMATION;請(qǐng)求輸入學(xué)生信息MOVAH,09INT21HCALLSTORE_STUDENT_INFORMATION;存儲(chǔ)學(xué)生信息ADDSI,20;指向下一個(gè)學(xué)生信息MOVDX,OFFSETSTUDENT_GRADE;請(qǐng)求輸入學(xué)生成績(jī)MOVAH,09INT21HCALLSTORE_STUDENT_GRADE;存儲(chǔ)每個(gè)學(xué)生成績(jī)ADDDI,7;指向下一個(gè)學(xué)生LOOPINPUT;循環(huán),直到輸入所有學(xué)生成績(jī)CALLSORT;排序CALL_DISPLAY;顯示結(jié)果CALLFIND_RESULT;顯示平均成績(jī)和分段人數(shù)OUTTODOS:MOVAH,1;任意鍵結(jié)束INT21HMOVAX,4C00H;返回DOSINT21H;******************存儲(chǔ)學(xué)生數(shù)目的函數(shù)******************STORE_STUDENT_NUMPROC;調(diào)用之后,cx中存儲(chǔ)了學(xué)生數(shù)<二進(jìn)制>PUSHAXPUSHBXMOVBX,0S1:MOVAH,1INT21HCMPAL,0DH;是否為回車JES2ANDAL,0FH;轉(zhuǎn)換為非壓縮的BCD碼MOVNUMBER[BX],ALINCBXJMPS1S2:CMPBX,2JGS5;大于2JZS3;等于2;小于2MOVAL,NUMBERJMPS4S3:MOVAH,NUMBERMOVAL,NUMBER+1AAD;BCD碼轉(zhuǎn)換為二進(jìn)制數(shù)S4:MOVNUMBER+2,ALMOVCX,0MOVCL,NUMBER+2S5:POPBXPOPAXRETSTORE_STUDENT_NUMENDP;******************存儲(chǔ)學(xué)生信息的函數(shù)******************STORE_STUDENT_INFORMATIONPROCPUSHAXPUSHBXPUSHDXMOVAL,18MOVINFORMATION[SI],ALLEADX,INFORMATION[SI]MOVAH,0AHINT21HMOVBL,INFORMATION[SI+1];實(shí)際輸入的字符個(gè)數(shù)MOVAL,''MOVINFORMATION[SI+BX+2],AL;將回車換成''MOVINFORMATION[SI+19],'$';將每個(gè)存儲(chǔ)單元的最后一個(gè)字節(jié)置為'$'以便輸出POPDXPOPBXPOPAXRETSTORE_STUDENT_INFORMATIONENDP;******************存儲(chǔ)學(xué)生成績(jī)的函數(shù)******************STORE_STUDENT_GRADEPROCPUSHAXPUSHBXPUSHCXPUSHDXMOVBX,0MOVCX,0MOVDX,DIDEAL0:MOVAH,1INT21HCMPAL,0DH;判斷是否為回車JZDEAL2;是回車CMPAL,'.';是否為小數(shù)點(diǎn)JNZDEAL1;不是小數(shù)點(diǎn)MOVBX,CX;bx指向小數(shù)點(diǎn)處INCBX;標(biāo)記小數(shù)點(diǎn)字符出現(xiàn)在第幾個(gè)位置DEAL1:PUSHBXMOVBX,DXMOVGRADE[BX],ALPOPBXINCCX;記錄輸入字符的個(gè)數(shù)INCDXJMPDEAL0DEAL2:CMPBX,0JNZDEAL3;有小數(shù)點(diǎn);無(wú)小數(shù)點(diǎn)CMPCX,3JGGOUT;大于100JZDEAL4;等于100;小于100CMPCX,2JZDEAL5;輸入數(shù)目為2位數(shù);個(gè)位數(shù)DEAL6:;處理個(gè)位數(shù)MOVAL,GRADE[DI]SUBAL,'0'MOVGRADE[DI+5],ALJMPGOUTDEAL5:;處理2位數(shù)MOVAH,GRADE[DI]ANDAH,0FHMOVAL,GRADE[DI+1]ANDAL,0FHAADMOVGRADE[DI+5],ALJMPGOUTDEAL4:;處理3位數(shù)MOVAL,100MOVGRADE[DI+5],ALJMPGOUTDEAL3:;處理帶有小數(shù)部分的成績(jī)MOVAL,GRADE[DI+BX];將小數(shù)部分處理SUBAL,'0'MOVGRADE[DI+6],ALCMPBX,4JZDEAL4;'.'出現(xiàn)在輸入字符的第四位,則輸入的整數(shù)部分為3位數(shù)JGGOUT;整數(shù)部分大于3位數(shù)CMPBX,3JZDEAL5;'.'出現(xiàn)在輸入字符的第三位,則輸入的整數(shù)部分為2位數(shù)JMPDEAL6;否則為個(gè)位數(shù)GOUT:POPDXPOPCXPOPBXPOPAXRETSTORE_STUDENT_GRADEENDP;******************排序?qū)W生成績(jī)的函數(shù)******************SORTPROCPUSHAXPUSHBXPUSHCXPUSHDXPUSHSIPUSHDIMOVDX,0MOVDL,NUMBER+2LOOP1:;使用冒泡排序法MOVCX,DXMOVDI,0MOVSI,0LOOP2:;先比整數(shù)部分,再比小數(shù)部分MOVAL,GRADE[DI+5]CMPAL,GRADE[DI+12]JGNEXT;大于,向下個(gè)移動(dòng)JLSWAP1;小于,交換成績(jī),名字;等于,比較小數(shù)部分MOVAL,GRADE[DI+6]CMPAL,GRADE[DI+13]JGENEXT;大于或等于,向下個(gè)移動(dòng)JLSWAP1;小于,交換成績(jī),名字SWAP1:MOVBX,SISWAP11:;交換學(xué)生信息MOVAL,INFORMATION[BX+2]XCHGAL,INFORMATION[BX+22]MOVINFORMATION[BX+2],ALINCBXCMPAL,'$'JNZSWAP11PUSHBXMOVBX,0SWAP2:;交換學(xué)生成績(jī)MOVAL,GRADE[DI+BX]XCHGAL,GRADE[DI+BX+7]MOVGRADE[DI+BX],ALINCBXCMPBX,7JNZSWAP2POPBXNEXT:ADDSI,20ADDDI,7DECCXJNZLOOP2DECDXJNZLOOP1POPDIPOPSIPOPDXPOPCXPOPBXPOPAXRETSORTENDP;******************顯示最后結(jié)果的函數(shù)******************FIND_RESULTPROCPUSHAXPUSHBXPUSHCXPUSHDXPUSHSIPUSHDIMOVBX,0MOVCX,0MOVCL,NUMBER+2;cl中保存學(xué)生人數(shù)MOVDI,0MOVSI,0F1:MOVAL,GRADE[DI+5]CMPAL,100JGFOUT;大于100JZF90;等于100;小于100CMPAL,90JGEF90;大于等于90;小于90CMPAL,80JGEF80;大于等于80;小于80CMPAL,70JGEF70;大于等于70;小于70CMPAL,60JGEF60;大于等于60;小于60;處理<60MOVDL,N4INCDLMOVN4,DLFNEXT:;處理平均成績(jī)處理方式:整數(shù)部分*10+小數(shù)部分,結(jié)果先除以學(xué)生人數(shù),再輸出<輸出整數(shù)時(shí)除以10>MOVAL,GRADE[DI+5]MOVDL,10MULDLMOVDL,GRADE[DI+6]MOVDH,0ADDAX,DXADDBX,AXJMPF2FOUT:POPDIPOPSIPOPDXPOPCXPOPBXPOPAXF90:;處理>=90MOVDL,N0INCDLMOVN0,DLJMPFNEXTF80:;處理大于等于80小于90MOVDL,N1INCDLMOVN1,DLJMPFNEXTF70:;處理大于等于70小于80MOVDL,N2INCDLMOVN2,DLJMPFNEXTF60:;處理大于等于60小于70MOVDL,N3INCDLMOVN3,DLJMPFNEXTF2:ADDDI,7DECCXJNZF1;處理所有學(xué)生MOVDX,OFFSETKAISHISHUCHU;打印一段************MOVAH,09INT21HMOVDX,OFFSETAVERAGE_GRADE;打印平均成績(jī)MOVAH,09INT21HMOVAX,BXMOVDX,0MOVCX,0MOVCL,NUMBER+2DIVCXMOVCL,10DIVCLCALLSHOW;先打印平均成績(jī)的整數(shù)部分PUSHAXMOVDL,'.';打印'.'MOVAH,2INT21HPOPAXMOVAL,AHCALLSHOW;再打印平均成績(jī)的小數(shù)部分MOVDX,OFFSETRESULT1;輸出大于等于90的人數(shù)MOVAH,09INT21HMOVAL,N0CALLSHOWMOVDX,OFFSETRESULT2;輸出大于等于80并小于90的人數(shù)MOVAH,09INT21HMOVAL,N1CALLSHOWMOVDX,OFFSETRESULT3;輸出大于等于70并小于80的人數(shù)MOVAH,09INT21HMOVAL,N2CALLSHOWMOVDX,OFFSETRESULT4;輸出大于等于60并小于70的人數(shù)MOVAH,09INT21HMOVAL,N3CALLSHOWMOVDX,OFFSETRESULT5;輸出小于60的人數(shù)MOVAH,09INT21HMOVAL,N4CALLSHOWRETFIND_RESULTENDP;******************輸出分?jǐn)?shù)排序的函數(shù)******************_DISPLAYPROCPUSHAXPUSHBXPUSHCXPUSHDXPUSHSIPUSHDIMOVDX,OFFSETGRADE_RANKMOVAH,09INT21HMOVCX,0MOVCL,NUMBER+2;cl中保存學(xué)生人數(shù)MOVDI,0MOVSI,0D1:MOVDX,OFFSETINFORMATIONADDDX,SIADDDX,2MOVAH,09INT21HMOVDX,OFFSETBLANK;打印一段空白MOVAH,09INT21HmovAl,GRADE[DI+5]pushaxMOVGRADE[DI+5],'$';將保存成績(jī)的單元中第6個(gè)字節(jié)置為'$',便于輸出MOVDX,OFFSETGRADE;輸出成績(jī)ADDDX,DIMOVAH,09INT21Hpopax movGRADE[DI+5],AlMOVDX,OFFSETHUANHANG;打印換行MOVAH,09

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論