版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、學(xué)生信息管理系統(tǒng)1. 實(shí)驗(yàn)類別使用匯編語言編程2. 實(shí)驗(yàn)內(nèi)容和實(shí)驗(yàn)?zāi)康膶W(xué)生的信息包括姓名、班級、學(xué)號和成績,其中成績精確到1位小數(shù)。編寫程序?qū)崿F(xiàn)以下功能:(1)可以錄入學(xué)生的信息,成績以十進(jìn)制形式錄入,并顯示;(2)可以按成績進(jìn)行排序顯示;(3)可以統(tǒng)計(jì)平均成績;(4)可以統(tǒng)計(jì)不及格、6070、7080、8090、90100各分?jǐn)?shù)段的人數(shù)。3. 實(shí)驗(yàn)設(shè)備環(huán)境Windows 7 操作系統(tǒng)的pc機(jī) ,使用QASM270編譯器環(huán)境下編寫。4. 實(shí)驗(yàn)實(shí)現(xiàn)過程及方法首先數(shù)據(jù)采用二維數(shù)組的形式進(jìn)行存儲,分為學(xué)生信息部分與成績部分。然后將輸入學(xué)生數(shù)也保存在一個(gè)一維數(shù)組中。然后再信息的存儲過程中,對于字符串輸
2、入進(jìn)行轉(zhuǎn)換,以二進(jìn)制的形式存儲在數(shù)據(jù)段中。然后采用冒泡排序,對于數(shù)據(jù)段中的人員信息進(jìn)行排序。以成績?yōu)閰?shù)。然后再對每個(gè)人員成績進(jìn)行遍歷,統(tǒng)計(jì)各個(gè)數(shù)據(jù)層次中人員數(shù),然后再成績遍歷的同時(shí),將平均成績也同時(shí)求出,在求平時(shí)成績的時(shí)候,首先先將整數(shù)部分乘10 然后再加上小數(shù)部分,以便于后續(xù)的輸出。將排序后的人員信息及成績顯示出來,然后將平均成績也同時(shí)打印出來,還有各個(gè)分?jǐn)?shù)層次中的人員數(shù)也都一并顯示出來。下面是一些主要代碼來實(shí)現(xiàn)上述過程:;數(shù)據(jù)部分 NUMBER DB 3 DUP(0) ;第一個(gè)存?zhèn)€/十位(ASCII碼),第二個(gè)存?zhèn)€位(ASCII碼),第三個(gè)存學(xué)生數(shù)(二進(jìn)制) ;用20字節(jié)單元表示學(xué)生信息
3、,0-19中:0對應(yīng)最大字符,1對應(yīng)實(shí)際輸入,2-18對應(yīng)輸入信息,19對應(yīng)$ INFORMATION DB 99 DUP(20 DUP(0) ;用7字節(jié)單元來存分?jǐn)?shù),0-6中,0-4對應(yīng)輸入字符,5對應(yīng)輸入整數(shù)部分的二進(jìn)制數(shù),6對應(yīng)于小數(shù)部分的二進(jìn)制數(shù) GRADE DB 99 DUP(7 DUP(0) AVERAGE_GRADE_BUFFER DB 2 DUP(0) ;第一個(gè)存整數(shù)部分(二進(jìn)制形式),STORE_STUDENT_NUM ;存儲學(xué)生總數(shù),結(jié)果送cx中STORE_STUDENT_INFORMATION ;存儲學(xué)生信息STORE_STUDENT_GRADE ;存儲每個(gè)學(xué)生成績SOR
4、T ;采用冒泡排序_DISPLAY ;顯示結(jié)果FIND_RESULT ;顯示平均成績和分段人數(shù)關(guān)鍵算法的流程圖:關(guān)于分段人數(shù)與總成績的計(jì)算 冒泡排序算法:處理計(jì)算計(jì)算總成績60?70?80?90?=100錯誤返回NNNNNA+B+C+D+E+YYYYY處理排序冒泡i=0 交換i+Ki =90 is:,$ ;各分?jǐn)?shù)段人數(shù) RESULT2 DB 0DH,0AH,The number of student in 80-90 is:,$ RESULT3 DB 0DH,0AH,The number of student in 70-80 is:,$ RESULT4 DB 0DH,0AH,The numb
5、er of student in 60-70 is:,$ RESULT5 DB 0DH,0AH,The number of student in =60 is:,$ GRADE_RANK DB 0DH,0AH,The grade list(high to low)is:,0DH,0AH,$ ;打印排名 BLANK DB ,$ HUANHANG DB 0DH,0AH,$KAISHISHUCHU DB 0DH,0AH,*,0DH,0AH,$ ;數(shù)據(jù) NUMBER DB 3 DUP(0) ;第一個(gè)存?zhèn)€/十位(ASCII碼),第二個(gè)存?zhèn)€位(ASCII碼),第三個(gè)存學(xué)生數(shù)(二進(jìn)制) ;用20字節(jié)單元表示
6、學(xué)生信息,0-19中:0對應(yīng)最大字符,1對應(yīng)實(shí)際輸入,2-18對應(yīng)輸入信息,19對應(yīng)$ INFORMATION DB 99 DUP(20 DUP(0) ;用7字節(jié)單元來存分?jǐn)?shù),0-6中,0-4對應(yīng)輸入字符,5對應(yīng)輸入整數(shù)部分的二進(jìn)制數(shù),6對應(yīng)于小數(shù)部分的二進(jìn)制數(shù) GRADE DB 99 DUP(7 DUP(0) AVERAGE_GRADE_BUFFER DB 2 DUP(0) ;第一個(gè)存整數(shù)部分(二進(jìn)制形式),第二個(gè)存小數(shù)部分(二進(jìn)制形式) N0 DB 0 ;各分?jǐn)?shù)段人數(shù)存儲區(qū)(二進(jìn)制形式) N1 DB 0 N2 DB 0 N3 DB 0 N4 DB 0 DATAS ENDS CODES SE
7、GMENT ASSUME CS:CODES,DS:DATAS START: ;此處輸入代碼段代碼 MOV AX,DATAS MOV DS,AX MOV SI,0 ;指向每個(gè)學(xué)生信息 MOV DI,0 ;指向每個(gè)學(xué)生成績 MOV CX,100 ;初始化學(xué)生數(shù) MOV DX, OFFSET STUDENT_NUM ;請求輸入學(xué)生總數(shù) MOV AH,09 INT 21H CALL STORE_STUDENT_NUM ;存儲學(xué)生總數(shù),結(jié)果送cx中 CMP CX,0 ;輸入為0退出 JLE OUTTODOS CMP CX,100 ;學(xué)生數(shù)超出本程序范圍,退出 JGE OUTTODOS INPUT: MO
8、V DX, OFFSET STUDENT_INFORMATION ;請求輸入學(xué)生信息 MOV AH,09 INT 21H CALL STORE_STUDENT_INFORMATION ;存儲學(xué)生信息 ADD SI,20 ;指向下一個(gè)學(xué)生信息 MOV DX, OFFSET STUDENT_GRADE ;請求輸入學(xué)生成績 MOV AH,09 INT 21H CALL STORE_STUDENT_GRADE ;存儲每個(gè)學(xué)生成績 ADD DI,7 ;指向下一個(gè)學(xué)生 LOOP INPUT ;循環(huán),直到輸入所有學(xué)生成績 CALL SORT ;排序 CALL _DISPLAY ;顯示結(jié)果 CALL FIND
9、_RESULT ;顯示平均成績和分段人數(shù) OUTTODOS: MOV AH,1 ;任意鍵結(jié)束 INT 21H MOV AX,4C00H ;返回DOS INT 21H;*存儲學(xué)生數(shù)目的函數(shù)* STORE_STUDENT_NUM PROC ;調(diào)用之后,cx中存儲了學(xué)生數(shù)(二進(jìn)制) PUSH AX PUSH BX MOV BX,0 S1: MOV AH,1 INT 21H CMP AL,0DH ;是否為回車 JE S2 AND AL,0FH ;轉(zhuǎn)換為非壓縮的BCD碼 MOV NUMBERBX,AL INC BX JMP S1 S2: CMP BX,2 JG S5 ;大于2 JZ S3 ;等于2 ;小
10、于2 MOV AL,NUMBER JMP S4 S3: MOV AH,NUMBER MOV AL,NUMBER+1 AAD ;BCD碼轉(zhuǎn)換為二進(jìn)制數(shù) S4: MOV NUMBER+2,AL MOV CX,0 MOV CL,NUMBER+2 S5: POP BX POP AX RET STORE_STUDENT_NUM ENDP;*存儲學(xué)生信息的函數(shù)* STORE_STUDENT_INFORMATION PROC PUSH AX PUSH BX PUSH DX MOV AL,18 MOV INFORMATIONSI,AL LEA DX,INFORMATIONSI MOV AH,0AH INT 2
11、1H MOV BL,INFORMATIONSI + 1 ;實(shí)際輸入的字符個(gè)數(shù) MOV AL, MOV INFORMATIONSI + BX + 2,AL ;將回車換成 MOV INFORMATIONSI+19,$ ;將每個(gè)存儲單元的最后一個(gè)字節(jié)置為$以便輸出 POP DX POP BX POP AX RET STORE_STUDENT_INFORMATION ENDP;*存儲學(xué)生成績的函數(shù)* STORE_STUDENT_GRADE PROC PUSH AX PUSH BX PUSH CX PUSH DX MOV BX,0 MOV CX,0 MOV DX,DI DEAL0: MOV AH,1 I
12、NT 21H CMP AL,0DH ;判斷是否為回車 JZ DEAL2 ;是回車 CMP AL,. ;是否為小數(shù)點(diǎn) JNZ DEAL1 ;不是小數(shù)點(diǎn) MOV BX,CX ;bx指向小數(shù)點(diǎn)處 INC BX ;標(biāo)記小數(shù)點(diǎn)字符出現(xiàn)在第幾個(gè)位置 DEAL1: PUSH BX MOV BX,DX MOV GRADEBX,AL POP BX INC CX ;記錄輸入字符的個(gè)數(shù) INC DX JMP DEAL0 DEAL2: CMP BX,0 JNZ DEAL3 ;有小數(shù)點(diǎn) ;無小數(shù)點(diǎn) CMP CX,3 JG GOUT ;大于100 JZ DEAL4 ;等于100 ;小于100 CMP CX,2 JZ DE
13、AL5 ;輸入數(shù)目為2位數(shù) ;個(gè)位數(shù) DEAL6: ;處理個(gè)位數(shù) MOV AL,GRADEDI SUB AL,0 MOV GRADEDI + 5,AL JMP GOUT DEAL5: ;處理2位數(shù) MOV AH,GRADEDI AND AH,0FH MOV AL,GRADEDI + 1 AND AL,0FH AAD MOV GRADEDI + 5,AL JMP GOUT DEAL4: ;處理3位數(shù) MOV AL,100 MOV GRADEDI + 5,AL JMP GOUT DEAL3: ;處理帶有小數(shù)部分的成績 MOV AL,GRADEDI + BX ;將小數(shù)部分處理 SUB AL,0 MO
14、V GRADEDI + 6,AL CMP BX,4 JZ DEAL4 ;.出現(xiàn)在輸入字符的第四位,則輸入的整數(shù)部分為3位數(shù) JG GOUT ;整數(shù)部分大于3位數(shù) CMP BX,3 JZ DEAL5 ;.出現(xiàn)在輸入字符的第三位,則輸入的整數(shù)部分為2位數(shù) JMP DEAL6 ;否則為個(gè)位數(shù) GOUT: POP DX POP CX POP BX POP AX RET STORE_STUDENT_GRADE ENDP;*排序?qū)W生成績的函數(shù)* SORT PROC PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI PUSH DI MOV DX,0 MOV DL,NUMBER+
15、2 LOOP1: ;使用冒泡排序法 MOV CX,DX MOV DI,0 MOV SI,0 LOOP2: ;先比整數(shù)部分,再比小數(shù)部分 MOV AL,GRADEDI + 5 CMP AL,GRADEDI + 12 JG NEXT ;大于,向下個(gè)移動 JL SWAP1 ;小于,交換成績,名字 ;等于,比較小數(shù)部分 MOV AL,GRADEDI + 6 CMP AL,GRADEDI + 13 JGE NEXT ;大于或等于,向下個(gè)移動 JL SWAP1 ;小于,交換成績,名字 SWAP1: MOV BX,SI SWAP11: ;交換學(xué)生信息 MOV AL,INFORMATIONBX + 2 XCH
16、G AL,INFORMATIONBX + 22 MOV INFORMATIONBX + 2,AL INC BX CMP AL,$ JNZ SWAP11 PUSH BX MOV BX,0 SWAP2: ;交換學(xué)生成績 MOV AL,GRADEDI + BX XCHG AL,GRADEDI + BX + 7 MOV GRADEDI + BX,AL INC BX CMP BX,7 JNZ SWAP2 POP BX NEXT: ADD SI,20 ADD DI,7 DEC CX JNZ LOOP2 DEC DX JNZ LOOP1 POP DI POP SI POP DX POP CX POP BX
17、POP AX RET SORT ENDP;*顯示最后結(jié)果的函數(shù)* FIND_RESULT PROC PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI PUSH DI MOV BX,0 MOV CX,0 MOV CL,NUMBER+2 ;cl中保存學(xué)生人數(shù) MOV DI,0 MOV SI,0 F1: MOV AL,GRADEDI + 5 CMP AL,100 JG FOUT ;大于100 JZ F90 ;等于100 ;小于100 CMP AL,90 JGE F90 ;大于等于90 ;小于90 CMP AL,80 JGE F80 ;大于等于80 ;小于80 CMP A
18、L,70 JGE F70 ;大于等于70 ;小于70 CMP AL,60 JGE F60 ;大于等于60 ;小于60 ;處理=90 MOV DL,N0 INC DL MOV N0,DL JMP FNEXT F80: ;處理大于等于80小于90 MOV DL,N1 INC DL MOV N1,DL JMP FNEXT F70: ;處理大于等于70小于80 MOV DL,N2 INC DL MOV N2,DL JMP FNEXT F60: ;處理大于等于60小于70 MOV DL,N3 INC DL MOV N3,DL JMP FNEXT F2: ADD DI,7 DEC CX JNZ F1 ;處
19、理所有學(xué)生 MOV DX,OFFSET KAISHISHUCHU ;打印一段* MOV AH,09 INT 21H MOV DX,OFFSET AVERAGE_GRADE ;打印平均成績 MOV AH,09 INT 21H MOV AX,BX MOV DX,0 MOV CX,0 MOV CL,NUMBER+2 DIV CX MOV CL,10 DIV CL CALL SHOW ;先打印平均成績的整數(shù)部分 PUSH AX MOV DL,. ;打印. MOV AH,2 INT 21H POP AX MOV AL,AH CALL SHOW ;再打印平均成績的小數(shù)部分 MOV DX,OFFSET RE
20、SULT1 ;輸出大于等于90的人數(shù) MOV AH,09 INT 21H MOV AL,N0 CALL SHOW MOV DX,OFFSET RESULT2 ;輸出大于等于80并小于90的人數(shù) MOV AH,09 INT 21H MOV AL,N1 CALL SHOW MOV DX,OFFSET RESULT3 ;輸出大于等于70并小于80的人數(shù) MOV AH,09 INT 21H MOV AL,N2 CALL SHOW MOV DX,OFFSET RESULT4 ;輸出大于等于60并小于70的人數(shù) MOV AH,09 INT 21H MOV AL,N3 CALL SHOW MOV DX,OF
21、FSET RESULT5 ;輸出小于60的人數(shù) MOV AH,09 INT 21H MOV AL,N4 CALL SHOW RET FIND_RESULT ENDP;*輸出分?jǐn)?shù)排序的函數(shù)* _DISPLAY PROC PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI PUSH DI MOV DX, OFFSET GRADE_RANK MOV AH,09 INT 21H MOV CX,0 MOV CL,NUMBER+2 ;cl中保存學(xué)生人數(shù) MOV DI,0 MOV SI,0 D1: MOV DX, OFFSET INFORMATION ADD DX,SI ADD DX,2 MOV AH,09 INT 21H MOV DX, OFFSET BLANK ;打印一段空白 MOV AH,09 INT 21H mov Al,GRADEDI + 5 push ax MOV GRADEDI + 5,$ ;將保存成績的單元中第6個(gè)字節(jié)置為$,便
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小半徑曲線盾構(gòu)隧道掘進(jìn)對周圍復(fù)雜環(huán)境影響研究
- 基于2025年度的加工承攬合同安全監(jiān)督管理2篇
- 安徽數(shù)學(xué)二年級數(shù)學(xué)試卷
- Z公司精益成本管理優(yōu)化研究
- 潮州暑假招生數(shù)學(xué)試卷
- 2025年度交通安全設(shè)施生產(chǎn)與安裝合同4篇
- 二零二四年度醫(yī)療設(shè)備采購與技術(shù)支持合同
- 二零二五版綠色施工基坑監(jiān)測與環(huán)保服務(wù)合同正范2篇
- 生物炭-鐵復(fù)合材料對重金屬污染土壤的修復(fù)及微生物的影響研究
- 作為競爭對手的外國運(yùn)動員代言效果
- 2024年高考語文備考之??甲骷易髌罚ㄏ拢褐袊F(xiàn)當(dāng)代、外國
- 《裝配式蒸壓加氣混凝土外墻板保溫系統(tǒng)構(gòu)造》中
- T-CSTM 01124-2024 油氣管道工程用工廠預(yù)制袖管三通
- 2019版新人教版高中英語必修+選擇性必修共7冊詞匯表匯總(帶音標(biāo))
- 新譯林版高中英語必修二全冊短語匯總
- 基于自適應(yīng)神經(jīng)網(wǎng)絡(luò)模糊推理系統(tǒng)的游客規(guī)模預(yù)測研究
- 河道保潔服務(wù)投標(biāo)方案(完整技術(shù)標(biāo))
- 品管圈(QCC)案例-縮短接臺手術(shù)送手術(shù)時(shí)間
- 精神科病程記錄
- 閱讀理解特訓(xùn)卷-英語四年級上冊譯林版三起含答案
- 清華大學(xué)考博英語歷年真題詳解
評論
0/150
提交評論