




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、目錄課程設(shè)計(jì)任務(wù)書(shū)21 問(wèn)題描述32 前期分析33 課程設(shè)計(jì)33.1 總體設(shè)計(jì)33.2 模塊設(shè)計(jì)4 求和模塊43.2.2 輸入十進(jìn)制數(shù)模塊53.2.3 存儲(chǔ)器清零模塊63.2.4 減法模塊74 程序源代碼75 調(diào)試與分析136 測(cè)試結(jié)果137 經(jīng)驗(yàn)與體會(huì)15評(píng)分表16課程設(shè)計(jì)任務(wù)書(shū)學(xué)生姓名: 毛習(xí)均 專(zhuān)業(yè)班級(jí): 計(jì)算機(jī)1004班 指導(dǎo)教師: 許毅 工作單位:計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 題目: 十進(jìn)制加減計(jì)算器初始條件:理論:完成了匯編語(yǔ)言程序設(shè)計(jì)課程,對(duì)微機(jī)系統(tǒng)結(jié)構(gòu)和80系列指令系統(tǒng)有了較深入的理解,已掌握了匯編語(yǔ)言程序設(shè)計(jì)的基本方法和技巧。實(shí)踐:完成了匯編語(yǔ)言程序設(shè)計(jì)的4個(gè)實(shí)驗(yàn),熟悉了匯編語(yǔ)言程序
2、的設(shè)計(jì)環(huán)境并掌握了匯編語(yǔ)言程序的調(diào)試方法。要求完成的主要任務(wù): (包括課程設(shè)計(jì)工作量及其技術(shù)要求,以及說(shuō)明書(shū)撰寫(xiě)等具體要求)進(jìn)一步理解和掌握較復(fù)雜程序的設(shè)計(jì)方法,掌握子程序結(jié)構(gòu)的設(shè)計(jì)和友好用戶(hù)界面的設(shè)計(jì)。具體的設(shè)計(jì)任務(wù)及要求:1) 編寫(xiě)程序?qū)崿F(xiàn)十進(jìn)制數(shù)的加減法;2) 將計(jì)算結(jié)果在屏幕上顯示;3) 程序采用子程序結(jié)構(gòu),結(jié)構(gòu)清晰;4) 友好清晰的用戶(hù)界面,能識(shí)別輸入錯(cuò)誤并控制錯(cuò)誤的修改。在完成設(shè)計(jì)任務(wù)后,按要求撰寫(xiě)課程設(shè)計(jì)說(shuō)明書(shū);對(duì)課程設(shè)計(jì)說(shuō)明書(shū)的具體要求請(qǐng)見(jiàn)課程設(shè)計(jì)指導(dǎo)書(shū)。閱讀資料:1)IBMPC匯編語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)教程實(shí)驗(yàn)2.42)IBMPC匯編語(yǔ)言程序設(shè)計(jì)(第2版)例6.11時(shí)間安排:設(shè)計(jì)安
3、排一周:周1、周2:完成系統(tǒng)分析及設(shè)計(jì)。周3、周4:完成程序調(diào)試,和驗(yàn)收。周5:撰寫(xiě)課程設(shè)計(jì)報(bào)告。指導(dǎo)教師簽名: 年 月 日系主任(或責(zé)任教師)簽名: 年 月 十進(jìn)制加減法計(jì)算器1問(wèn)題描述用匯編語(yǔ)言編寫(xiě)一個(gè)十進(jìn)制加減法計(jì)算器,此程序要求將結(jié)果顯示在屏幕上,并且友好清晰的用戶(hù)界面,能識(shí)別輸入錯(cuò)誤并且控制修改。在此程序中采用子結(jié)構(gòu)程序使結(jié)構(gòu)清晰。2前期分析此課題是做一個(gè)帶顯示界面的十進(jìn)制加減法計(jì)算器。首先,程序中多次用到BIOS的10號(hào)類(lèi)型的顯示中斷功能,所以,在完成此課題之前重點(diǎn)深入學(xué)習(xí)例行中斷程序的理論知識(shí)以及用法。其次,識(shí)別輸入錯(cuò)誤的修改功能,這就需要判斷錯(cuò)誤并及時(shí)置光標(biāo)到合適的位置,以便提
4、示并修改錯(cuò)誤。最后,對(duì)于采用子程序結(jié)構(gòu)必須清晰了解課題的大體結(jié)構(gòu),然后分析與設(shè)計(jì)子程序結(jié)構(gòu)。比如輸入十進(jìn)制數(shù)就可以采用子程序結(jié)構(gòu)。3課題設(shè)計(jì)3.1總體設(shè)計(jì)概括程序的整體流程,設(shè)計(jì)有好的用戶(hù)界面,總體設(shè)計(jì)流程圖如下開(kāi)始菜單退出輸入0 輸入data1輸入1 輸入輸入data20-9?N Y顯示結(jié)果提示輸入其他鍵Enter圖1有好用戶(hù)界面3.2模塊設(shè)計(jì)開(kāi)始3.2.1求和模塊AXBEIJIASHU如右圖2,求和模塊,將加數(shù)與被加數(shù)相加然后擴(kuò)展為雙字,最后通過(guò)求余把每一位數(shù)存儲(chǔ)在HE存儲(chǔ)單元里, 后面把結(jié)果按位輸出。AXJIASHU+AX將AX擴(kuò)展為雙字BX10000HEAX/BX的商AXAX/BX的余
5、數(shù)BX1000HE+2AX/BX的商AXAX/BX的余數(shù)BX100HE+4AX/BX的商AXAX/BX的余數(shù)BX10HE+6AX/BX的商HE+8AX/BX的余數(shù)結(jié)束圖2 求和3.2.2輸入十進(jìn)制數(shù)模塊開(kāi)始BX0輸入一個(gè)字符YAL=0DH結(jié)束NNAL<31H&&AL>39HYAXBX;BXAX輸出錯(cuò)誤提示AX*10AXBX;BXAXBXAX+BX圖3輸入十進(jìn)制數(shù)上圖3,就是輸入兩個(gè)十進(jìn)制數(shù),對(duì)輸入的字符判斷,如果是0-9之間的數(shù),則轉(zhuǎn)化為十進(jìn)制數(shù),否則提示重新輸入字符。存儲(chǔ)單元清零模塊為保證不發(fā)生內(nèi)存訪問(wèn)沖突,每次重新計(jì)算的時(shí)候都要存儲(chǔ)單元清零。如圖4開(kāi)始SI-2;
6、CX5SI+2NHESI0CX=0Y結(jié)束圖4存儲(chǔ)單元清零減法模塊減法模塊主要是比較減數(shù)與被減數(shù)的大小,如果data1>data2就直接計(jì)算,打印結(jié)果。否者將data1壓入堆棧,顯示-,然后data1出棧、計(jì)算,打印結(jié)果。減法模塊如下圖5輸出結(jié)果Data1-data2Data1>data2?YNData1 data2Push data1顯示-Pop data1圖5 減法4.程序源代碼DATAS SEGMENT STR1 DB 0AH,0DH, ' *' STR2 DB 0AH,0DH, ' * *'STR3 DB 0AH,0DH, ' * *&
7、#39;STR4 DB 0AH,0DH, ' * 1:Enter run *' STR5 DB 0AH,0DH, ' * *' STR6 DB 0AH,0DH, ' * other keys exit *' STR7 DB 0AH,0DH, ' * *' STR8 DB 0AH,0DH, ' * *' STR9 DB 0AH,0DH, ' * *' STR10 DB 0AH,0DH, ' *'LENGTH1 EQU $-STR1 ;至str1的字節(jié)數(shù)STR11 DB 'Ent
8、er Exit,Other keys continue!$'STR12 DB 'Please input again!$'ERR DB 'Error!Please input again!$'STR13 DB 'input data1:','$'STR14 DB 'input data2:','$'STR15 DB 'add result:','$'STR16 DB '-','$'STR17 DB 'sub result
9、:','$'COUNT DW ?VALUE DW ?JIASHU DW ?BEIJIASHU DW ?HE DW ?SHOW MACRO M ;定義宏,顯示字符串 LEA DX,M MOV AH,9 INT 21H ENDM GUANGBIAO MACRO M1,M2MOV DH,M1 ;行(Y坐標(biāo))MOV DL,M2 ;列(X坐標(biāo))MOV BH,0 ; 顯示頁(yè)碼MOV AH,02INT 10H ;用文本坐標(biāo)下,設(shè)置光標(biāo)位置ENDMQINGPING MACRO M1,M2,M3,M4,M5MOV AH,6 ;向上滾屏MOV AL,M1 ;滾動(dòng)行數(shù)(0-清窗口)MOV B
10、H,0DH ;空白區(qū)域的缺省屬性MOV CH,M2 ;窗口的左上角位置,Y坐標(biāo)MOV CL,M3 ;-,X坐標(biāo)MOV DH,M4 ;窗口的右上角位置,Y坐標(biāo)MOV DL,M5 ;-,X坐標(biāo)INT 10HENDMDATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX MOV AL,3 ;80*25 16色文本MOV AH,0 ;設(shè)置顯示模式為80*25彩色文本模式INT 10HMOV BP,SEG STR1 ;取段地址MOV
11、ES,BPMOV BP,OFFSET STR1 ;取偏移地址MOV CX,LENGTH1MOV DX,0MOV BL,09H ;屬性(顏色)MOV AL,0 ; 光標(biāo)位置不變(1改變)屬性存在BL中,2和3的屬性不在BL中GUANGBIAO 4,15MOV AH,13H ;在TELETYPE模式下顯示字符串INT 10HMOV AH,1 ;鍵盤(pán)輸入并回顯INT 21HCMP AL,31H ;輸入1進(jìn)入加法器,輸入2結(jié)束;JNZ NEXT;NEXT:;JMP LOOP8 GUANGBIAO 8,20 ;確定光標(biāo)位置(字符串起始位置)SHOW STR13GUANGBIAO 9,20SHOW STR
12、14GUANGBIAO 10,20SHOW STR15GUANGBIAO 11,20SHOW STR17 MOV SI,-2MOV CX,5LOOP1: ;存儲(chǔ)器清零 ADD SI,2 MOV HESI,0 LOOP LOOP1 MOV BX,0LOOP2: ;輸入被加數(shù) QINGPING 1,8,30,8,50 QINGPING 1,9,30,9,50 QINGPING 1,10,30,10,50 QINGPING 1,11,30,11,50 GUANGBIAO 8,30 CALL INPUT MOV BEIJIASHU,BXLOOP3: ;輸入加數(shù) QINGPING 1,13,18,13,
13、51 QINGPING 1,12,20,12,50 MOV BX,0 GUANGBIAO 9,30 MOV BX,0 CALL INPUT MOV JIASHU,BXLOOP4: GUANGBIAO 10,30 ;相加 MOV AX,BEIJIASHU ADD AX,JIASHU CWD MOV DX,0 ;擴(kuò)展 并求結(jié)果各位數(shù)值 MOV BX,10000 DIV BX MOV HE,AX MOV AX,DX ;余數(shù)給AX CWD MOV BX,1000 DIV BX MOV HE+2,AX MOV AX,DX CWD MOV BX,100 DIV BX MOV HE+4,AX MOV AX,
14、DX CWD MOV BX,10 DIV BX MOV HE+6,AX MOV HE+8,DX MOV SI,-2 MOV CX,5LOOP5: ADD SI,2 ;結(jié)果輸出 MOV DX,HESI ADD DX,30H MOV AH,02 INT 21H LOOP LOOP5 ;每位循環(huán)輸出LOOP_I :;JIAN FA GUANGBIAO 11,30MOV AX,BEIJIASHUCMP AX,JIASHUJAE FLAGXCHG AX,JIASHUPUSH AXMOV DX,OFFSET STR16MOV AH,09HINT 21HPOP AXFLAG:SUB AX,JIASHUCAL
15、L PRINTJMP LOOP6LOOP6: GUANGBIAO 13,19 ;退出或繼續(xù) SHOW STR11 MOV AH,01 INT 21H CMP AL,0DH ;回車(chē)退出 JNE LOOP7 MOV AH,4CH INT 21HLOOP7: QINGPING 1,13,18,13,51 GUANGBIAO 12,21 SHOW STR12 JMP LOOP1LOOP8: MOV AH,4CH INT 21HERROR: GUANGBIAO 12,21 SHOW ERR JMP LOOP1INPUT PROC NEAR ;輸入子程序LP1: MOV AH,01 INT 21H CMP
16、 AL,0dH ;輸入回車(chē)輸入結(jié)束 JE EXIT CMP AL,31H JB ERROR CMP AL,39H JA ERROR ;不是09之間則顯示錯(cuò)誤 SUB AL,30H CBW XCHG AX,BX MOV CX,10 MUL CX ADD BX,AX JMP LP1 ;跳轉(zhuǎn)直到輸入回車(chē)EXIT: RETINPUT ENDPPRINT PROC NEAR;JIA FA DE SHU CHU JIE GUO PUSH AXMOV VALUE,AXMOV COUNT,0PRINT_D_LOP1:XOR DX,DXMOV AX,VALUEMOV BX,10DIV BXMOV VALUE,A
17、XPUSH DXINC COUNTCMP VALUE,0JA PRINT_D_LOP1PRINT_D_LOP2:CMP COUNT,0JE P_EXITDEC COUNTPOP AXADD AL,30HMOV DL,ALMOV AH,02HINT 21HJMP PRINT_D_LOP2P_EXIT:POP AXRETPRINT ENDPCODES ENDS END START5調(diào)試與分析(1)最初匯編的時(shí)候出現(xiàn)asm<74>:error A2053:jump out of range by 121 byte<s>,看看源程序和查資料發(fā)現(xiàn)是有條件跳轉(zhuǎn)有界限的,無(wú)條件跳轉(zhuǎn)可
18、以“遠(yuǎn)跳”。最后通過(guò)有條件和無(wú)條件結(jié)合,解決這一問(wèn)題。(2)對(duì)于減法的結(jié)果,重新輸入時(shí)候沒(méi)有把結(jié)果清零,我就用mov ax,0;mov, dx,0還是不行,經(jīng)過(guò)調(diào)試,發(fā)現(xiàn)是對(duì)減法的那個(gè)結(jié)果沒(méi)有清屏。而不是存儲(chǔ)器清零的原因。(3)對(duì)于跳轉(zhuǎn)指令,遇到跳轉(zhuǎn)才跳轉(zhuǎn),沒(méi)有的話,就是一步一步的指令順序執(zhí)行。這個(gè)好像是匯編中很簡(jiǎn)單的概念,但是有時(shí)候很容易忘記,但是經(jīng)過(guò)調(diào)試發(fā)現(xiàn),出現(xiàn)了這個(gè)簡(jiǎn)單的邏輯錯(cuò)誤。6測(cè)試結(jié)果(1)友好界面,開(kāi)始運(yùn)行時(shí)的界面,當(dāng)輸入1就運(yùn)行程序,輸入其他鍵就退出程序,如下圖6圖6 開(kāi)始菜單(2)程序輸入34,89后得到加法結(jié)果為00123,減法結(jié)果-55結(jié)果正確,如下圖7圖7正確輸入,輸出結(jié)果(3)當(dāng)輸入非(0-9)的數(shù)字時(shí),比如輸入字母或者符號(hào)時(shí),就提示“Error!please input again!”,提示重新輸入,直到輸入正確,如下圖8圖8輸入錯(cuò)誤,提示重新輸入(4)最后輸入正確數(shù)字后,將會(huì)看到“Enter Exit,other key con
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國(guó)鎳鋅電池市場(chǎng)運(yùn)行狀況及發(fā)展前景分析報(bào)告
- 2025-2030年中國(guó)遮陽(yáng)蓬市場(chǎng)運(yùn)行動(dòng)態(tài)及投資戰(zhàn)略研究報(bào)告
- 2025江蘇省建筑安全員A證考試題庫(kù)
- 2025-2030年中國(guó)被褥行業(yè)市場(chǎng)運(yùn)行狀況及發(fā)展趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)花露水行業(yè)運(yùn)行狀況與投資戰(zhàn)略研究報(bào)告
- 2025-2030年中國(guó)腮紅(胭脂)行業(yè)發(fā)展趨勢(shì)與十三五規(guī)劃分析報(bào)告
- 2025-2030年中國(guó)粗糧飲料產(chǎn)業(yè)需求狀況及發(fā)展策略分析報(bào)告
- 2025-2030年中國(guó)稀土拋光粉市場(chǎng)發(fā)展趨勢(shì)規(guī)劃研究報(bào)告
- 2025-2030年中國(guó)真空鍍膜機(jī)市場(chǎng)運(yùn)行現(xiàn)狀及投資規(guī)劃研究報(bào)告
- 2025-2030年中國(guó)男士香水行業(yè)運(yùn)行態(tài)勢(shì)及發(fā)展前景分析報(bào)告
- 《植物學(xué)》練習(xí)(二)根、莖、葉營(yíng)養(yǎng)器官的聯(lián)系及變態(tài)
- 中暑-紅十字應(yīng)急救護(hù)培訓(xùn)課件
- 中國(guó)農(nóng)業(yè)銀行筆試真題
- (5.5)-雜草圖片農(nóng)田雜草及防除學(xué)
- 生理學(xué)人體生理功能的調(diào)節(jié)
- 大學(xué)英語(yǔ)精讀1-6冊(cè)課文
- 口腔護(hù)理技術(shù)
- 西師版四年級(jí)下冊(cè)100道口算題大全(全冊(cè)齊全)
- TFCC損傷的診斷及治療
- 《西藏度亡經(jīng)》及中陰解脫竅決(收藏)
- 2022年醫(yī)學(xué)專(zhuān)題-健康危險(xiǎn)因素干預(yù)
評(píng)論
0/150
提交評(píng)論