微機原理與接口技術課程設計-四則運算及微機課程設計_第1頁
微機原理與接口技術課程設計-四則運算及微機課程設計_第2頁
微機原理與接口技術課程設計-四則運算及微機課程設計_第3頁
微機原理與接口技術課程設計-四則運算及微機課程設計_第4頁
微機原理與接口技術課程設計-四則運算及微機課程設計_第5頁
已閱讀5頁,還剩70頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

課設報告課設報告題目:四則運算班級:姓名:學號:指導老師:日期:年月日目錄設計目的……………………1概要設計.........................................22.1系統(tǒng)總體分析……………22.2主模塊框圖及說明………3 3、詳細設計………43.1主模塊及子模塊概述……43.2各模塊詳細設計…………44、程序調試………94.1運行界面分析………………94.2調試過程與分析……………115、心得體會………125.1設計體會……………………125.2系統(tǒng)改進……………………12附錄…………………14參考文獻……………40設計目的進行程序設計方法和技能的基本訓練,鞏固在課堂上學到的有關程序設計的基本知識和基本方法,通過實際動手能力的培養(yǎng),進一步熟悉匯編語言的結構和使用方法,達到能獨立閱讀、編制和調試一定規(guī)模的匯編語言程序的水平,對自身的學習從理論到實踐的應用,加深對匯編語言的認識。

