匯編語言綜合實(shí)驗(yàn)_第1頁
匯編語言綜合實(shí)驗(yàn)_第2頁
匯編語言綜合實(shí)驗(yàn)_第3頁
匯編語言綜合實(shí)驗(yàn)_第4頁
匯編語言綜合實(shí)驗(yàn)_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

華北科技學(xué)院綜合性實(shí)驗(yàn)報(bào)告PAGE 第3頁華北科技學(xué)院綜合性實(shí)驗(yàn)報(bào)告課程名稱匯編語言實(shí)驗(yàn)學(xué)期2014至2015學(xué)年第1學(xué)期學(xué)生所在系部計(jì)算機(jī)學(xué)院網(wǎng)絡(luò)工程系年級(jí)三年級(jí)專業(yè)班級(jí)網(wǎng)絡(luò)B12-1學(xué)生姓名朱生軍學(xué)號(hào)201207024106任課教師李冬艷實(shí)驗(yàn)成績計(jì)算機(jī)學(xué)院制

《匯編語言》課程綜合性實(shí)驗(yàn)報(bào)告開課實(shí)驗(yàn)室:基礎(chǔ)一DATE\@"yyyy-MM-dd"2014-12-02實(shí)驗(yàn)題目顯示學(xué)生名次表一、實(shí)驗(yàn)?zāi)康倪M(jìn)行匯編語言程序設(shè)計(jì)應(yīng)用的綜合性訓(xùn)練。綜合運(yùn)用匯編語言循環(huán)程序、子程序、宏指令編程方法,提高匯編語言程序設(shè)計(jì)能力的應(yīng)用水平。二、設(shè)備與環(huán)境PC兼容機(jī)、Windows操作系統(tǒng)、匯編程序masmforwindows2012三、實(shí)驗(yàn)內(nèi)容編制一程序,要求接收從鍵盤輸入的一個(gè)班的學(xué)生的學(xué)號(hào)、姓名、成績,對(duì)學(xué)生的成績進(jìn)行排序,最后把學(xué)號(hào)、姓名、學(xué)生成績、名次顯示出來。實(shí)驗(yàn)要求:1.必須畫流程圖。2.本程序涉及匯編語言的多重循環(huán)、子程序及宏,其中成績輸入、計(jì)算學(xué)生名次、顯示學(xué)生名次都分別用子程序,也可用宏處理。3.要求用菜單選擇。具體要求:輸入1是數(shù)據(jù)錄入并輸出(包括姓名、學(xué)號(hào)、成績);輸入2是排序后的數(shù)據(jù)輸出(包括姓名、學(xué)號(hào)、成績、名次);輸入3是可以按學(xué)號(hào)查找某學(xué)生,并輸出其成績,選擇修改或不改成績。四、實(shí)驗(yàn)結(jié)果及分析(包括①已完成什么功能,②如何實(shí)現(xiàn)的、遇到的問題和解決辦法、流程圖和關(guān)鍵代碼解釋,③收獲和體會(huì)等)(一)、程序?qū)崿F(xiàn)的功能。1、本次實(shí)驗(yàn)中,我首先運(yùn)用了菜單,來實(shí)現(xiàn)選擇本程序的其他功能。2、學(xué)生信息(姓名,學(xué)號(hào),成績)的錄入以及顯示。3、對(duì)于學(xué)生的成績來進(jìn)行排序,然后顯示4、用學(xué)生的學(xué)號(hào)來查詢學(xué)生的信息。(二)、程序的分析:1、本程序中分別運(yùn)用了宏,子程序、定義提示符等,來簡化程序,并且讓程序更容易的看清楚。①:宏定義的舉例:PRINT MACROA LEA DX,A MOV AH,9 INT 21HENDM②:子程序定義的舉例:WEIZHIPROCsun PRINTstring6 PRINTstring7 PRINTstring8 sun RETOUTPUT_ALLpxPROC(子程序中嵌套子程序)callWEIZHI_pxLET2: movbx,15movax,x1MULBXmovb1,axCALLOUTPUTpxINCX1CMPX1,3 JNZLET2RETOUTPUT_ALLpxENDPWEIZHIENDP③:提示符定義的舉例:stringdb"pleaseinputname:",10,13,"$"string1db"pelaseinputSno:",10,13,"$"string3db"pleaseinputchengji:",10,13,"$"string4db"1:input.2:paixu.3:research.4:finish",10,13,'$'string5db'error',10,13,'$'2、程序的設(shè)計(jì):①:本程序中主程序用菜單來實(shí)現(xiàn)各個(gè)功能的選擇。首先鍵盤輸入數(shù)字,然后依次和1、2、3、4等比較,符合了之后跳入各個(gè)功能。每個(gè)功能之中,調(diào)用之后用的子程序,來實(shí)現(xiàn)自己的功能。菜單的流程圖如下:開始開始提示輸入錯(cuò)誤跳入一號(hào)功能程序跳入三號(hào)功能程序CMPAL,2CMPAL,4CMPAL,3Subal,30hCmpal,1跳入二號(hào)功能程序輸入執(zhí)行的功能號(hào)菜單結(jié)束YNYNYNNYJMP②:本程序中,第一個(gè)功能,輸入學(xué)生信息,并且顯示。首先調(diào)用輸入信息的子程序。我在實(shí)驗(yàn)開頭定義了三個(gè)數(shù)組,用來存放學(xué)生的姓名,學(xué)號(hào),成績等。每個(gè)人的每個(gè)信息預(yù)留15個(gè)單位。運(yùn)用1號(hào)功能來輸入姓名信息,之后判斷是不是回車,不是回車,指針加1,繼續(xù)輸入,是回車,跳入輸入學(xué)號(hào)的程序。依次類推,輸入成績用兩位數(shù)的輸入來實(shí)現(xiàn),輸入成績結(jié)束后,開始循環(huán)輸入第二個(gè)人的信息。等所有人的信息輸入之后,輸入信息的子程序結(jié)束。輸入信息流程圖在結(jié)尾。待所有人輸入完成之后,直接調(diào)用輸出信息的子程序。在子程序中,大循環(huán)中,運(yùn)用比較來判斷是否要繼續(xù)輸出。在輸出一個(gè)人的每個(gè)信息的時(shí)候,用B1指針來判斷輸出第幾個(gè)人的信息。輸出姓名、學(xué)號(hào)的時(shí)候,用2號(hào)功能,用movcx15和LOOP來實(shí)現(xiàn)輸出15次,用INCBX來實(shí)現(xiàn)依次向下的輸出。輸出完成后,繼續(xù)輸出學(xué)號(hào)(方法和輸出姓名一樣)。輸出程序用兩位數(shù)的輸出來實(shí)現(xiàn)。輸出成績結(jié)束后,開始循環(huán)輸出第二個(gè)人的信息。所有人的程序都輸出完成后,輸出結(jié)束。輸入學(xué)生信息的流程圖:跳入輸入信息子程序跳入輸入信息子程序MOVOUTNAME[BX],ALINCBX跳入輸入學(xué)號(hào)程序MOVOUTSnumber[bx],ALincBX跳入輸入成績(兩位)先輸入十位,再輸入個(gè)位。最后用ADDAL,DMOVOUTCHENGJI[BX],AL。把成績存在數(shù)組里面。輸入成績的子程序結(jié)束MOVAH,1INT21HCMPAL,13MOVAH,1INT21HCMPAL,13 LOOPNY LOOPNY③:排序并且輸出功能的實(shí)現(xiàn):首先調(diào)用比較的子程序。在子程序中,用CX來判斷要比較的人,用BX來作為成績的指針,用字符串的比較,來比較第一個(gè)人和第二個(gè)人的成績,如果第一個(gè)成績大于第二個(gè)成績,用addbx,15,來跳到第二個(gè)人的成績,用第二個(gè)成績和第三個(gè)成績比較。如果在以上的比較中,前一個(gè)人成績小于后一個(gè)人的成績,用xhagal,outchengji[bx+15]交換兩個(gè)人的成績。待所有人的成績排序好了之后,跳入姓名排序。用串傳送,來實(shí)現(xiàn)姓名的交換。過程中需要定義一個(gè)空串,來作為傳送中介。等姓名排序之后,跳入學(xué)號(hào)的排序(方法和姓名排序一樣)。學(xué)號(hào)排序完成后,排序子程序結(jié)束。之后調(diào)用排序后輸出的子程序(CALLOUTPUTpx),排序后輸出的方法和之前的輸出一樣。輸出后跳入菜單。④:本程序第三個(gè)功能,運(yùn)用學(xué)號(hào)來查找學(xué)生,并且輸出學(xué)生的各種信息;具體方法是:首先調(diào)用輸入學(xué)號(hào)的子程序,把輸入的學(xué)號(hào)放在另一個(gè)自己定義的數(shù)組里面(用來和之后學(xué)號(hào)數(shù)組里面的學(xué)號(hào)比較)。之后調(diào)用比較子程序(CALLBJ)。在比較的子程序里面,用外循環(huán)來確定比較的是第幾個(gè)人的學(xué)號(hào),內(nèi)循環(huán)用串比較來比較每一位的學(xué)號(hào),第一個(gè)人不復(fù)合后,用ADDBX,15來跳入第二個(gè)人的學(xué)號(hào)來比較。比較復(fù)合后,用JZLM1來跳到結(jié)尾,用MOVB1,BX來保存學(xué)號(hào)復(fù)合的人的位置。之后調(diào)用查找后的輸出子程序(CALLOUTPUT)。此時(shí)用MOVBX,B1來把要輸出的人的信息的位置,給BX指針。之后用循環(huán)輸出15次,來輸出這個(gè)人的每條信息。這個(gè)功能的用輸入的學(xué)號(hào)來匹配學(xué)生學(xué)號(hào)的流程圖在結(jié)尾。用成績比較,流程圖:MOVBX,0MOVBX,0讓成績從第0個(gè)開始addbx,15loopLlp5xchgaL,outchengji[bx+15]movoutchengji[bx],Aladdbx,15movaL,outchengji[bx]cmpaL,outchengji[bx+15]CX=0?比較結(jié)束,調(diào)用輸出 LOOPNYNY3、部分代碼分析:①輸入姓名、學(xué)號(hào)、成績等代碼INPUT_ALLPROCPRINTstringmovbx,b1l1:MOVAH,1INT21HCMPAL,13JZLP1(LP1為輸入學(xué)號(hào)的開始的提示,用于輸入完姓名跳入)MOVOUTNAME[BX],ALINCBXjmpL1首先用PRINTstring來顯示提示符pleaseinputname。然后用MOVBX,B1來賦給輸入姓名的頭地址,用1號(hào)功能輸入字符,再讓它和回車比較,如果是回車,表示輸入姓名結(jié)束,跳入輸出學(xué)號(hào)程序;如果不是回車,把那個(gè)字符存在OUTNAME[BX]中,BX自加一,JMPL1開始輸入第二個(gè)字符。輸入學(xué)號(hào)的代碼類似。②輸出姓名,學(xué)號(hào)、成績等代碼MOVCX,15 MOVBX,B1aa2: MOVDL,OUTSNUMBER[BX] MOVAH,2 INT21H INCBX LOOPaa2用MOVCX,15來循環(huán)輸出15次。MOVBX,B1是把要輸出的學(xué)號(hào)的第一位給BX,然后用2號(hào)功能輸出,用INCBX把指針往后移動(dòng)一位。用LOOPaa2來輸出下一個(gè)字符。當(dāng)輸出學(xué)號(hào)完成后,自動(dòng)跳入輸出成績。③比較成績,并排序:LLP5:movaL,outchengji[bx]cmpaL,outchengji[bx+15]jGLLP6xchgaL,outchengji[bx+15]movoutchengji[bx],alcallPX_MZLLP6:addbx,15loopLLP5比較成績,排序分兩個(gè)循環(huán),這段代碼為內(nèi)循環(huán)。首先把第一個(gè)人的成績給al它和第二個(gè)人的成績比較,如果大于第二個(gè),用Addbx,15把指針跳到第二個(gè)人的成績的位置,然后用moval,outchengji[bx],把第二個(gè)人的成績給al,與第三個(gè)人比較。如果前一個(gè)人成績,小于后一個(gè)人成績,用xchgaL,outchengji[bx+15];和movoutchengji[bx],al來交換兩個(gè)人的成績,跳入LLP6,重復(fù)上述操作。4、程序運(yùn)行截圖:菜單和一號(hào)功能菜單和二號(hào)功能菜單和三號(hào)功能三、實(shí)驗(yàn)心得體會(huì):本學(xué)期開設(shè)了匯編語言這門課程。在課程的最后,我們迎來了匯編大實(shí)驗(yàn)。在本學(xué)期的學(xué)習(xí)和做綜合實(shí)驗(yàn)的過程中,我積累了好多的問題,而且在昨晚綜合實(shí)驗(yàn)之后,我也有很多的心得體會(huì)。在剛剛拿到綜合實(shí)驗(yàn)題目的時(shí)候,我還是有些想法,就是運(yùn)用自己以前寫過的小的作業(yè)中的程序,再加上之后的子程序,宏等,可以完成這次實(shí)驗(yàn),當(dāng)我真正開始寫的時(shí)候,遇到好多問題。當(dāng)我把菜單寫完的時(shí)候,開始寫輸入、輸出的程序。在我最初想法下,我寫了代碼,但是在運(yùn)行的時(shí)候,不能按照實(shí)驗(yàn)要求,格式對(duì)齊,我知道,我在輸入的時(shí)候,指針的位置沒有搞定,計(jì)算了很多次,還是不對(duì)。這個(gè)問題,在問自己寢室同學(xué)和老師之后,很快就解決了。隨后,我完成了第一個(gè)功能。在第二個(gè)功能里面,我對(duì)按成績排序這一塊,有點(diǎn)不是很熟悉,在做實(shí)驗(yàn)的時(shí)候,卡在了這個(gè)環(huán)節(jié)。老師在上機(jī)課的時(shí)候,把同學(xué)的代碼拿出來給我講解的時(shí)候,自己跟的太慢,還是沒懂。對(duì)于冒泡排序,我在之前的作業(yè)中,用到過,但是,我在本次實(shí)驗(yàn)中,知道具體該怎么操作,但是對(duì)于代碼的寫作,還是不太熟悉。總會(huì)在這樣那樣的問題中卡住。在同學(xué)講解過后,我依舊存在著一些問題,這些問題有些都是書上有的,還有就是老師在上課舉例的時(shí)候,給我們講解的知識(shí)點(diǎn),通過翻書,翻筆記我明白了那些問題的答案。出現(xiàn)這些問題的原因就在于我上課聽課的認(rèn)真程度,以及下來做實(shí)驗(yàn)不愛自己翻書看看,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論