版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、.匯編語(yǔ)言課程實(shí)習(xí)報(bào)告實(shí)習(xí)題目 計(jì)算比賽成績(jī)學(xué)生姓名 班級(jí)(學(xué)號(hào)) 計(jì)科1123班 201211621301 院系 信息學(xué)院計(jì)算機(jī)系 指導(dǎo)老師 提交時(shí)間 2014年5月28 日成績(jī)目 錄 1 課程實(shí)習(xí)任務(wù)22 基本知識(shí)2 2.1 匯編語(yǔ)言程序結(jié)構(gòu)3 2.2 關(guān)鍵指令分析4 2.3 匯編語(yǔ)言上機(jī)過(guò)程43 總體分析5 3.1 程序功能分析5 3.2 設(shè)計(jì)思路5 3.3 程序框圖64 代碼實(shí)現(xiàn)75 調(diào)試過(guò)程及操作說(shuō)明116 總結(jié)12 7 參考文獻(xiàn)12 1 課程實(shí)習(xí)任務(wù) 計(jì)算比賽成績(jī)系統(tǒng) 基本功能: (1) 有9名評(píng)委,每個(gè)評(píng)委給分范圍為010(整數(shù)):由鍵盤輸入; (2) 9名評(píng)委給分中,去掉一個(gè)最
2、高分和一個(gè)最低分,剩余7名評(píng)委的平均分即為參賽者的得分(精確到小數(shù)點(diǎn)后二位,不考慮四舍五入); (3) 將最后得分在光標(biāo)位置處顯示出來(lái)。 2 基本知識(shí) 2.1 匯編語(yǔ)言程序結(jié)構(gòu) 匯編語(yǔ)言是計(jì)算機(jī)能夠提供給用戶使用的最快而又最有效的語(yǔ)言,也是能夠利用計(jì)算機(jī)所有硬件特性并能控制硬件的唯一語(yǔ)言。也因此匯編語(yǔ)言的程序結(jié)構(gòu)也是多種多樣的,我們熟知的結(jié)構(gòu)有循環(huán)、分支程序、子程序和宏匯編。而循環(huán)程序又有簡(jiǎn)單循環(huán)和多重循環(huán),最重要的是我們要控制好循環(huán)的次數(shù);分支程序則是由設(shè)定條件不同而跳轉(zhuǎn)到不用的分支,來(lái)實(shí)現(xiàn)不同的功能;子程序則是我們?yōu)榱税颜麄€(gè)程序模塊化,使得讀程序的人容易理解你的程序功能;宏則是一種另類的子
3、程序,是有些程序?yàn)榱四茉跁r(shí)間上達(dá)到嚴(yán)格的要求和一些功能代碼簡(jiǎn)短的多參數(shù)傳遞的程序?yàn)榱朔奖銋?shù)傳遞而使用的,而犧牲一點(diǎn)點(diǎn)空間來(lái)實(shí)現(xiàn),當(dāng)然宏和子程序的工作機(jī)制也是不同的。 2.2 關(guān)鍵指令分析 2.2.1 數(shù)據(jù)傳送指令 mov指令:mov指令可以在CPU內(nèi)或CPU和存儲(chǔ)器之間傳送字或者字節(jié)。 PUSH和POP指令:這兩條分別是堆棧的進(jìn)棧和出棧指令。 XCHG指令:它可以在寄存器之間或者在寄存器和儲(chǔ)存器之間交換信息。 2.2.2 地址傳送指令 LEA指令:將源操作數(shù)的有效地址送到指定的寄存器中。不能使用段寄存 器,源操作數(shù)可以使用除立即數(shù)和寄存器外的任一種寄存器尋址方式。 2.2.3 類型轉(zhuǎn)換指令
4、CBW指令:將AL的內(nèi)容符號(hào)擴(kuò)展到AH,形成AX中的字 2.2.4 算數(shù)指令 ADD指令:進(jìn)行加法操作 INC指令:自加1 SUB指令:進(jìn)行減法操作 DEC 指令:自減1 CMP指令:將兩個(gè)操作數(shù)進(jìn)行減法操作,但不保存結(jié)果,只設(shè)置條件標(biāo)志位 MUL指令:進(jìn)行無(wú)符號(hào)乘法操作 DIV指令:進(jìn)行無(wú)符號(hào)除法操作 2.2.5 邏輯指令 AND指令:進(jìn)行邏輯與操作,見0得0 OR指令:進(jìn)行邏輯或操作,見1得1 XOR指令:進(jìn)行異或操作,相同得0,不同得1 2.2.6 控制轉(zhuǎn)移指令 JMP指令:無(wú)條件跳轉(zhuǎn)到指定位置 條件轉(zhuǎn)移指令:根據(jù)上一條指令所設(shè)置的條件碼來(lái)判別測(cè)試條件,每一種轉(zhuǎn) 移指令有它的測(cè)試條件,滿
5、足測(cè)試條件則轉(zhuǎn)移到指令指定的位置 LOOP指令: 當(dāng)測(cè)試條件碼CX不為0時(shí),循環(huán)指定程序段 CALL指令:把子程序的返回地址存入棧中,以便子程序返回主程序時(shí)調(diào)用 RET指令:轉(zhuǎn)移到子程序的入口地址去繼續(xù)執(zhí)行 2.3 匯編語(yǔ)言上機(jī)過(guò)程 上機(jī)過(guò)程是我們編寫好程序后驗(yàn)證的最好手段,也是我們對(duì)我們寫得程序進(jìn)行調(diào)試必不可少的一個(gè)過(guò)程。上機(jī)過(guò)程我們首先要把我們編寫的程序在編譯器里對(duì)它進(jìn)行編譯看看是否有語(yǔ)法上的錯(cuò)誤,然后編譯生成.obj文件,最后連接生成可執(zhí)行文件.exe,然后我們要對(duì)生成的可執(zhí)行文件進(jìn)行調(diào)試,看看是否有邏輯上的錯(cuò)誤,如果有邏輯上的錯(cuò)誤那么我們還要對(duì)程序進(jìn)行修改,知道沒有邏輯上的錯(cuò)誤時(shí),我們
6、就可以運(yùn)行程序,并得到我們想要的結(jié)果了。上機(jī)過(guò)程大概課分為四部分:編輯、編譯、調(diào)試、運(yùn)行。 只有通過(guò)上機(jī)過(guò)程你才能發(fā)現(xiàn)你的程序是否有邏輯上或者語(yǔ)法上的錯(cuò)誤,最重要的是檢測(cè)運(yùn)行結(jié)果是不是你理論上的結(jié)果。我們只有在上機(jī)過(guò)程中才能發(fā)現(xiàn)問(wèn)題,然后解決問(wèn)題,最終得到我們想要的結(jié)果。3.總體分析 3.1程序功能分析 通過(guò)讀取依次從鍵盤輸入的9個(gè)兩位的十進(jìn)制數(shù)得分,將得分保存在字符串中,然后用冒泡法將9個(gè)數(shù)的位置按大小重新排列并輸出,再將中間的7個(gè)數(shù)累加起來(lái)除以7,即得到去掉最高分和最低分之后的平均分,最后設(shè)置光標(biāo)位置到平均分處。3.2設(shè)計(jì)思路通過(guò)記錄鍵盤,將ASCII碼轉(zhuǎn)化為二進(jìn)制數(shù)寸入長(zhǎng)度為9的字符串中
7、,此部分使用用循環(huán)結(jié)構(gòu)。若輸入的兩位數(shù)的首位,即十位,非0或非1,則提示錯(cuò)誤并要求重復(fù)輸入,若輸入的個(gè)位數(shù)非09中的數(shù),則提示錯(cuò)誤并要求重復(fù)輸入。用冒泡法重排9個(gè)數(shù),使得第1和第9個(gè)數(shù)分別為最大數(shù)和最小數(shù),并在屏幕中依次顯示出來(lái)。然后用循環(huán)語(yǔ)句求出9個(gè)數(shù)中中間的7個(gè)數(shù)的和,即總得分,若總得分為70分,則直接輸出平均分:10.00分。若小于70分則將總得分除以得到的商作為平均分的個(gè)位數(shù),輸出一個(gè)小數(shù)點(diǎn),將余數(shù)乘以10再除以7,如此循環(huán)3次,后兩次不輸出小數(shù)點(diǎn),得到精確到小數(shù)點(diǎn)后兩位的平均的分?jǐn)?shù),再將平均分輸出。最后改變光標(biāo)位置為平均得分處。3.3 程序設(shè)計(jì)框圖開始輸入9個(gè)分?jǐn)?shù)按大小重排分?jǐn)?shù)求中間
8、7個(gè)數(shù)的和總分>=70?YESNO平均分=10.00平均分=總分/7輸出平均分改變光標(biāo)位置結(jié)束4.代碼實(shí)現(xiàn)DATAS SEGMENT RESULT DB 10 DUP(?) STRING1 DB 'Please input integer(0-10) ' NUMBER DB 31H,': ','$' STRING2 DB 0AH,'The ranged scores are:','$' STRING3 DB 'After removing the highest and lowest score, t
9、he average score is: ','$' ERROR DB ' out of range',0AH,0DH,'$' ERROR1 DB ' is not an integer',0AH,0DH,'$' ERROR2 DB ' is not an number',0AH,0DH,'$'DATAS ENDSSTACKS SEGMENT ;此處輸入堆棧段代碼STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STAC
10、KSCR PROC NEAR ;設(shè)置一個(gè)子程序PUSH AXPUSH BXMOV AH,02HMOV DL,0DH;回車INT 21HMOV DL,0AH;換行INT 21HPOP BXPOP AXRETCR ENDPSTART: MOV AX,DATAS MOV DS,AX XOR SI,SI MOV CX,9 MOV AH, 00HMOV AL, 10 ;選擇顯示方式10H(16色圖形)INT 10HMOV AH, 10HMOV AL, 00HMOV BH, 10H ;背景設(shè)為綠色(02H也可以,是用DEBUG調(diào)試出來(lái)的)MOV BL, 0 ;選擇0號(hào)調(diào)色板INT 10HINPUT: LE
11、A DX,STRING1MOV AH,9;9號(hào)功能,顯示字符串INT 21H;的邏輯地址 MOV AH,1;AL=輸入字符INT 21HSUB AL,30H;把輸入的字符ASCII轉(zhuǎn)換成數(shù)值MOV DL,10MUL DL;十位數(shù)乘以10MOV DX,AX;把十位數(shù)存放在DLMOV AH,1INT 21HMOV BL,'.'CMP AL,BL;判斷個(gè)位數(shù)是否是小數(shù)點(diǎn),因?yàn)橐斎氲臄?shù)是整數(shù),用這種方法來(lái)提示輸入的數(shù)不能是小數(shù)JE ER1SUB AL,30HADD AL,DL;個(gè)位數(shù)和十位數(shù)相加CMP AL,0;跟0比較JB ER;小于0則調(diào)到ERCMP AL,10;跟10比較JA
12、ER;大于10則調(diào)到ERMOV RESULTSI,AL;把AL的值存放在RESULTINC SI ;SI自加1INC NUMBERCALL CR;調(diào)用子程序LOOP INPUTJMP RANGE_0;轉(zhuǎn)入排序ER: LEA DX,ERROR;取ERROR的偏移地址 MOV AH,9 INT 21H JMP INPUTER1: LEA DX,ERROR1 MOV AH,9 INT 21H JMP INPUTRANGE_0:MOV BX,1MOV CX,9XOR DI,DIRANGE:MOV AL,RESULTDI;把RESULT(I)送到ALCMP AL,RESULTDI+1;進(jìn)行比較JAE N
13、EXT_1;大于或等于跳到NEXT_1XCHG RESULTDI+1,AL;小于則進(jìn)行交換MOV RESULTDI,AL;保存較大的數(shù)MOV BX,0NEXT_1:INC DILOOP RANGECMP BX,0JE RANGE_0 LEA DX,STRING2;取STRING2的偏移地址 MOV AH,9 INT 21H MOV CX,9;顯示輸出的次數(shù) XOR SI,SI;SI;清零 MOV AH,2RANGE_OUTPUT:;輸出排序后的得分 MOV DL,RESULTSI ADD DL,30H;把DL的值轉(zhuǎn)換成ASCII CMP DL,39H;判斷是否是10分 JA TENS_1;10
14、分就跳到TEXT_1 JBE TENS_0;不是就跳到TEXT_0TENS_1: MOV BX,1 MOV DL,'1'輸出字符1 INT 21H MOV DL,'0'輸出字符0 INT 21H INC SI MOV DL,','輸出逗號(hào) INT 21H JMP NEXT_2TENS_0:;十位數(shù)位0,則按原分輸出 INT 21H INC SI MOV DL,',' INT 21HNEXT_2: LOOP RANGE_OUTPUT MOV AH,2 MOV DL,0AH;換行 INT 21H MOV DL,0AH;換行 INT 2
15、1H MOV DL,0DH;回車 INT 21H LEA DX,STRING3;取STRING3的偏移地址MOV AH,9H INT 21H MOV CX,7;累加中間7個(gè)數(shù)字 XOR AX,AX;AX清零 DEC SISUM:;求7個(gè)分?jǐn)?shù)的和DEC SI ADD AL,RESULTSI LOOP SUMCMP AL,46H;與滿分70 比較JAE FULL_MARK;大于等于挑到FULL_MARKJMP N_FULL_MARK;否則跳到N_FULL_MARKFULL_MARK:;滿分時(shí)MOV AH,2HMOV DL,'1'輸出字符1INT 21HMOV DL,'0
16、39;輸出字符0INT 21HMOV DL,'.'INT 21H;輸出字符MOV DL,'0'INT 21HMOV DL,'0'INT 21HJMP ENDINGN_FULL_MARK:;非滿分時(shí)MOV CX,3;設(shè)置循環(huán)3次,為下面的求兩位小數(shù)做準(zhǔn)備MOV BH,1;設(shè)置小數(shù)點(diǎn)出現(xiàn)一次DIVISION: MOV BL,7 DIV BL;除以7 PUSH AX;把除完后的AX入棧,存起來(lái) ADD AL,30H MOV DL,AL MOV AH,2 INT 21H;輸出商 CMP BH,0;把BX置為0,使下次循環(huán)不會(huì)出現(xiàn)小數(shù)點(diǎn) JE DOT MO
17、V DL,'.' INT 21H MOV BX,0DOT: POP AX;恢復(fù)之前入棧的余數(shù) MOV AL,AH;余數(shù)存入AL MOV DL,10 MUL DL;余數(shù)乘以10,結(jié)果存入AXLOOP DIVISIONENDING:MOV AH,02;調(diào)用2號(hào)功能,置光標(biāo)位置MOV BH,0;顯示頁(yè)MOV DX,0E48H;顯示行列,DH=0CH行,DL=48H列INT 10H;設(shè)置光標(biāo)位置MOV AH,4CH INT 21HCODES ENDS END START5調(diào)試過(guò)程及操作說(shuō)明如上圖,當(dāng)我們輸入一個(gè)整數(shù)的時(shí)候會(huì)自動(dòng)跳到下行輸入,輸入的數(shù)不對(duì)如負(fù)數(shù),小數(shù)點(diǎn),大于10的都會(huì)顯示錯(cuò)誤的信息然后自動(dòng)提醒再重新輸入。當(dāng)我們輸完數(shù)據(jù)之后會(huì)自動(dòng)排序和計(jì)算成績(jī)6.總結(jié)這次課程設(shè)計(jì),代碼雖然不長(zhǎng),當(dāng)卻可以從中了解很多的知識(shí),比如哪幾號(hào)的功能是做什么的,
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度餐飲服務(wù)業(yè)員工勞動(dòng)合同范本
- 二零二五年度2025年度酒店物業(yè)轉(zhuǎn)讓與品牌合作合同
- 2025年度二零二五特色餐飲店員工管理合同書
- 2025年度高層建筑腳手架施工與安全監(jiān)督服務(wù)合同
- 光纖通信在航空航天中的應(yīng)用考核試卷
- 城市規(guī)劃城市地下管線安全考核試卷
- 醫(yī)療器械用信息化學(xué)品的綠色合成與工藝優(yōu)化考核試卷
- 信息技術(shù)云計(jì)算與物聯(lián)網(wǎng)應(yīng)用考核試卷
- 冷凍飲品及食用冰制造行業(yè)產(chǎn)品追溯系統(tǒng)建設(shè)考核試卷
- 中藥店鋪經(jīng)營(yíng)計(jì)劃與目標(biāo)設(shè)定考核試卷
- 中建集團(tuán)面試自我介紹
- 《工業(yè)園區(qū)節(jié)水管理規(guī)范》
- 警校生職業(yè)生涯規(guī)劃
- 意識(shí)障礙患者的護(hù)理診斷及措施
- 2024版《53天天練單元?dú)w類復(fù)習(xí)》3年級(jí)語(yǔ)文下冊(cè)(統(tǒng)編RJ)附參考答案
- 2025企業(yè)年會(huì)盛典
- 215kWh工商業(yè)液冷儲(chǔ)能電池一體柜用戶手冊(cè)
- 場(chǎng)地平整施工組織設(shè)計(jì)-(3)模板
- 交通設(shè)施設(shè)備供貨及技術(shù)支持方案
- 美容美發(fā)店火災(zāi)應(yīng)急預(yù)案
- 餐車移動(dòng)食材配送方案
評(píng)論
0/150
提交評(píng)論