




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上微機(jī)原理匯編實(shí)驗(yàn)一專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 班 級 學(xué) 生 學(xué) 號 目 錄1、 實(shí)驗(yàn)要求.32、 實(shí)驗(yàn)設(shè)計(jì).31.分析及算法思想.32.數(shù)據(jù)結(jié)構(gòu).33.子程序.44.流程圖.4三、運(yùn)行實(shí)例.6四、實(shí)驗(yàn)總結(jié).6五、附頁(源代碼).7一、實(shí)驗(yàn)要求:一個(gè)學(xué)生的信息包括姓名、班級、學(xué)號(班內(nèi)序號)、成績。試編寫程序?qū)崿F(xiàn)以下功能:(1)能錄入學(xué)生成績(十進(jìn)制形式);提示:輸入形如:tom 301 16 95回車,每名學(xué)生用一行,選擇一個(gè)特殊符表示輸入結(jié)束;(2)能按要求:如學(xué)號或成績進(jìn)行排序顯示;(3)能統(tǒng)計(jì)平均成績;(4)能統(tǒng)計(jì)不及格、60-70、70-80、80-90、90
2、-100各分?jǐn)?shù)段的人數(shù)。2、 實(shí)驗(yàn)設(shè)計(jì):1.分析及算法思想:(1)采用數(shù)組進(jìn)行數(shù)據(jù)存儲:學(xué)生數(shù)目信息數(shù)組(存儲學(xué)生數(shù)目),學(xué)生信息數(shù)組(按班級-學(xué)號-姓名格式存儲),平均成績數(shù)組。五個(gè)DB變量記錄各分?jǐn)?shù)段人數(shù)。 (2)輸入學(xué)生數(shù)目保存在數(shù)組中,提示輸入學(xué)生信息并存儲,對于字符串輸入進(jìn)行轉(zhuǎn)換,以二進(jìn)制的形式存儲在數(shù)據(jù)段中。采用冒泡排序?qū)?shù)據(jù)段中的人員信息進(jìn)行排序,以成績?yōu)閰?shù)進(jìn)行遍歷,統(tǒng)計(jì)各分?jǐn)?shù)段人數(shù)并將同時(shí)求出平均成績,輸出運(yùn)算結(jié)果。2.數(shù)據(jù)結(jié)構(gòu): (1)輸入:a. 學(xué)生數(shù)目數(shù)組number db 3 dup(0) 說明:第一個(gè)存?zhèn)€/十位(ASCII碼),第二個(gè)存?zhèn)€位(ASCII碼),第三個(gè)存
3、學(xué)生數(shù)(二進(jìn)制) b. 學(xué)生信息數(shù)組information db 99 dup(20 dup(0)說明:用20字節(jié)單元表示學(xué)生信息,0-19中:0對應(yīng)最大字符,1對應(yīng)實(shí)際輸入,2-18對應(yīng)輸入信息,19對應(yīng)'$' c.成績數(shù)組grade db 99 dup(7 dup(0) 說明:第一個(gè)存整數(shù)部分(二進(jìn)制形式),第二個(gè)存小數(shù)部分(二進(jìn)制形式)d.平均成績數(shù)組average_grade_buffer db 2 dup(0)說明:和成績數(shù)組原理一樣(2) 排序:(按成績分布排序)(3)提示信息:Student_num:提示輸入學(xué)生數(shù)目 student_information :提示
4、輸入學(xué)生信息 student_grade:提示輸入成績信息 average_grade:提示輸出平均成績 grade_rank :提示輸出成績排名 Result1 :(90-100)分?jǐn)?shù)段人數(shù) Result2 :(80-90)分?jǐn)?shù)段人數(shù) Result3 :(70-80)分?jǐn)?shù)段人數(shù) Result4 :(60-70)分?jǐn)?shù)段人數(shù) Result5:(0-60)分?jǐn)?shù)段人數(shù) blank :輸出空格,便于查看結(jié)果 huanhang :輸出換行,便于查看結(jié)果 3.子程序:(1)store_student_num 存儲用戶輸入的學(xué)生數(shù)目;(2)store_student_information存儲學(xué)生姓名和班級
5、和學(xué)號;(3)store_student_grade存儲學(xué)生成績;(4)sort排序?qū)W生成績的函數(shù);(5)find_result顯示最后結(jié)果的函數(shù);(6)display輸出分?jǐn)?shù)排序的函數(shù)。(7)show將二進(jìn)制數(shù)(不大于127的十進(jìn)制整數(shù))輸出的函數(shù)4.流程圖:3、 運(yùn)行實(shí)例:輸入四個(gè)學(xué)生的信息:結(jié)果如下4、 實(shí)驗(yàn)總結(jié) 通過這次的匯編程序,我從中學(xué)習(xí)到了很多知識。雖然剛開始的時(shí)候遇到了很多難題,但是通過與老師、同學(xué)的交流之后,逐步克服了一個(gè)個(gè)的難題。提高了自己編程的思維能力,在將來的學(xué)習(xí),生活之中能夠快速的解決問題。匯編相對于別的編程語言而言,難度是比較大。匯編是直接對CUP進(jìn)行操作,能夠直接
6、控制計(jì)算機(jī)編程。由于匯編不像JAVA 那樣的高級編程語言面向?qū)ο?,在編程的時(shí)候思維有點(diǎn)亂,容易出錯(cuò),而且小的錯(cuò)誤也不容易找到,特別是程序代碼長的時(shí)候。5、 附頁(源代碼);輸入學(xué)生數(shù)目格式:1到99的整數(shù);輸入學(xué)生信息格式:班級(class)-學(xué)號(NUM)姓名(NAME),班級最多5位,學(xué)號最多5位,姓名最多6位,加上1位中間分隔符 ;輸入學(xué)生成績格式:0.0-100.0 最多一位小數(shù);!警告:任何錯(cuò)誤的輸入都將導(dǎo)致程序運(yùn)行失敗或錯(cuò)誤!;#數(shù)據(jù)段開始DATAS SEGMENT ;此處輸入數(shù)據(jù)段代碼 ; 輸入輸出提示字符 student_num db 'Please inpu
7、t the number of students(1-99):',0dh,0ah,'$' student_information db 0dh,0ah,'Please input the student information(CLASS-NUM-NAME):',0dh,0ah,'$' student_grade db 0dh,0ah,'Please input the student grade(0.0-100.0):',0dh,0ah,'$' average_grade db 0dh,0ah,'
8、The average grade is:',0dh,0ah,'$' result1 db 0dh,0ah,'The number of student in Up 90 is:',0dh,0ah,'$' ;各分?jǐn)?shù)段人數(shù) result2 db 0dh,0ah,'The number of student in 80-90 is:',0dh,0ah,'$' result3 db 0dh,0ah,'The number of student in 70-80 is:',0dh,0ah,'
9、$' result4 db 0dh,0ah,'The number of student in 60-70 is:',0dh,0ah,'$' result5 db 0dh,0ah,'The number of student in Below 60 is:',0dh,0ah,'$' grade_rank db 0dh,0ah,'The grade rank(from high to low)is:',0dh,0ah,'$' ;打印排名 blank db ' ','$&
10、#39; 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é)單元表示學(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ù),
11、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 0DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: ;此處輸入代碼段代碼 MOV AX,DATAS MOV DS,AX mov si,0 ;指向每個(gè)學(xué)生信息 mov di,0 ;指向每個(gè)學(xué)生成績 mov cx,100
12、;初始化學(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: mov dx, offset student_information ;請求輸入學(xué)生信息 mov ah,09 int 21h call store_student_information ;存儲學(xué)生信息 add si,20 ;指向下一個(gè)學(xué)生信息
13、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 find_result ;顯示平均成績和分段人數(shù) call display ;顯示排序結(jié)果 OutToDOS: mov ah,1 ;任意鍵結(jié)束 int 21h mov ax,4c00h ;返回DOS int 21h ;#存儲學(xué)生數(shù)目的函數(shù)store_student_num proc ;調(diào)用之后
14、,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 ;小于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:
15、 pop bx pop ax retstore_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 21h mov bl,informationsi + 1 ;實(shí)際輸入的字符個(gè)數(shù) mov al,' ' mov informationsi + bx + 2,al ;將回車換成' ' mov informationsi+
16、19,'$' ;將每個(gè)存儲單元的最后一個(gè)字節(jié)置為'$'以便輸出 pop dx pop bx pop ax retstore_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 int 21h cmp al,0dh ;判斷是否為回車 jz deal2 ;是回車 cmp al,'.' ;是否為小數(shù)點(diǎn) jnz deal1 ;不是小數(shù)點(diǎn)
17、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 deal5 ;輸入數(shù)目為2位數(shù) ;個(gè)位數(shù) deal6: ;處理個(gè)位數(shù) mov al,gradedi sub al,'0' mov grad
18、edi + 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' mov gradedi + 6,al cmp bx,4 jz deal4 ;'.'出現(xiàn)在輸入字符的
19、第四位,則輸入的整數(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 retstore_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+2Loop1: ;使用冒泡排序法 mov cx,dx mov di,0 m
20、ov 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,siswap11: ;交換學(xué)生信息 mov al,informationbx + 2 xchg al,informationbx + 22 mov informationb
21、x + 2,al inc bx cmp al,'$' jnz swap11 push bx mov bx,0swap2: ;交換學(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 pop ax retsort endp ;#顯示最后結(jié)果的函數(shù)
22、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 al,70 jge F70 ;大于等于70 ;小于70 cmp al
23、,60 jge F60 ;大于等于60 ;小于60 ;處理<60 mov dl,n4 inc dl mov n4,dl Fnext: ;處理平均成績 處理方式:整數(shù)部分*10+小數(shù)部分*10,結(jié)果先除以學(xué)生人數(shù),再輸出(輸出整數(shù)時(shí)除以10) mov al,gradedi + 5 mov dl,10 mul dl mov dl,gradedi + 6 mov dh,0 add ax,dx add bx,ax jmp F2 F90: ;處理>=90 mov dl,n0 inc dl mov n0,dl jmp Fnext F80: ;處理大于等于80小于90 mov dl,n1 inc
24、 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 ;處理所有學(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
25、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 result1 ;輸出大于等于90的人數(shù) mov ah,09 int 21h mov al,n0 call show mov dx,offset result2 ;輸出大于等于80并小于90的人數(shù) mov ah,09 int 21h
26、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,offset result5 ;輸出小于60的人數(shù) mov ah,09 int 21h mov al,n4 call show Fout: pop di pop si pop dx pop cx pop bx pop ax retfind_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
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 藝術(shù)展覽約稿信范文寫作范文
- 環(huán)境適應(yīng)進(jìn)化路徑-洞察及研究
- 少兒街舞跨文化交流計(jì)劃
- 鐵路運(yùn)輸貨物跟蹤及反饋措施
- 幼兒園園務(wù)管理2025年度優(yōu)化計(jì)劃
- 2025屆四川省南充市高坪區(qū)白塔中學(xué)物理高二第二學(xué)期期末學(xué)業(yè)水平測試試題含解析
- 醫(yī)療安全文化非計(jì)劃拔管防范措施
- 仁愛版七年級上冊作文題型解析及范文
- 交通事故私了協(xié)議書范文適用案例
- 家庭累積風(fēng)險(xiǎn)對青少年外化問題行為的影響及干預(yù)研究
- 機(jī)加工工藝培訓(xùn)
- CT增強(qiáng)掃描造影劑外滲的預(yù)防與處理
- 深靜脈置管的維護(hù)與護(hù)理
- 孤獨(dú)癥業(yè)務(wù)管理制度
- 勞務(wù)服務(wù)購買協(xié)議書范本
- Alport綜合征基因診斷
- 搜身帶離技術(shù)課件
- 校準(zhǔn)員試題及答案
- 2025-2030年中國臨空經(jīng)濟(jì)行業(yè)深度評估及市場研究發(fā)展研究報(bào)告
- 蕪湖勞動合同書版模板
- DB31/T 921-2015婚慶服務(wù)規(guī)范
評論
0/150
提交評論