概要設計2.1系統(tǒng)總體分析1.可以任意輸入十進制數進行運算。2.進行的運算是加、減、乘和除的獨立運算。3.運算時,當輸入十進制數時,首先默認的是加法運算,通過回車得到加法運算結果。若要進行同樣數的減法,乘法和除法的運算可用鼠標點擊sub,mul和div進行運算。若不想則通過reload重新輸入。4.程序可以重復進行運算,這就要求每次運算后置零數據存儲區(qū),通過reload清零。5.由于運算的結果位數不確定,要設計一個能顯示結果的輸出程序,通過窗口實現。開始2.2主模塊框圖及說明開始輸入數據定義數據段初始化寄存器輸入數據定義數據段初始化寄存器鼠標初始化窗口初始化是否在范圍內通過鼠標選擇并運算不運算輸出結果是是否在范圍內通過鼠標選擇并運算不運算輸出結果是否詳細設計3.1主模塊及子模塊概述主模塊主要是四則運算部分,就是進行運算的模塊,包括加減乘除為實現運算而進行的模塊,程序的中心部分。其他子模塊包括用鼠標選擇的何種運算的模塊,通過鼠標選擇加法運算或者其他的運算等等。以及窗口模塊,主要是進行數據的顯示。還有就是菜單模塊,就是鼠標選擇運算的模塊,通過選擇加減或者乘除來實現運算。以及鼠標引入模塊,實現鼠標的選擇操作。輸出模塊和清零數據重新運算模塊。3.2各模塊詳細設計3.2.1主要是數據的初始化datasegmentNoticedb‘(Notice:0<=Number<=32767)’,’$’String1db‘Number1:’,’$’String2db‘Number2:’,’$’String3db‘Finally:’,’$’Menu1db‘Add’,’$’Menu2db‘Sub’,’$’Menu3db‘Mul’,’$’Menu4db‘Div’,’$’Menu5db‘Reload’,’$’ErrorStringdb‘Error’,0ah,0dh,’$’Number1dw0Number2dw0dataendsstacksegmentdw512dup(0)stackendscodesegment;《主函數》3.2.2鼠標的初始化部分Mainprocfarstart:movax,datamovds,axmoves,axcallShowMainWindow callMouseInit cmpax,0ffffh jesuccess movdx,offsetErrorString movah,9 int21h jmpexitSystem success:;鼠標初始化成功后進行數據的正常運行。3.2.3窗口的初始化ShowMainWindowprocnear pushax pushbx pushcx pushdxmovax,01h;初始化窗口模式int10hmovbh,8fhxorcx,cxmovdx,1827hcallDrawRectmovbh,0fhmovcx,202hmovdx,0a27hcallDrawRectint10hmovah,9movdx,offsetString1int21hmovah,2movdx,0602hint10hmovbh,01hmovcx,0d03hmovdx,1009hr2:callDrawRectaddcl,9adddl,9decaxjnzr2movcx,1303hmovdx,1524hcallDrawRectmovax,4movbh,0f1hmovcx,0c02hmovdx,0f08hrr1:callDrawRectaddcl,9adddl,9decaxjnzrr1movcx,1202hmovdx,1423hcallDrawRectmovah,2movbh,0int21hpopdxpopcxpopbxpopaxretShowMainWindowendp3.2.4運算模塊AddIntergerprocnearpushsipushbxleasi,Number1movax,[si]leasi,Number2movbx,[si]addax,bxpopbxpopsiretAddIntergerendp;《SubInterger》;參數:無;返回:end->axSubIntergerprocnear pushsipushbxleasi,Number1movax,[si]leasi,Number2movbx,[si]subax,bxpopbxpopsi retSubIntergerendp;《MulInterger》;參數:無;返回:end->axMulIntergerprocnear pushsipushbxleasi,Number1movax,[si]leasi,Number2movbx,[si]mulbxpopbxpopsi retMulIntergerendp;《DivInterger》;參數:無;返回:end->axDivIntergerprocnear pushdx pushsipushbxleasi,Number1movax,[si]leasi,Number2movbx,[si]xordx,dxdivbxpopbxpopsipopdx retDivIntergerendp;《GetInterger》;參數:[bx];返回:interger->[bx];注意:0<=interger<=32767GetIntergerprocnearpushcxpushdxpushbxxorax,axxorbx,bxxorcx,cxxordx,dxreget:movah,8int21hcmpal,’0’jbsigncmpal,’9’jaregetcmpcl,5jeregetjmpgetIntsign:cmpal,0dhjeentercmpal,8hjebackspacejmpregetgetInt:movdl,almovah,2int21handax,0fhxchgax,bxpushbxmovbx,10mulbxpopbxxchgax,bxaddbx,axinccxjmpregetbackspace:cmpcl,0jeregetxchgax,bxpushbxmovbx,10divbxpopbxxchgax,bxdeccxmovah,2movdl,08hint21hmovdl,20hint21hmovdl,08hint21hxordx,dxjmpregetenter:movax,bxpopbxmov[bx],axpopdxpopcxretGetIntergerendp;《CleanFinally》;參數:無;返回:光標位置Finally輸出框CleanFinallyprocnear pushax pushbx pushcx pushdx movah,2 movbh,0 movdx,080ah int10h movcx,6 movdl,’‘ clean:int21h loopclean movdx,080ah int10h popdx popcx popbx popax retCleanFinallyendpcodeendsendstart程序調試4.1運行界面分析加法運算:減法運算:乘法運算:除法運算:4.2調試過程與分析進行運算首先是進行加法運算,運算玩呈現的是加法運算的結果??蛇M行相應值的其他運算,并得到相應的結果。若計算其他值則需重新輸入,要先通過reload清零后再輸入。可輸入多位值運算。心得體會5.1設計體會我們這學期初步地學習了匯編語言程序設計,一開始覺得該門課程相對于C語言比較難,匯編語言是利用一個又一個寄存器來實現。而寫代碼的時候,經常會因為一些符號,或者字長的失誤,完全是無心之失而導致程序無法執(zhí)行。本次課程設計對我們的成長有很大的幫助。是對我們對匯編語言的掌握與運用能力的一次檢驗。這次的課程設計老師給我們降低了難度,只要能進行加減乘除四則運算就行了。了解課題內容后,我們進行了分工合作,先查閱了相關資料,然后開始源代碼的編寫,最后是調試結果,直到符合課題要求。這次課程設計中遇到了不少麻煩,這也是由于之前理論課上學得不夠扎實所導致的,所以我們進行了更深入的討論,并積極地向老師和同學請教,最終順利地完成了任務。5.2系統(tǒng)改進存在的改進地方是不能同時進行多種運算,就是進行加減乘除同時運行的運算。不能進行小數運算,加減乘除都不能進行小數的運算。同樣也是不能進行負數的運算,無法輸入負數。界面上還不夠完整,在不同的系統(tǒng)中可能需要進行改進。另外各種數的計算的范圍太小,不能做到面面俱到。附錄datasegmentNoticedb'(Notice:0<=Number<=32767)','$'String1db'Number1:','$'String2db'Number2:','$'String3db'Finally:','$'Menu1db'Add','$'Menu2db'Sub','$'Menu3db'Mul','$'Menu4db'Div','$'Menu5db'Reload','$'ErrorStringdb'Error',0ah,0dh,'$'Number1dw0Number2dw0dataendsstacksegmentdw512dup(0)stackendscodesegment;《主函數》Mainprocfarstart:movax,datamovds,axmoves,axcallShowMainWindow callMouseInit cmpax,0ffffh jesuccess movdx,offsetErrorString movah,9 int21h jmpexitSystem success:;鼠標初始化成功,程序正常執(zhí)行movah,2;獲取Number1和Number2的數值movbh,0movdx,040ah int10h movbx,offsetNumber1 callGetInterger movah,2 movbh,0 movdx,060ah int10h movbx,offsetNumber2 callGetInterger callAddInterger pushax movah,2 movbh,0 movdx,080ah int10h popax callOutInterger callMenuChooseexitSystem:movax,4c00hint21hMainendp;《ShowMainWindow》;參數:無;返回:無ShowMainWindowprocnear pushax pushbx pushcx pushdxmovax,01h;初始化窗口模式int10hmovbh,8fhxorcx,cxmovdx,1827hcallDrawRectmovbh,0fhmovcx,202hmovdx,0a27hcallDrawRectmovbh,0f0hmovcx,101hmovdx,0926hcallDrawRectmovah,2movbh,0movdx,0202hint10hmovdx,offsetNoticemovah,9int21hmovah,2movbh,0movdx,0402hint10hmovah,9movdx,offsetString1int21hmovah,2movdx,0602hint10hmovah,9movdx,offsetString2int21hmovah,2movdx,0802hint10hmovah,9movdx,offsetString3int21hmovax,3movbh,01fhmovcx,040ahmovdx,0425hr1:callDrawRectaddch,2adddh,2decaxjnzr1movax,4movbh,01hmovcx,0d03hmovdx,1009hr2:callDrawRectaddcl,9adddl,9decaxjnzr2movcx,1303hmovdx,1524hcallDrawRectmovax,4movbh,0f1hmovcx,0c02hmovdx,0f08hrr1:callDrawRectaddcl,9adddl,9decaxjnzrr1movcx,1202hmovdx,1423hcallDrawRectmovah,2movbh,0movdx,0e04hint10hmovah,9movdx,offsetMenu1int21hmovah,2movdx,0e0dhint10hmovah,9movdx,offsetMenu2int21hmovah,2movdx,0e16hint10hmovah,9movdx,offsetMenu3int21hmovah,2movdx,0e1fhint10hmovah,9movdx,offsetMenu4int21hmovah,2movdx,1310hint10hmovah,9movdx,offsetMenu5int21hpopdxpopcxpopbxpopaxretShowMainWindowendp;《DrawRect》;參數:bh=color,cx,dx;返回:無DrawRectprocnear pushax movah,0bh movbl,0 int10h movax,0700h int10h popax retDrawRectendp;《MenuChoose》;參數:si;返回:siMenuChooseprocnear regetMouseState1:callGetMousecmpbx,01hjneregetMouseState1cmpdx,12jaen1movbx,0;點中按鈕外圍,設置bx=0pushbxjmpregetMouseState2n1:cmpdx,15jben2cmpdx,18jaem1movbx,0;點中按鈕外圍,設置bx=0pushbxjmpregetMouseState2m1:cmpdx,20jbem2movbx,0;點中按鈕外圍,設置bx=0pushbxjmpregetMouseState2m2:movax,cxcmpcx,2hjaem3movbx,0;點中按鈕外圍,設置bx=0pushbxjmpregetMouseState2m3:cmpcx,23hjbem4movbx,0;點中按鈕外圍,設置bx=0pushbxjmpregetMouseState2m4:movbx,5;點中按鈕1,設置bx=5pushbxmovbh,8fhmovcx,1202hmovdx,1423hcallDrawRectmovbh,0f0hmovcx,1303hmovdx,1524hcallDrawRectmovah,2movbh,0movdx,1411hint10hmovah,9movdx,offsetMenu5int21hjmpregetMouseState2movbx,0;點中按鈕外圍,設置bx=0pushbxjmpregetMouseState2n2:movax,cxmovcl,9divclcmpah,2jaen3movbx,0;點中按鈕外圍,設置bx=0pushbxjmpregetMouseState2n3:cmpah,8jben4movbx,0;點中按鈕外圍,設置bx=0pushbxjmpregetMouseState2n4:cmpal,0;功能1jebutton1cmpal,1jebutton2cmpal,2jebutton3cmpal,3jebutton4movbx,0;點中按鈕外圍,設置bx=0pushbxjmpregetMouseState2button1:movbx,1;點中按鈕1,設置bx=1pushbxmovbh,8fhmovcx,0c02hmovdx,0f08hcallDrawRectmovbh,0f1hincchincclincdhincdlcallDrawRectmovah,2movbh,0movdx,0f05hint10hmovah,9movdx,offsetMenu1int21hjmpregetMouseState2button2:movbx,2;點中按鈕2,設置bx=2pushbxmovbh,8fhmovcx,0c0bhmovdx,0f11hcallDrawRectmovbh,0f1hincchincclincdhincdlcallDrawRectmovah,2movbh,0movdx,0f0ehint10hmovah,9movdx,offsetMenu2int21hjmpregetMouseState2button3:movbx,3;點中按鈕3,設置bx=3pushbxmovbh,8fhmovcx,0c14hmovdx,0f1ahcallDrawRectmovbh,0f1hincchincclincdhincdlcallDrawRectmovah,2movbh,0movdx,0f17hint10hmovah,9movdx,offsetMenu3int21hjmpregetMouseState2button4:movbx,4;點中按鈕4,設置bx=4pushbxmovbh,8fhmovcx,0c1dhmovdx,0f23hcallDrawRectmovbh,0f1hincchincclincdhincdlcallDrawRectmovah,2movbh,0movdx,0f20hint10hmovah,9movdx,offsetMenu4int21hjmpregetMouseState2regetMouseState2:callGetMousecmpbx,0jneregetMouseState2popbxcmpbx,1jebtn1cmpbx,2jebtn2cmpbx,3jebtn3cmpbx,4jebtn4cmpbx,5jebtn5jmpregetMouseState1btn1:movbh,01h;點中按鈕1并放開左鍵movcx,0d03hmovdx,1009hcallDrawRectmovbh,0f1hdecchdeccldecdhdecdlcallDrawRectmovah,2movbh,0movdx,0e04hint10hmovah,9movdx,offsetMenu1int21hcallAddIntergercallCleanFinallycallOutIntergerjmpregetMouseState1btn2:movbh,01h;點中按鈕2并放開左鍵movcx,0d0chmovdx,1012hcallDrawRectmovbh,0f1hdecchdeccldecdhdecdlcallDrawRectmovah,2movbh,0movdx,0e0dhint10hmovah,9movdx,offsetMenu2int21hcallSubIntergercallCleanFinallycallOutIntergerjmpregetMouseState1btn3:movbh,01h;點中按鈕3并放開左鍵movcx,0d15hmovdx,101bhcallDrawRectmovbh,0f1hdecchdeccldecdhdecdlcallDrawRectmovah,2movbh,0movdx,0e16hint10hmovah,9movdx,offsetMenu3int21hcallMulIntergercallCleanFinallycallOutIntergerjmpregetMouseState1btn4:movbh,01h;點中按鈕4并放開左鍵movcx,0d1ehmovdx,1024hcallDrawRectmovbh,0f1hdecchdeccldecdhdecdlcallDrawRectmovah,2movbh,0movdx,0e1fhint10hmovah,9movdx,offsetMenu4int21hcallDivIntergercallCleanFinallycallOutIntergerjmpregetMouseState1btn5:;點中按鈕5并放開左鍵movbh,01hmovcx,1303hmovdx,1524hcallDrawRectmovbh,0f1hmovcx,1202hmovdx,1423hcallDrawRectmovah,2movbh,0movdx,1310hint10hmovah,9movdx,offsetMenu5int21hcallReloadExejmpregetMouseState1retMenuChooseendp;《MouseInit》;參數:無;返回:ax=0hfalse;ax=0ffffhsuccess;MouseInitprocnear xorax,ax;MouseInit int33h cmpax,0h jefalse movax,01h;ShowMouse int33h movax,0ffffh false: retMouseInitendp;《GetMouse》;參數:無;返回:leftCleck=bxy=cxx=dxGetMouseprocnear pushax movax,03h int33h andbx,01h xchgax,cx movcl,3 shrax,cl shrdx,cl xchgax,cx popaxretGetMouseendp;《AddInterger》;參數:無;返回:end->axAddIntergerprocnearpushsipushbxleasi,Number1movax,[si]leasi,Number2movbx,[si]addax,bxpopbxpopsiretAddIntergerendp;《SubInterger》;參數:無;返回:end->axSubIntergerprocnear pushsipushbxleasi,Number1movax,[si]leasi,Number2movbx,[si]subax,bxpopbxpopsi retSubIntergerendp;《MulInterger》;參數:無;返回:end->axMulIntergerprocnear pushsipushbxleasi,Number1movax,[si]leasi,Number2movbx,[si]mulbxpopbxpopsi retMulIntergerendp;《DivInterger》;參數:無;返回:end->axDivIntergerprocnear pushdx pushsipushbxleasi,Number1movax,[si]leasi,Number2movbx,[si]xordx,dxdivbxpopbxpopsipopdx retDivIntergerendp;《GetInterger》;參數:[bx];返回:interger->[bx];注意:0<=interger<=32767GetIntergerprocnearpushcxpushdxpushbxxorax,axxorbx,bxxorcx,cxxordx,dxreget:movah,8int21hcmpal,'0'jbsigncmpal,'9'jaregetcmpcl,5jeregetjmpgetIntsign:cmpal,0dhjeentercmpal,8hjebackspacejmpregetgetInt:movdl,almovah,2int21handax,0fhxchgax,bxpushbxmovbx,10mulbxpopbxxchgax,bxaddbx,axinccxjmpregetbackspace:cmpcl,0jeregetxchgax,bxpushbxmovbx,10divbxpopbxxchgax,bxdeccxmovah,2movdl,08hint21hmovdl,20hint21hmovdl,08hint21hxordx,dxjmpregetenter:movax,bxpopbxmov[bx],axpopdxpopcxretGetIntergerendp;《OutInterger》;參數:ax;返回:無OutIntergerprocnearpushcxpushdxcmpax,8000hjbr3pushaxmovah,2movdl,'-'int21hpopaxsubax,1notaxr3:xorcx,cxr4:xordx,dxpushbxmovbx,10divbxpopbxadddl,30hpushdxinccxcmpax,0jnzr4movah,2r5:popdxint21hloopr5popdxpopcxretOutIntergerendp;《ReloadExe》;參數:無;返回:無ReloadExeprocnear pushax pushbx pushcx pushdx movah,2 movbh,0 movdx,080ah int10h movcx,6 movdl,'' clean1:int21h loopclean1 movdx,060ah int10h movcx,6 movdl,'' clean2:int21h loopclean2 movdx,040ah int10h movcx,6 movdl,'' clean3:int21h loopclean3 movah,2;獲取Number1和Number2的數值movbh,0movdx,040ah int10h movbx,offsetNumber1 callGetInterger movah,2 movbh,0 movdx,060ah int10h movbx,offsetNumber2 callGetInterger callAddInterger pushax movah,2 movbh,0 movdx,080ah int10h popax callOutInterger popdx popcx popbx popax retReloadExeendp;《CleanFinally》;參數:無;返回:光標位置Finally輸出框CleanFinallyprocnear pushax pushbx pushcx pushdx movah,2 movbh,0 movdx,080ah int10h movcx,6 movdl,'' clean:int21h loopclean movdx,080ah int10h popdx popcx popbx popax retCleanFinallyendpcodeendsendstart參考文獻[1]周荷琴吳秀清/編著.微型計算機原理與接口技術第4版中國科學技術出版社[2]周明德微機原理于接口技術實驗指導與習題集.人民郵電出版社,2002[3]譚浩強鄭學堅周斌微型計算機原理及應用實驗指導.第二版清華大學出版社,2001[4]李干林李升微機原理及接口技術北京大學出版社,2010.微機課程設計PID參數整定ZN法整定系統(tǒng)的開環(huán)傳遞函數,試采用ZN法整定法計算系統(tǒng)的P、PI、PID控制器的參數,并繪制整定后系統(tǒng)的單位階躍響應曲線。思路分析:運用Z-N法整定公式:Kp=1.2T/Kτ,Ti=2τ,Td=0.5τ可整定出各個參數。實驗調試參數:P控制器:Kp=0.25PI控制器:Kp=0.225Ti=600PID控制器:Kp=0.3Ti=396Td=90仿真圖如下:臨界比例度法系統(tǒng)的開環(huán)傳遞函數,試采用臨界比例度法整定法計算系統(tǒng)的P、PI、PID控制器的參數,并繪制整定后系統(tǒng)的單位階躍響應曲線。思路分析:選擇一足夠短的采樣周期,逐漸增大Kp直到系統(tǒng)出現等幅震蕩,記下此時的kp(δ=1/kp),及臨界震蕩周期Tk。δTiTdP2δk∞0PI2.2δk0.83Tk0PID1.8δk0.5Tk0.125Tk實驗調試參數:P控制器:Kp=15PI控制器:Kp=13.64Ti=2.324PID控制器:Kp=17.65Ti=1.4Td=0.35仿真圖如下:衰減曲線法系統(tǒng)的開環(huán)傳遞函數,試采用衰減曲線法整定法計算系統(tǒng)的P、PI、PID控制器的參數,并繪制整定后系統(tǒng)的單位階躍響應曲線思路分析:衰減曲線法是在系統(tǒng)閉環(huán)情況下,將控制器積分時間TI放在最大,微分時間TD放到最小,比例放大倍數KC設為1,然后使KC由小往大逐步改變,并且每改變一次KC值時,通過改變給定值給系統(tǒng)施加一個階躍干擾,同時觀察過渡過程變化情況。如果衰減比小大于4:1,KC值繼續(xù)增加,如果衰減比小于4:1,KC值繼續(xù)減小,直到過程呈現4:1衰減如圖為止。通過上述試驗可以找到4:1衰減振蕩時的放大倍數為Ks以及振蕩周期Ts。根據下表給出的經驗公式,可以算出采用不同類型控制器使過渡過程出現4:1振蕩的控制器參數值。表4:1衰減曲線法整定控制器參數經驗公式控制器類型控制器參數P(KC)I(TI)/minD(TD)/minPKs——PI0.83Ks0.5Ts—PID1.25Ks0.3Ts0.1Ts然后按經驗公式算出控制參數后按照先比例、后積分、最后微分的程序,一次將控制器參數放好。不過在放積分、微分之前

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論