格式,案例,
格式
課程設計指導書
姓 名 | 學號 | 班級 | ||||
課程名稱 | 彙編語言 | 課程性質 | 課程設計 | |||
設計時間 | 2011年12月15日—— 2011 年12月22日 | |||||
設計名稱 | 加減乘除四則運算 | |||||
設計目的 | 實現16進制數的加減乘除運算 | |||||
設計要求 | 完成加減乘除運算 | |||||
設計思路與設計過程 | 本次設計要求系統實現的功能如下:從鍵盤接受十六進制數。能實現加、減、乘、除四則運算。執行時,能在檔案名稱後顯示計算表達式。按Q鍵退出程式 | |||||
計畫與進度 | 12月15日~12月16日:收集資料,方案選擇12月17日~1月18日:整體流程,程式細節12月19日~1月22日:調試程式,報告撰寫12月末:交設計報告 | |||||
任課教師意 見 | ||||||
備 注 |
課程設計報告
課程: 彙編語言
學號:
姓名:
班級:
教師:
時間: 2011/12/22
案例
設計名稱:加減乘除四則運算 | 日期:2011 年12 月22 日 |
設計內容: | (1)建立一個DOS下的選單界面,界面要顯示各功能鍵的作用和提示信息。 (2)在十六進制的四則運算中,要輸入兩個數,故要用兩個暫存器來存儲, 第一個數由SI指向,第二個數存放在BX中,這樣可以使計算更加方便。 (3) 將十六進制存放到暫存器時,採用的是移位存放的方法。例如:將EF22H 存放到BX中,首先要輸入的是E,存放在AL中後,用CBW擴展,然後 將BX左移四位,再加上AX,即BX為000EH,然後輸入第二個數F,同 上讓BX移四位,再加上AX,得BX為00EFH,以此類推,可將EF22存 入BX中。 (4)在顯示BX暫存器的內容時,例如BX中存放的是EF22,那么首先讓其 循環左移四位,即BX變為F22E,然後讓BL賦給AL,在讓AL加上0FH, 即禁止了AL的高四位,使其為零,然後判斷是字母還是數字,做相應 的處理,輸出AL中的內容即可。後三位輸出的同上。 (5)螢幕上顯示計算式需利用多字元輸出功能,結果需轉換成十六進制。 (6)退出時按Q,選擇Y/N。 |
設計目的與要求: | 本次設計要求系統實現的功能如下:從鍵盤接受十六進制數。能實現加、減、乘、除四則運算。執行時,能在檔案名稱後顯示計算表達式。按Q鍵退出程式。 |
設計環境或器材、原理與說明: | 本次設計需要實現的模組圖圖如所示 四則運算器程式設計算法選擇設定數制轉換設定 界面設定 (1)界面設定 主要實現確定界面樣式的功能,以選單形式顯示。算法選擇設定 用於選擇加、減、乘、除來進行運算。(3)數制轉換設定 套用十進制的轉換算法來處理加、減、乘、除四則運算。 |
流程圖: | 開 始 初始化 輸入算法選擇鍵X 十六進制加法Y X=1? X=2?X=3? X=4 ?X=Q/q?X=Y/y? 輸入第一個數 十六進制減法 十六進制乘法 十六進制除法提示出錯!Y Y Y N N N N N Y Y N輸入第二個數 結 束顯示計算式和計算結果 |
實驗器材: | 計算機 |
設計過程(步驟)或程式代碼(可以加頁): | IN16 MACRO LEA DX,PR CALL OUTPUT LEA DX,INPUT1 CALL OUTPUT CALL INPUT LEA SI,RESULT MOV [SI],BX LEA DX,PR CALL OUTPUT LEA DX,INPUT2 CALL OUTPUT CALL INPUT ENDM DATA SEGMENT BUF DB '*------- WELCOME TO CALCULATOR SYSTEM ---------*',0DH,0AHDB '*---1:ADD--2:SUB--3:MUL--4:DIV--Q:QUIT---------*',0DH,0AHDB '*------- IT*2011-1*WEIGUANG-------------------*',0DH,0AHDB 0DH,0AH,'Please input the select number:','$'INPUT1 DB 'Please input the first number xiao yu 4 wei:','$'INPUT2 DB 'Please input the second number xiao yu 4 wei:','$'RESULT DW ?,?WRO DB 'The number you input is wrong,please input again:',0DH,0AH,'$'PR DB 0DH,0AH,'$'PR1 DB 'A + B=$'PR2 DB 'A - B=$'PR3 DB 'A * B=$'PR4 DB 'A / B=$'PR5 DB '......$'PR6 DB 'Are you sure to exit?(Y/N)$' DATA ENDS CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE ,DS:DATA START:MOV AX,DATA MOV DS,AX LEA DX,BUF CALL OUTPUT SUB AX,AX CALL CHOOSE JMP START RET MAIN ENDP INPUT PROC NEAR MOV BX,0 NEWCHAR:MOV AH,1 INT 21H CMP AL,0DH JE EXIT CMP AL,'A' JAE H0 CMP AL,'0' JAE H1 H0: SUB AL,37H JMP ADDTO H1: SUB AL,30H JMP ADDTO ADDTO:MOV CL,4 SHL BX,CL MOV AH,0 ADD BX,AX JMP NEWCHAR EXIT: RET INPUT ENDP OUTPUT PROC NEAR MOV AH,09H INT 21H RET OUTPUT ENDP CHOOSE PROC NEAR MOV AH,1INT 21H CMP AL,'1' JE YES1 CMP AL,'2' JE YES2 CMP AL,'3' JE YES3 CMP AL,'4' JE YES4 CMP AL,'q' JE EXIT1 CMP AL,'Q' JE EXIT1 CALL WRONG EXIT1: LEA DX,PR CALL OUTPUT LEA DX,PR6 CALL OUTPUT MOV AH,1INT 21H CMP AL,'Y' JE EXIT0 CMP AL,'y' JNE START EXIT0: MOV AH,4CH INT 21H YES1: CALL JIAJ MP START YES2: CALL JIAN JMP START YES3: CALL CHENGJMP START YES4: CALL CHU RET CHOOSEENDP WRONG PROC NEAR LEA DX,PR CALL OUTPUT LEA DX,WRO CALL OUTPUT JMP START RET WRONG ENDP JIA PROC NEARIN16 ADD BX,[SI] LEA DX,PR CALL OUTPUT LEA DX,PR1 CALL OUTPUT CALL OUTBX RET JIA ENDP JIAN PROC NEARIN16 SUB BX,[SI] NEG BX LEA DX,PR CALL OUTPUT LEA DX,PR2 CALL OUTPUT CALL OUTBX RETJ IAN ENDP CHENG PROC NEARIN16 MOV DX,0 MOVAX,BX MUL WORD PTR[SI] MOV BX,AX PUSH BX PUSH DX LEA DX,PR CALL OUTPUT LEA DX,PR3 CALL OUTPUT POP DX MOV BX,DX CALL OUTBX POP BX CALL OUTBX RET CHENG ENDP CHUPROC NEARIN16 MOV AX,[SI] MOV DX,0 DIV BX PUSH DX PUSH AX LEA DX,PR CALL OUTPUT LEA DX,PR4 CALL OUTPUT POP AX MOV BX,AX CALL OUTBX LEA DX,PR5 CALL OUTPUT POP DX MOV BX,DX CALL OUTBX RETCHU ENDP OUTBX PROC NEAR MOV CH,4 ROTATE:MOV CL,4 ROL BX,CL MOV AL,BL AND AL,0FH ADD AL,30H CMP AL,3AH JL PRINTIT ADD AL,7H PRINTIT:MOV DL,AL MOV AH,2 INT 21H DEC CHJ NZ ROTATE RETOUTBX ENDP CODE ENDS END MAIN代碼用5號字單倍行距 |
設計結果與分析(可以加頁):操作說明: (1)按提示輸入1,2,3,4。(2)1:加法ADD。(3)2:減法SUB。(4)3:乘法MUL。(5)4:除法DIV。輸入一個小於4位的十六進制數,回車。再輸入一個小於4位的十六進制數,回車。顯示計算式和結果。退出按Q,選擇Y/N。 程式運行如下:加法:算法選擇1,按提示輸入兩個十六進制數,回車後顯示計算式 和結果。程式運行截圖如圖3所示。 圖3 加法程式截圖 (2)減法:算法選擇2,按提示輸入兩個十六進制數,回車後顯示計算式和 結果,若結果為負數,則螢幕上結果顯示為補碼。程式運行截圖如圖4 所示。 圖4 減法程式截圖 (3)乘法:算法選擇3,按提示輸入兩個十六進制數,回車後顯示計算式和 結果。程式運行截圖如圖5所示。 圖5 乘法程式截圖 (4)除法和退出:算法選擇3,按提示出入兩個十六進制數,回車後顯示計 算式和結果,結果包括商和餘數。按Q鍵,選擇Y,即可退出程式。程 序運行截圖如圖6所示。 圖6 除法及退出運行截圖 程式運行後可以看出,程式完成了十六進制加減乘除四則運算,按Q鍵,可以算則Y/N,選擇Y,則退出程式,選擇N,就繼續運行,也符合設計要求。同時,螢幕上可以顯示計算式和結果,也完成了設計要求。 |
設計體會與建議:彙編語言是一項實用性很強的技術,只有進行實際操作,將理論套用於實際中,才能確實掌握書中的知識點。通過做這次課程設計,我受益匪淺,讓我對彙編的知識有了更深的了解。在這幾天的時間裡,我遇到了很多的問題,可以說是一個接一個的來,這個解決了,可是又來了一個。有時候我覺得自己是沒法再寫下去了,但是,有時候我就是不會放棄的,有了不明白的地方,就和同學討論,這讓我更深切的體會到人與人之間的那種相互協調合作的機制。本次的彙編語言課程設計是通過大量的查閱資料和搜尋信息資料來完成的,在設計的過程使我掌握了許多的電腦基本技能及理解查閱資料的基本方法,同時經過我的不斷查閱,理解資料,加深了對彙編語言的理解與認識。在設計的整個過程中,我體會到了設計的快樂,和小小的成就感。我的課設利用了很多DOS的調用,有01H號的單字元輸入,09H號的多字元輸出,4CH的過程終止等,還有其他安逸些相關指令,在平時的學習中葉學到過,但是經過此次課設,我對彙編語言的了解會更加深刻。當然,在短時間裡不可能掌握彙編語言的全部,還需要在以後的學習中不斷地實踐和積累。 |
設計成績: 教師簽名: 年 月 日 |