單片機實驗報告KeilC的使用與匯編語言上機操作_第1頁
單片機實驗報告KeilC的使用與匯編語言上機操作_第2頁
單片機實驗報告KeilC的使用與匯編語言上機操作_第3頁
單片機實驗報告KeilC的使用與匯編語言上機操作_第4頁
單片機實驗報告KeilC的使用與匯編語言上機操作_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、微機實驗報告實驗名稱 KeilC的使用與匯編語言上機操作指導(dǎo)教師 專業(yè)班級 姓名 學號 序號聯(lián)系方式 一、 任務(wù)要求 實驗?zāi)康模菏煜eilC環(huán)境,通過在KeilC環(huán)境下調(diào)試字節(jié)拆分、合并程序、數(shù)據(jù)塊清零程序、加法程序,掌握匯編語言程序的調(diào)試方法,加深對BCD碼、ASCII碼、堆棧、寄存器、數(shù)據(jù)指針、匯編語言指令、機器碼等基本概念的理解,為后續(xù)程序編制和調(diào)試打下基礎(chǔ)。實驗內(nèi)容:1.掌握KeilC環(huán)境的使用 1)字節(jié)拆分、合并:調(diào)試e421.asm程序, 觀察相關(guān)寄存器和單元的內(nèi)容。 2)數(shù)據(jù)塊填充:調(diào)試fill.asm程序,觀察相關(guān)寄存器和單元的內(nèi)容。2. 編寫兩個十六位數(shù)的加法程序。有兩個十

2、六位無符號數(shù),分別存放在從20H和30H開始的數(shù)據(jù)區(qū)中,低八位先存,高八位在后,和存于R3(高八位)和R4(低八位),進位位存于R2。二、 設(shè)計思路1. 掌握KeilC環(huán)境的使用1) 字節(jié)拆分、合并:字節(jié)拆分要將BCD碼轉(zhuǎn)換為2字節(jié)ASCII,需將BCD碼拆為兩部分,分別加30H。具體先用XCHD語句將BCD碼與00H交換低位,“高位”需先用SWAP語句將高低位交換,再加30H;“低位”直接加30H。字節(jié)合并同理,需減30H再合并。2) 數(shù)據(jù)塊填充:指針在7000H,利于循環(huán)語句遞增填充,A寄存器中存放要填充的數(shù)據(jù),DPTR數(shù)據(jù)指針指向片外,R0計數(shù)。用CJNE構(gòu)成循環(huán),循環(huán)中A、DPTR、R

3、0都加12. 編寫兩個十六位數(shù)的加法程序兩數(shù)低位分別存于20H、30H,高位存于21H、31H。用ADD語句將低位相加,存于R4;用ADDC語句將高位和進位Cy相加,存于R3;存進位需先將A寄存器清零,再用ADDC語句將A、00H和Cy相加,存于R2。三、 資源分配本程序數(shù)據(jù)均存于片內(nèi)RAM中,有兩個十六位無符號數(shù),低位分別存于20H、30H中,高位分別存于21H、31H中。高八位和存于R3中,低八位和存于R4中,進位位存于R2中。四、 流程圖 五、源代碼 ORG 0000H MAIN: MOV R0,#20H;設(shè)置第一個數(shù)地址指針 MOV R1,#30H;設(shè)置第二個數(shù)地址指針 MOV A,R

4、0;取低位ADD A,R1;兩數(shù)低位相加MOV R4,A ;存“和”低位INC R0INC R1MOV A,R0;取高位ADDC A,R1;兩數(shù)高位相加MOV R3,A ;存“和”高位CLR AADDC A,#0MOV R2,A ;存進位HERE: SJMP HERE ;踏步 END ;結(jié)束Program Size: data=8.0 xdata=0 code=18精簡后ORG 0000H MAIN: MOV A,20H; 取低位ADD A,30H; 兩數(shù)低位相加MOV R4,A ; 存“和”低位MOV A,21H; 取高位ADDC A,31H; 兩數(shù)高位相加MOV R3,A ;存“和”高位C

