版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、微機(jī)原理與匯編語言程序設(shè)計(jì)報(bào)告 所在學(xué)院: 計(jì)算機(jī)工程學(xué)院 專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù)(網(wǎng)絡(luò)工程) 班 級(jí): 11計(jì)3Z 姓 名: 黃申祥 學(xué) 號(hào): 11141313 2013年6月1日1、 程序功能:1 從鍵盤輸入N個(gè)帶符號(hào)數(shù)(N值也從鍵盤輸入,N=65535),帶符號(hào)數(shù)為16位二進(jìn)制數(shù)范圍;2 找出這N個(gè)數(shù)中的最大值和最小值,并且顯示出來;3 計(jì)算這N個(gè)數(shù)的平均值,并且顯示出來。2、 程序設(shè)計(jì)總體思路程序按功能所屬主要分為7個(gè)模塊,7個(gè)模塊分別為一個(gè)主程序;SHOW歡迎子程序;NUM取數(shù)據(jù)個(gè)數(shù)子程序;READ數(shù)據(jù)輸入子程序;WRITE數(shù)據(jù)顯示子程序;MAXMIN求數(shù)據(jù)最大最小值子程序;ME
2、AN求數(shù)據(jù)平均值子程序。另外,為了更好地輸入輸出顯示,還設(shè)計(jì)了DPCRLF光標(biāo)回車換行子程序、NDPCRLF多個(gè)空格輸出顯示子程序。整個(gè)程序通過主程序中相關(guān)指令調(diào)用各個(gè)子程序,實(shí)現(xiàn)各個(gè)功能,這種模塊化的設(shè)計(jì)方法不僅簡(jiǎn)化了主程序,還可以重復(fù)利用已有子程序,提高編程效率。3、 程序分析程序運(yùn)行之初,首先展現(xiàn)在屏幕上的是程序歡迎界面。主程序通過調(diào)用SHOW歡迎子程序以實(shí)現(xiàn)此功能。歡迎界面之后,程序提示輸入數(shù)據(jù)個(gè)數(shù)N,通過調(diào)用NUM取數(shù)據(jù)個(gè)數(shù)子程序由此得到執(zhí)行READ數(shù)據(jù)輸入子程序的次數(shù),通過多重循環(huán)執(zhí)行此子程序以取得N個(gè)數(shù)據(jù)。當(dāng)數(shù)據(jù)輸入完成、順利保存后,通過調(diào)用BIOS功能實(shí)現(xiàn)對(duì)屏幕原有字句進(jìn)行清除
3、,調(diào)用WRITE數(shù)據(jù)顯示子程序?qū)⒂脩糁拜斎氲臄?shù)據(jù)顯示在屏幕上,數(shù)據(jù)的輸入顯示格式通過調(diào)用NDPCRLF多個(gè)空格輸出顯示子程序?qū)崿F(xiàn)。進(jìn)行最大最小值判斷,通過調(diào)用MAXMIN求數(shù)據(jù)最大最小值子程序,利用循環(huán)取得各個(gè)數(shù)據(jù)與假設(shè)的最大最小值進(jìn)行比較,滿足一定條件后將其替換。計(jì)算平均值,通過調(diào)用MEAN求數(shù)據(jù)平均值子程序,利用循環(huán)累加各個(gè)數(shù)據(jù)并除以N,求得最終結(jié)果。4、 程序流程圖1 主程序流程圖2 SHOW歡迎子程序流程圖3 NUM取數(shù)據(jù)個(gè)數(shù)子程序流程圖4 READ數(shù)據(jù)輸入子程序流程圖5 WRITE數(shù)據(jù)顯示子程序流程圖6 MAXMIN求數(shù)據(jù)最大最小值子程序流程圖7 MEAN求數(shù)據(jù)平均值子程序流程圖5
4、、 源程序列表文件內(nèi)容Microsoft (R) Macro Assembler Version 6.11 06/02/13 01:24:33tempfile.asm Page 1 - 1 0000DSEGSEGMENT;數(shù)據(jù)段 0000 77 65 6C 63 6F 6DMESS0DBwelcome to this program! -HUANG SHENXIANG 65 20 74 6F 20 74 68 69 73 20 70 72 6F 67 72 61 6D 21 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
5、20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
6、20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2D 2D 2D 2D 48 55 41 4E 47 20 53 48 45 4E 58 49 41 4E 47 00C8 3D 3D 3D 3D 3D 3DMESS1DB =Welcome to this program!=,$ 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 57 65 6C 63 6F 6D 65 20 74 6F 20 74 68 69 7
7、3 20 70 72 6F 67 72 61 6D 21 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 24 0101 50 6C 65 61 73 65MESS2DB Please input N(N=65535):,$ 20 69 6E 70 75 74 20 4E 28 4E 3C 3D 36 35 35 33 35 29 3A 24 011B 50 6C 65 61 73 65MESS3DB Please input numbers:,$ 20 69 6E 70 75 74 20 6E 75 6D 62 65 72 73 3A 24 0
8、131 0A 0D 0A 0D 59 6FMESS4DB 0AH,0DH,0AH,0DH,Your input are:,$ 75 72 20 69 6E 70 75 74 20 61 72 65 3A 24 0145 0A 0D 54 68 65 20MESS5DB 0AH,0DH,The MAX is:,$ 4D 41 58 20 69 73 3A 24 0153 0A 0D 54 68 65 20MESS6DB 0AH,0DH,The MIN is:,$ 4D 49 4E 20 69 73 3A 24 0161 0A 0D 54 68 65 20MESS7DB 0AH,0DH,The A
9、VERAGE is:,$ 41 56 45 52 41 47 45 20 69 73 3A 24 0173 00DISPMODDB ? 0174 0000COUNTDW ? 0176 03E8 ARRAYDW 1000 DUP(0) 0000 0946 0000WTEMPDW ? 0948 0000MAXAYDW ? 094A 0000MINAYDW ? 094CDSEGENDS 0000SSEGSEGMENT STACK;堆棧段 0000 0080 DB80HDUP(0) 00 0080SSEGENDS 0000CSEGSEGMENT;代碼段ASSUME DS:DSEG,SS:SSEG,CS
10、:CSEG 0000 B8 - RSTART:MOVAX,DSEG 0003 8E D8MOVDS,AX 0005 FCCLD ;CLD使DF復(fù)位,即DF=0,STD使DF置位,即DF=1 0006 E8 01B2CALLSHOW ;調(diào)用顯示歡迎界面 0009 BA 00C8 RMOVDX,OFFSET MESS1;顯示歡迎橫幅于第二頁 000C B4 09MOVAH,09H 000E CD 21INT21H 0010 E8 018CCALLDPCRLF 0013 E8 0189CALLDPCRLF 0016 BA 0101 RMOVDX,OFFSET MESS2;輸入元素個(gè)數(shù) 0019 B4
11、 09MOVAH,09H 001B CD 21INT21H 001D E8 009CCALL NUM;調(diào)用INPUT子程序 0020 8B 0E 0174 RMOV CX,COUNT;將輸入的元素個(gè)數(shù)值N傳遞給CX計(jì)數(shù)寄存器 0024 BB 0176 RMOV BX,OFFSET ARRAY 0027 BA 011B RMOVDX,OFFSET MESS3;輸入N個(gè)元素 002A B4 09MOVAH,9H 002C CD 21INT21H 002E E8 016ECALLDPCRLF 0031 E8 0094AGAIN1:CALLREAD;調(diào)用READ子程序,輸入元素 0034 89 07M
12、OVBX,AX;將出口參數(shù)存放到數(shù)據(jù)緩沖區(qū) 0036 43INCBX 0037 43INCBX 0038 E8 0164CALLDPCRLF;調(diào)用DPCRLF子程序,光標(biāo)回車換行以便輸入下一元素 003B E2 F4LOOPAGAIN1 003D B0 03MOVAL,3H 003F CD 10INT10H 0041 8B 0E 0174 RMOVCX,COUNT 0045 BB 0176 RMOVBX,OFFSET ARRAY 0048 BA 00C8 RMOVDX,OFFSET MESS1;顯示歡迎橫幅于第二頁 004B B4 09MOVAH,09H 004D CD 21INT21H 00
13、4F BA 0131 RMOVDX,OFFSET MESS4 0052 B4 09MOVAH,09H 0054 CD 21INT21H 0056 E8 0146CALLDPCRLF 0059 8B 07AGAIN2: MOV AX,BX 005B A3 0946 RMOV WTEMP,AX;將入口參數(shù)存放到共享變量 005E E8 00A8CALL WRITE ;調(diào)用WRITE子程序,顯示一個(gè)元素 0061 83 C3 02ADD BX,2 0064 E8 0149CALL NDPCRLF ;調(diào)用NDPCRLE子程序,光標(biāo)回車換行以便顯示下一個(gè)數(shù)據(jù) 0067 E2 F0LOOP AGAIN2
14、;執(zhí)行COUNT次循環(huán) 0069 B4 02MOVAH,2 006B B2 0DMOV DL,0DH 006D CD 21INT 21H 006F B2 0AMOVDL,0AH 0071 CD 21INT21H 0073 8B 0E 0174 RMOVCX,COUNT 0077 B8 0176 RMOVAX,OFFSET ARRAY 007A E8 00CFCALLMAXMIN ;調(diào)用MAXMIN子程序 007D BA 0145 RMOV DX,OFFSET MESS5 0080 B4 09MOV AH,09H 0082 CD 21INT 21H 0084 A1 0948 RMOV AX,MA
15、XAY 0087 A3 0946 RMOV WTEMP,AX 008A E8 007CCALLWRITE ;調(diào)用WRITE子程序輸出MAXAY 008D BA 0153 RMOVDX,OFFSET MESS6 0090 B4 09MOVAH,09H 0092 CD 21INT21H 0094 A1 094A RMOVAX,MINAY 0097 A3 0946 RMOVWTEMP,AX 009A E8 006CCALLWRITE ;調(diào)用WRITE子程序輸出MINAY 009D BA 0161 RMOV DX,OFFSET MESS7 00A0 B4 09MOV AH,09H 00A2 CD 21
16、INT 21H 00A4 A1 0174 RMOV AX,COUNT 00A7 50PUSH AX 00A8 B8 0176 RMOV AX,OFFSET ARRAY 00AB 50PUSH AX 00AC E8 00C3CALL MEAN 00AF 83 C4 04ADD SP,4 00B2 A3 0946 RMOV WTEMP,AX 00B5 E8 0051CALL WRITE ;調(diào)用WRITE子程序輸出平均值 00B8 B4 4CMOVAH,4CH 00BA CD 21INT 21H 00BCNUMPROC 00BC 50PUSHAX 00BD E8 0008CALLREAD 00C0
17、A3 0174 RMOVCOUNT,AX 00C3 E8 00D9CALLDPCRLF 00C6 58POPAX 00C7 C3RET 00C8NUMENDP 00C8READPROC;輸入有符號(hào)十進(jìn)制數(shù)的通用子程序:READ 00C8 53PUSHBX;出口參數(shù):AX=補(bǔ)碼表示的二進(jìn)制數(shù)值 00C9 51PUSHCX;負(fù)數(shù)用“-”引導(dǎo),數(shù)據(jù)范圍是+32767-32768 00CA 52PUSHDX 00CB 33 DBXORBX,BX;BX保存結(jié)果 00CD 33 C9XORCX,CX;CX為正負(fù)標(biāo)志,0為正,-1為負(fù) 00CF B4 01MOVAH,1;輸入一個(gè)字符 00D1 CD 21I
18、NT21H 00D3 3C 2BCMPAL,+;是“+”,繼續(xù)輸入字符 00D5 74 07JZREAD1 00D7 3C 2DCMPAL,-;是“-”,設(shè)置-1標(biāo)志 00D9 75 07JNZREAD2 00DB B9 FFFFMOVCX,-1 00DE B4 01READ1:MOVAH,1;繼續(xù)輸入字符 00E0 CD 21INT21H 00E2 3C 30READ2:CMPAL,0;不是09之間的字符,則輸入數(shù)據(jù)結(jié)束 00E4 72 16JBREAD3 00E6 3C 39CMPAL,9 00E8 77 12JAREAD3 00EA 2C 30SUBAL,30H;是09之間的字符,則轉(zhuǎn)換
19、為二進(jìn)制數(shù);利用移位指令,實(shí)現(xiàn)數(shù)值乘10:BXBX 017D 8B 4E 06MOV CX,BP+6;從堆棧中取得數(shù)據(jù)個(gè)數(shù)-CX 0180 33 F6XOR SI,SI;SI保存求和的低16位值 0182 8B FEMOV DI,SI;DI保存求和的高16位值 0184 8B 07MEAN1:MOV AX,BX;取出一個(gè)數(shù)據(jù)-AX 0186 99CWD;符號(hào)擴(kuò)展-DX 0187 03 F0ADD SI,AX;求和低16位 0189 13 FAADC DI,DX;求和高16位 018B 43INC BX;指向下一個(gè)數(shù)據(jù) 018C 43INC BX 018D E2 F5LOOP MEAN1;循環(huán)
20、018F 8B C6MOV AX,SI;累加和在DX.AX 0191 8B D7MOV DX,DI 0193 8B 4E 06MOV CX,BP+6;數(shù)據(jù)個(gè)數(shù)在CX 0196 F7 F9IDIV CX;有符號(hào)數(shù)除法,求的平均值在AX中(余數(shù)在DX中) 0198 5FPOP DI;恢復(fù)寄存器 0199 5EPOP SI 019A 5APOP DX 019B 59POP CX 019C 5BPOP BX 019D 5DPOP BP 019E C3RET 019FMEANENDP 019FDPCRLFPROC;使光標(biāo)回車換行的子程序 019F 50PUSH AX 01A0 52PUSH DX 01A
21、1 B4 02MOV AH,2 01A3 B2 0DMOV DL,0DH 01A5 CD 21INT 21H 01A7 B4 02MOV AH,2 01A9 B2 0AMOV DL,0AH 01AB CD 21INT 21H 01AD 5APOP DX 01AE 58POP AX 01AF C3RET 01B0DPCRLFENDP 01B0NDPCRLF PROC ;使顯示器顯示多個(gè)空格的子程序 01B0 50PUSHAX 01B1 52PUSHDX 01B2 B4 02MOVAH,2 01B4 B2 09MOV DL,9H 01B6 CD 21INT 21H 01B8 5APOP DX 01
22、B9 58POP AX 01BA C3RET 01BBNDPCRLF ENDP 01BBSHOWPROC 01BB B4 0FMOVAH,0FH;讀取顯示模式 01BD CD 10INT10H;調(diào)用INT 10H中斷 01BF A2 0173 RMOVDISPMOD,AL 01C2 B4 00MOVAH,0 01C4 B0 03MOVAL,3 ;調(diào)用INT 10H中斷3號(hào)功能顯示文字 01C6 CD 10INT10H 01C8 8C D8MOVAX,DS 01CA 8E C0MOVES,AX 01CC BD 0000 RMOVBP,OFFSET MESS0 01CF BA 0C1EMOVDX,
23、0C1EH ;控制顯示的位置最大的行是24,最大列是八十 01D2 B9 00C8MOVCX,200 ;控制顯示的字符的個(gè)數(shù) 01D5 B7 00MOVBH,0 01D7 B3 0CMOVBL,0CH ;以BL實(shí)現(xiàn)控制字體顏色與背景顏色功能,前四位是背景色;后四位是字體顏色 01D9 B4 13MOVAH,13H 01DB B0 01MOVAL,1H 01DD CD 10INT10H 01DF B4 00MOVAH,0 01E1 CD 16INT16H 01E3 B4 00MOVAH,0 01E5 A0 0173 RMOVAL,DISPMOD 01E8 CD 10INT10H 01EA C3R
24、ET 01EBSHOWENDP 01EBCSEGENDS END START Microsoft (R) Macro Assembler Version 6.11 06/02/13 01:24:33tempfile.asm Symbols 2 - 1Segments and Groups: N a m e Size Length Align Combine ClassCSEG . . . . . . . . . . . . . .16 Bit 01EB Para Private DSEG . . . . . . . . . . . . . .16 Bit 094C Para Private S
25、SEG . . . . . . . . . . . . . .16 Bit 0080 Para Stack Procedures, parameters and locals: N a m e Type Value AttrDPCRLF . . . . . . . . . . . . .P Near 019F CSEGLength= 0011 PublicMAXMIN . . . . . . . . . . . . .P Near 014C CSEGLength= 0026 Public MAXCK . . . . . . . . . . . .L Near 0155 CSEG MINCK .
26、 . . . . . . . . . . .L Near 0160 CSEG NEXT . . . . . . . . . . . . .L Near 0166 CSEGMEAN . . . . . . . . . . . . . .P Near 0172 CSEGLength= 002D Public MEAN1 . . . . . . . . . . . .L Near 0184 CSEGNDPCRLF . . . . . . . . . . . .P Near 01B0 CSEGLength= 000B PublicNUM . . . . . . . . . . . . . .P Nea
27、r 00BC CSEGLength= 000C PublicREAD . . . . . . . . . . . . . .P Near 00C8 CSEGLength= 0041 Public READ1 . . . . . . . . . . . .L Near 00DE CSEG READ2 . . . . . . . . . . . .L Near 00E2 CSEG READ3 . . . . . . . . . . . .L Near 00FC CSEG READ4 . . . . . . . . . . . .L Near 0103 CSEGSHOW . . . . . . .
28、. . . . . . .P Near 01BB CSEGLength= 0030 PublicWRITE . . . . . . . . . . . . .P Near 0109 CSEGLength= 0043 Public WRITE1 . . . . . . . . . . . .L Near 011B CSEG WRITE2 . . . . . . . . . . . .L Near 0129 CSEG WRITE3 . . . . . . . . . . . .L Near 012D CSEG WRITE4 . . . . . . . . . . . .L Near 013C CS
29、EG WRITE5 . . . . . . . . . . . .L Near 0148 CSEGSymbols: N a m e Type Value AttrAGAIN1 . . . . . . . . . . . . .L Near 0031 CSEGAGAIN2 . . . . . . . . . . . . .L Near 0059 CSEGARRAY . . . . . . . . . . . . .Word 0176 DSEGCOUNT . . . . . . . . . . . . .Word 0174 DSEGDISPMOD . . . . . . . . . . . .Byte 0173 DSEGMAXAY . . . . . . . . . . . . .Word 0948 DSEGMESS0 . . . . .
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版商務(wù)車租賃合同(含保險(xiǎn)責(zé)任條款)
- 二零二五版合作開發(fā)房地產(chǎn)合同綠色建筑認(rèn)證3篇
- 2025年綠色建筑土石方工程承包合同樣本2篇
- 2025年度菜園大棚蔬菜種植與農(nóng)業(yè)科技研發(fā)合同3篇
- 2025版路燈設(shè)施安全檢查與應(yīng)急搶修服務(wù)合同4篇
- 二零二四年醫(yī)療耗材配件銷售代理合同樣本3篇
- 2025年度工業(yè)用地場(chǎng)地租賃及使用權(quán)轉(zhuǎn)讓合同3篇
- 2025年度車輛租賃與道路救援服務(wù)合同3篇
- 2025年新能源汽車專用車位租賃與充電服務(wù)合同2篇
- 2025年度房地產(chǎn)項(xiàng)目融資合同8篇
- 家庭年度盤點(diǎn)模板
- 河南省鄭州市2023-2024學(xué)年高二上學(xué)期期末考試 數(shù)學(xué) 含答案
- 2024年資格考試-WSET二級(jí)認(rèn)證考試近5年真題集錦(頻考類試題)帶答案
- 試卷中國(guó)電子學(xué)會(huì)青少年軟件編程等級(jí)考試標(biāo)準(zhǔn)python三級(jí)練習(xí)
- 公益慈善機(jī)構(gòu)數(shù)字化轉(zhuǎn)型行業(yè)三年發(fā)展洞察報(bào)告
- 飼料廠現(xiàn)場(chǎng)管理類隱患排查治理清單
- 【名著閱讀】《紅巖》30題(附答案解析)
- Starter Unit 2 同步練習(xí)人教版2024七年級(jí)英語上冊(cè)
- 分?jǐn)?shù)的加法、減法、乘法和除法運(yùn)算規(guī)律
- 2024年江蘇鑫財(cái)國(guó)有資產(chǎn)運(yùn)營(yíng)有限公司招聘筆試沖刺題(帶答案解析)
- 2024年遼寧石化職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫含答案
評(píng)論
0/150
提交評(píng)論