版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、目錄課程設計任務書21 問題描述32 前期分析33 課程設計33.1 總體設計33.2 模塊設計4 求和模塊43.2.2 輸入十進制數(shù)模塊53.2.3 存儲器清零模塊63.2.4 減法模塊74 程序源代碼75 調試與分析136 測試結果137 經(jīng)驗與體會15評分表16課程設計任務書學生姓名: 毛習均 專業(yè)班級: 計算機1004班 指導教師: 許毅 工作單位:計算機科學與技術學院 題目: 十進制加減計算器初始條件:理論:完成了匯編語言程序設計課程,對微機系統(tǒng)結構和80系列指令系統(tǒng)有了較深入的理解,已掌握了匯編語言程序設計的基本方法和技巧。實踐:完成了匯編語言程序設計的4個實驗,熟悉了匯編語言程序
2、的設計環(huán)境并掌握了匯編語言程序的調試方法。要求完成的主要任務: (包括課程設計工作量及其技術要求,以及說明書撰寫等具體要求)進一步理解和掌握較復雜程序的設計方法,掌握子程序結構的設計和友好用戶界面的設計。具體的設計任務及要求:1) 編寫程序實現(xiàn)十進制數(shù)的加減法;2) 將計算結果在屏幕上顯示;3) 程序采用子程序結構,結構清晰;4) 友好清晰的用戶界面,能識別輸入錯誤并控制錯誤的修改。在完成設計任務后,按要求撰寫課程設計說明書;對課程設計說明書的具體要求請見課程設計指導書。閱讀資料:1)IBMPC匯編語言程序設計實驗教程實驗2.42)IBMPC匯編語言程序設計(第2版)例6.11時間安排:設計安
3、排一周:周1、周2:完成系統(tǒng)分析及設計。周3、周4:完成程序調試,和驗收。周5:撰寫課程設計報告。指導教師簽名: 年 月 日系主任(或責任教師)簽名: 年 月 十進制加減法計算器1問題描述用匯編語言編寫一個十進制加減法計算器,此程序要求將結果顯示在屏幕上,并且友好清晰的用戶界面,能識別輸入錯誤并且控制修改。在此程序中采用子結構程序使結構清晰。2前期分析此課題是做一個帶顯示界面的十進制加減法計算器。首先,程序中多次用到BIOS的10號類型的顯示中斷功能,所以,在完成此課題之前重點深入學習例行中斷程序的理論知識以及用法。其次,識別輸入錯誤的修改功能,這就需要判斷錯誤并及時置光標到合適的位置,以便提
4、示并修改錯誤。最后,對于采用子程序結構必須清晰了解課題的大體結構,然后分析與設計子程序結構。比如輸入十進制數(shù)就可以采用子程序結構。3課題設計3.1總體設計概括程序的整體流程,設計有好的用戶界面,總體設計流程圖如下開始菜單退出輸入0 輸入data1輸入1 輸入輸入data20-9?N Y顯示結果提示輸入其他鍵Enter圖1有好用戶界面3.2模塊設計開始3.2.1求和模塊AXBEIJIASHU如右圖2,求和模塊,將加數(shù)與被加數(shù)相加然后擴展為雙字,最后通過求余把每一位數(shù)存儲在HE存儲單元里, 后面把結果按位輸出。AXJIASHU+AX將AX擴展為雙字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ù)結束圖2 求和3.2.2輸入十進制數(shù)模塊開始BX0輸入一個字符YAL=0DH結束NNAL<31H&&AL>39HYAXBX;BXAX輸出錯誤提示AX*10AXBX;BXAXBXAX+BX圖3輸入十進制數(shù)上圖3,就是輸入兩個十進制數(shù),對輸入的字符判斷,如果是0-9之間的數(shù),則轉化為十進制數(shù),否則提示重新輸入字符。存儲單元清零模塊為保證不發(fā)生內存訪問沖突,每次重新計算的時候都要存儲單元清零。如圖4開始SI-2;
6、CX5SI+2NHESI0CX=0Y結束圖4存儲單元清零減法模塊減法模塊主要是比較減數(shù)與被減數(shù)的大小,如果data1>data2就直接計算,打印結果。否者將data1壓入堆棧,顯示-,然后data1出棧、計算,打印結果。減法模塊如下圖5輸出結果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坐標)MOV DL,M2 ;列(X坐標)MOV BH,0 ; 顯示頁碼MOV AH,02INT 10H ;用文本坐標下,設置光標位置ENDMQINGPING MACRO M1,M2,M3,M4,M5MOV AH,6 ;向上滾屏MOV AL,M1 ;滾動行數(shù)(0-清窗口)MOV B
10、H,0DH ;空白區(qū)域的缺省屬性MOV CH,M2 ;窗口的左上角位置,Y坐標MOV CL,M3 ;-,X坐標MOV DH,M4 ;窗口的右上角位置,Y坐標MOV DL,M5 ;-,X坐標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 ;設置顯示模式為80*25彩色文本模式INT 10HMOV BP,SEG STR1 ;取段地址MOV
11、ES,BPMOV BP,OFFSET STR1 ;取偏移地址MOV CX,LENGTH1MOV DX,0MOV BL,09H ;屬性(顏色)MOV AL,0 ; 光標位置不變(1改變)屬性存在BL中,2和3的屬性不在BL中GUANGBIAO 4,15MOV AH,13H ;在TELETYPE模式下顯示字符串INT 10HMOV AH,1 ;鍵盤輸入并回顯INT 21HCMP AL,31H ;輸入1進入加法器,輸入2結束;JNZ NEXT;NEXT:;JMP LOOP8 GUANGBIAO 8,20 ;確定光標位置(字符串起始位置)SHOW STR13GUANGBIAO 9,20SHOW STR
12、14GUANGBIAO 10,20SHOW STR15GUANGBIAO 11,20SHOW STR17 MOV SI,-2MOV CX,5LOOP1: ;存儲器清零 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 ;擴展 并求結果各位數(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 ;結果輸出 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 ;回車退出 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 ;輸入回車輸入結束 JE EXIT CMP AL,31H JB ERROR CMP AL,39H JA ERROR ;不是09之間則顯示錯誤 SUB AL,30H CBW XCHG AX,BX MOV CX,10 MUL CX ADD BX,AX JMP LP1 ;跳轉直到輸入回車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調試與分析(1)最初匯編的時候出現(xiàn)asm<74>:error A2053:jump out of range by 121 byte<s>,看看源程序和查資料發(fā)現(xiàn)是有條件跳轉有界限的,無條件跳轉可
18、以“遠跳”。最后通過有條件和無條件結合,解決這一問題。(2)對于減法的結果,重新輸入時候沒有把結果清零,我就用mov ax,0;mov, dx,0還是不行,經(jīng)過調試,發(fā)現(xiàn)是對減法的那個結果沒有清屏。而不是存儲器清零的原因。(3)對于跳轉指令,遇到跳轉才跳轉,沒有的話,就是一步一步的指令順序執(zhí)行。這個好像是匯編中很簡單的概念,但是有時候很容易忘記,但是經(jīng)過調試發(fā)現(xiàn),出現(xiàn)了這個簡單的邏輯錯誤。6測試結果(1)友好界面,開始運行時的界面,當輸入1就運行程序,輸入其他鍵就退出程序,如下圖6圖6 開始菜單(2)程序輸入34,89后得到加法結果為00123,減法結果-55結果正確,如下圖7圖7正確輸入,輸出結果(3)當輸入非(0-9)的數(shù)字時,比如輸入字母或者符號時,就提示“Error!please input again!”,提示重新輸入,直到輸入正確,如下圖8圖8輸入錯誤,提示重新輸入(4)最后輸入正確數(shù)字后,將會看到“Enter Exit,other key con
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度消防設施定期檢查與保養(yǎng)服務合同3篇
- 2025年小客車指標租賃業(yè)務合同范本3篇
- 2025年浙江省建筑安全員-A證考試題庫及答案
- 2024年裝修工程分包商協(xié)議模板3篇
- 2025年山西省安全員-A證考試題庫及答案
- 2025年小產(chǎn)權房屋買賣合同范本:房產(chǎn)交易風險防范與法律支持3篇
- 二零二五年度企業(yè)私人借款擔保物處理合同3篇
- 2024版女性離婚法律文件:詳盡合同草稿版
- 2024年財產(chǎn)分配及子女撫養(yǎng)協(xié)議
- 2025年度水電工程招投標管理合同
- 廣東某監(jiān)理公司檢測儀器設備管理規(guī)定
- 2023財務部年度工作總結(7篇)
- ZL50型輪胎裝載機液壓系統(tǒng)
- 在線投票管理系統(tǒng)的開題報告
- 媒介融合概論
- 2023-2024學年廣東省深圳市小學數(shù)學五年級上冊期末評估試卷
- 新求精中級I聽力原文
- 抽油機井示功圖匯總課件
- 煤礦安全管理機構結構圖
- 《蘭亭序》中楷毛筆臨摹字帖可打印
- 免疫學(全套課件)
評論
0/150
提交評論