5、LR AADDC A,#0MOV R2,A ; 存進位HERE: SJMP HERE ; 踏步 ENDProgram Size: data=8.0 xdata=0 code=16六、 程序測試方法與結(jié)果、軟件性能分析1.1字節(jié)拆分、合并調(diào)試 拆分時,如圖31H、32H中內(nèi)容為34和39,正常 合并時,如圖33H中內(nèi)容又變?yōu)榱?91.2數(shù)據(jù)塊填充調(diào)試執(zhí)行完改程序后片外7000H到70FFH中的數(shù)據(jù)如下圖3. 兩個十六位數(shù)的加法程序測試方法:修改片上RAM中20H、21H、30H、31H數(shù)據(jù),查看R2、R3、R4數(shù)據(jù)。如圖,令20H上為09H、21H上為90H、30H上為40H、31H上為81H運

6、行結(jié)果:如圖R2=01H,R3=11H,R4=49H性能分析精簡前Program Size: data=8.0 xdata=0 code=18運行時間t1=0.00000650s精簡后Program Size: data=8.0 xdata=0 code=16運行時間t1=0.00000450s七、 思考題1 怎樣查看工作寄存器、SFR、片內(nèi)RAM、片外RAM及程序代碼空間內(nèi)容?Disassembly 窗口有何作用? 按Start/stop Debug Session編譯程序點擊ViewRegisters Window,查看工作寄存器點擊ViewMemory Windows,選擇Memory1

7、,彈出Memory1窗口,在Address欄中介入d、x、c分別查看片內(nèi)RAM、片外RAM及程序代碼空間內(nèi)容Disassembly 窗口顯示編譯之后對應(yīng)的匯編代碼。2 字節(jié)拆分、合并還有哪些方法,舉一例說明。還可以用與運算拆分利用XCHD語句合并 ORG 0000HLJMP MAINORG 0100HMAIN: MOV 30H,#49H MOV A, 30H ANL A, #F0H ;取高位 SWAP A ORL A, #30H ;高位轉(zhuǎn)換為ASCII碼MOV 31H, A ;結(jié)果存于31H單元 MOV A, 30H ANL A, #0FH ;取低位 ORL A, #30H ;低位轉(zhuǎn)換為ASC

8、II碼MOV 32H, A ;結(jié)果存于32H單元 MOV A,31HSWAP A MOV RO,32H XCHD A,R0 MOV 30H,A ;合并存于30HHERE: SJMP HERE ;踏步 END 4. 若按遞減1規(guī)律填充數(shù)據(jù)塊,應(yīng)如何修改程序? ORG 0000H LJMP MAIN ORG 0100HMAIN: MOV SP,#40HFILL: MOV A #FFH MOV R0, #00H ;設(shè)循環(huán)計數(shù)器 MOV DPTR, #7000H ;設(shè)數(shù)據(jù)指針FILL1:MOVX DPTR, A ;傳送到片外RAM DEC A ;A內(nèi)容減1INC DPTR ;修改數(shù)據(jù)指針 INC R0

9、 ;修改循環(huán)計數(shù)器 CJNE R0, #00H, FILL1 ;判斷是否結(jié)束HERE: SJMP HERE ;原地踏步 END5. 若從7010H單元開始,連續(xù)填充20個字節(jié),應(yīng)該如何修改程序? ORG 0000H LJMP MAIN ORG 0100HMAIN:MOV SP,#40HFILL:CLR A ;A寄存器清零MOV R0, #00H ;設(shè)循環(huán)計數(shù)器 MOV DPTR, #7010H ;設(shè)數(shù)據(jù)指針FILL1:MOVX DPTR, A ;傳送到片外RAM INC A ;A內(nèi)容加1INC DPTR ;修改數(shù)據(jù)指針 INC R0 ;修改循環(huán)計數(shù)器 CJNE R0, #14H, FILL1 ;判斷是否結(jié)束HERE:SJMP HERE ;原地踏步 END 6. 若完成雙字節(jié)BCD碼加法,應(yīng)如何修改程序?需要在ADD和ADDC后加上DA,進行十進制修正八、 實驗小結(jié) 通過本次試驗,我們掌握KeilC環(huán)境的使用,熟悉了軟件的運行環(huán)境和調(diào)試方法。由于是第一次使用KeilC軟件,而且它是全英文的,所以一開始感覺還有點困難。不過

溫馨提示

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

評論

0/150

提交評論