




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、微機實驗報告實驗名稱 KeilC的使用與匯編語言上機操作 指導(dǎo)教師 專業(yè)班級 姓名 學(xué)號 序號 無 聯(lián)系方式 1、 任務(wù)要求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ù)的加法程序。有兩個十六位無符號數(shù),分別存放在從20H和30H開始的數(shù)據(jù)區(qū)中,低八位先存,高八位在后,和存于R3(高八位)和R4(低八位),進(jìn)位位存于R2。2、 設(shè)計思路 1.字節(jié)拆分、合并程序: 利用匯編語言中的XCHD和SWAP兩個語句來實現(xiàn)將八位二進(jìn)制數(shù)拆分為兩個四位二
2、進(jìn)制數(shù)并分別存儲于不同的存儲空間的功能,BCD碼與30H相或(加上30H)得到ASCII碼。將兩個ASCII碼和0FH相與(高四位清零)得到BCD碼,利用SWAP語句將高位數(shù)放至高四位,將高位數(shù)和低位數(shù)相或可實現(xiàn)字節(jié)的合并。2.數(shù)據(jù)塊填充程序: 將R0用作計數(shù)器,DPTR用作片外數(shù)據(jù)指針,A作為原始數(shù)據(jù)來源,依順序在片外的存儲單元內(nèi)容填充數(shù)據(jù)。利用循環(huán)語句來減少程序長度,并控制填充單元個數(shù)為片外100H個。(通過R0的進(jìn)位控制)3. 兩個十六位數(shù)加法程序: 把第一個十六位無符號數(shù)的地八位和高八位分別存于20H和21H中,把第二個十六位無符號數(shù)的地八位和高八位分別存于30H和31H中,對20H和
3、30H中的兩個低八位進(jìn)行ADD加法操作,結(jié)果存于R4中;然后對21H和31H中的兩個高八位進(jìn)行ADDC帶進(jìn)位的加法操作,結(jié)果存于R3中.然后講累加器A清零,并和#00H進(jìn)行ADDC帶進(jìn)位的加法操作,結(jié)果產(chǎn)生進(jìn)位數(shù)并存于R2中,程序結(jié)束。 三、資源分配1. 字節(jié)拆分、合并程序:片內(nèi)30H單位存放原BCD碼,31H和32H存放拆分后的兩個ASCII碼,33H存放合并后的BCD碼。2. 數(shù)據(jù)塊填充程序:R0作為計數(shù)器,DPTR作為數(shù)據(jù)指針,片外空間從7000H開始填充。 3. 兩個十六位數(shù)加法程序: 20H,21H: 第一個數(shù)的低八位和高八位 30H,31H:第二個數(shù)的低八位和高八位 R4:加法結(jié)果
4、的低八位 R3:加法結(jié)果的高八位 R2:加法結(jié)果的進(jìn)位4、 流程圖 2.數(shù)據(jù)塊填充程序 1.字節(jié)拆分,合并程序 3.兩個16位數(shù)加法程序五、源代碼 (含文件頭說明、資源使用說明、語句行注釋)1.字節(jié)拆分、合并程序File name: e421.asmDescription: 1字節(jié)BCD碼轉(zhuǎn)換為2字節(jié)ASCII 2字節(jié)ASCII碼轉(zhuǎn)化為1字節(jié)BCD碼Source used: 30H: BCD data 31H, 32H:ASCII data 31H, 32H -33H ORG 0000HLJMP MAINORG 0100HMAIN: MOV SP, #40H ;賦堆棧指針 MOV 30H, #
5、49H ;30H單元賦值 MOV R0, #32H ;R0指針賦值 MOV R0, #0 ;32H單元清零 MOV A, 30H XCHD A, R0 ;拆分字節(jié) ORL 32H, #30H ;轉(zhuǎn)換為ASCII SWAP A ORL A, #30H ;轉(zhuǎn)換為ASCII MOV 31H, A ;結(jié)果存于31H單元 MOV A, 31H ;從31H單元取值 ANL A, #0FH ;轉(zhuǎn)換為BCD SWAP A MOV 33H, A ;結(jié)果存于33H單元MOV A, 32H ;從32H單元取值 ANL A, #0FH ;轉(zhuǎn)換為BCD ORL 33H, A ;合并字節(jié) HERE: SJMP HERE
6、;踏步 END 2.數(shù)據(jù)塊填充程序:將片外RAM 7000H-70FFH單元按一定規(guī)律填充File name: fill.asm Date: 2011.8.20Designed by: CDHSource used: R0: 計數(shù)器 DPTR: 片外數(shù)據(jù)指針ORG 0000HLJMP MAIN ORG 0100HMAIN:MOV SP,#40HFILL: CLR A ;A寄存器清零MOV R0, #00H ;設(shè)循環(huán)計數(shù)器 MOV DPTR, #7000H ;設(shè)數(shù)據(jù)指針FILL1: MOVX DPTR, A ;傳送到片外RAM INC A ;A內(nèi)容加1INC DPTR ;修改數(shù)據(jù)指針 INC R
7、0 ;修改循環(huán)計數(shù)器 CJNE R0, #00H, FILL1 ;判斷是否結(jié)束HERE: SJMP HERE ;原地踏步 END 3.兩個十六位數(shù)加法程序:File name:test1,asmDate:2012.9.26Designed by lixueningSource used: ORG 0000HLJMP MAINORG 0100HMAIN: MOV SP, #40H ;賦堆棧指針 MOV 20H, #0F1H MOV 21H, #92H ;賦值第一個無符號十六位數(shù) MOV 30H, #0D9H MOV 31H, #E0H ;賦值第二個無符號十六位數(shù) MOV A, 20H ADD A
8、, 30H ;低八位相加 MOV R4, A ;結(jié)果存放于R4中 MOV A, 21H ADDC A, 31H ;高八位相加(帶進(jìn)位) MOV R3, A ;結(jié)果存放于R3中 CLR A ;累加器A清零 ADDC A, #00H ;A與#00H相加(帶進(jìn)位) MOV R2, A ;進(jìn)位結(jié)果存于R2中 SJMP $ END 六、程序測試方法與結(jié)果、軟件性能分析1.字節(jié)拆分、合并程序:測試方法:單步調(diào)試觀察寄存器變量和片內(nèi)RAM的存儲空間。結(jié)果如右圖:性能分析:該程序能很方便地實現(xiàn)將一個BCD碼拆分為兩個ASCII碼以及將兩個ASCII碼合并成一個BCD碼的功能。2.數(shù)據(jù)塊填充程序:測試方法:利用
9、程序的運行和停止控制來觀察最終的寄存器變量和片內(nèi)RAM的存儲空間。結(jié)果如圖:性能分析:從寄存器變量DPTR最后的取值(7100H)來看,該程序能實現(xiàn)片外RAM從7000H到70FFH的數(shù)據(jù)填充。程序中利用R0從00H到FFH的計數(shù)中產(chǎn)生的進(jìn)位很巧妙地控制了循環(huán)的次數(shù)。3. 兩個十六位數(shù)加法程序測試方法:單步調(diào)試觀察寄存器變量值的改變。結(jié)果如下:性能分析:設(shè)定的兩個十六位數(shù)分別為92F1和E0D9,并且設(shè)置了最高位的進(jìn)位,通過計算易知程序最后的結(jié)果完全正確。思考題:1 怎樣查看工作寄存器、SFR、片內(nèi)RAM、片外RAM及程序代碼空間內(nèi)容?Disassembly 窗口有何作用? 選擇Debug下的
10、Start/Stop Debug Session,在界面的左側(cè)會出先程序代碼的空間地址內(nèi)容 Disassembly窗口可以顯示編譯之后的匯編代碼2 字節(jié)拆分、合并還有哪些方法,舉一例說明。 字節(jié)拆分可以利用與運算ANL,例如將20H單元中的數(shù)據(jù)從中間拆分,低字節(jié)存于21H,高字節(jié)存于22H,程序如下:MOV A,20HANL A,#0FHMOV 21H,AMOV A,20HMOV 22H,A合并字節(jié)可以利用或運算ORLSWAP AMOV A,21HORL A,22HMOV 30H,A3. 若按遞減1規(guī)律填充數(shù)據(jù)塊,應(yīng)如何修改程序? 在原程序中修改,從MAIN開始算第一行, 第三行 改為 MOV R0,#FFH 第四行 改為 MOV DPTR,#70FFH 第六行 改為 DEC A 第七行 改為 DEC DPTR 第八行 改為 DEC R0 第九行 改為 CJNE R0,#FFH,FILL1 4. 若從7010H單元開始,連續(xù)填充20個字節(jié),應(yīng)該如何修改程序? MAIN: MOV SP,#40H FILL: CLR A ;A計數(shù)器清零 MOV R0,#00H ;設(shè)循環(huán)計數(shù)器 MOV DPTR,#7010H ;設(shè)數(shù)據(jù)指針 FILL1: MOVX D
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 攝影器材品牌區(qū)域代理權(quán)合同
- 材料疲勞損傷累積分析模型合同
- 邊疆地區(qū)古代神話與服飾關(guān)系考古合同
- 保險業(yè)務(wù)流程重組合同
- 主題餐廳廚房承包及特色氛圍營造合同
- 拆遷工程后期維護(hù)承包合同
- 測量工作總結(jié)200字
- 光伏電站安全工作總結(jié)及計劃
- 美術(shù)6分鐘技能展示課件
- 防火安全重于泰山
- 恙蟲病護(hù)理查房
- 腫瘤免疫治療及護(hù)理講課件
- 浙江2025年6月高二學(xué)考模擬-數(shù)學(xué)試題及答案
- 臺胞臺屬活動方案
- 百師聯(lián)盟2023-2024學(xué)年高一年級下學(xué)期6月期末聯(lián)考考試卷 生物及答案
- 新建3000P(Flops)智算超算中心項目可行性研究報告寫作模板-備案審批
- 八年級數(shù)學(xué)下學(xué)期《平行四邊形》的教學(xué)反思
- 林業(yè)碳匯項目開發(fā)流程與審核要點
- 堅持嚴(yán)格陣地管理制度
- 2025-2030全球及中國實驗室信息管理系統(tǒng)和和LIMS行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- T/BECC 002-2024智算中心技術(shù)要求和評估方法
評論
0/150
提交評論