版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、單片機(jī)匯編程序設(shè)計(jì)練習(xí)一、存儲(chǔ)器之間的數(shù)據(jù)傳送1、編程實(shí)現(xiàn)將單片機(jī)內(nèi)部RAM60H開始的連續(xù)32個(gè)單元置為FFH。 ORG 0000H MOV R0,#60H MOV R1,#32 LOOP: MOV A,R0 MOV A,#0FFH INC R0 DJNZ R1,LOOP END2、編程實(shí)現(xiàn)將內(nèi)部RAM30H開始的連續(xù)16個(gè)數(shù)傳送到內(nèi)部RAM50H開始的連續(xù)單元中。 MOV R0,#30H MOV R1,#50H MOV R7,#16LOOP: MOV A,R0 MOV R1,A INC R0 INC R1 DJNZ R7,LOOP END3、編程實(shí)現(xiàn)將單片機(jī)外部RAM2000H為首地址的數(shù)
2、據(jù)塊傳送到單片機(jī)內(nèi)部RAM30H開始的單元中,數(shù)據(jù)塊的長度為32個(gè)字節(jié)。 MOV DPTR,#2000H MOV R0,#30H MOV R7,#32LOOP: MOV A,R0 MOVX A,DPTR INC DPTR INC R0 DJNZ R7,LOOP END4、編程實(shí)現(xiàn)將單片機(jī)內(nèi)部RAM30H為首地址的數(shù)據(jù)塊傳送到外部RAM2000H開始的單元中,數(shù)據(jù)塊的長度存放于內(nèi)部RAM的20H單元。 MOV DPTR,#2000HMOV R0,#30HMOV R1,#20HMOV A,#02H MOV R1,AMOV R7,#00H LOOP:MOV A,R0 MOVX DPTR,AINC D
3、PTRINC R0INC R7MOV A,R7CJNE A,20H,LOOP END MOV DPTR,#2000H MOV R0,#30HLOOP:MOV A,R0 MOVX DPTR,AINC DPTRINC R0DJNZ 20H,LOOPSJMP $END5、編程實(shí)現(xiàn)將單片機(jī)外部RAM2000H為首地址的數(shù)據(jù)塊傳送到單片機(jī)內(nèi)部RAM30H開始的單元中,直到數(shù)據(jù)內(nèi)容為0DH時(shí)停止傳送。MOV DPTR, #2000H MOV R0 ,#30HLOOP: MOVX A,DPTR MOV R0,A INC DPTR INC R0 CJNE A,#0DH,LOOPEND6、編程實(shí)現(xiàn)將ROM100
4、0H地址的內(nèi)容傳送到內(nèi)部RAM的25H單元。方法1 MOV DPTR, #1000H MOV R0,#25H MOV A,#00H MOVC A,A+DPTR MOV R0,A END 方法2 MOV DPTR, #1000H MOV A,#00H MOVC A,A+DPTR MOV 25H,A END7、編程實(shí)現(xiàn)將ROM2000H開始的連續(xù)10個(gè)地址的內(nèi)容傳送到內(nèi)部RAM的25H開始的單元。 MOV DPTR ,#2000H MOV R0,#25H MOV R7,#10 LOOP:MOV A,#00H MOVC A,A+DPTR MOV R0,A INC R0 INC DPTR DJNZ R
5、7,LOOP END8、編程實(shí)現(xiàn)將ROM1000H開始的連續(xù)100個(gè)地址的內(nèi)容傳送到外部RAM2000H開始的連續(xù)單元中。二、查表程序設(shè)計(jì)1、編寫查表程序,要查表的數(shù)據(jù)存放在R7中,其范圍為09。編程查其平方值,并存放于40H。 MOV R7, #9 MOV DPTR,#4050H MOV A,R7 MOVC A,A+DPTR MOV 40H,A ORG 4050H DB 0,1,4,9 DB 16,25,36,49 DB 64,81 END2、編寫查表程序,要查表的數(shù)據(jù)存放在R7中,其范圍為09。編程查其立方值,并存放于R6。3、單片機(jī)外部ROM TAB1地址開始存放一組ASCII碼表,試用
6、查表方法,將R2的內(nèi)容(范圍為0F)轉(zhuǎn)換為與其對應(yīng)的ASCII碼,并從P1口輸出。 MOV A,R2 MOV DPTR,#TAB MOVC A,A+DPTR MOV P1,ATAB:DB 30H,31H,32H,33H DB 34H,35H,36H,37H DB 38H,39H,41H,42H DB 43H,44H,45H,46H END4、使用8051的P1口作為段控驅(qū)動(dòng)共陽LED數(shù)碼管,硬件連接如圖。編程實(shí)現(xiàn)將8051 R7單元內(nèi)容(在00H-09H之間)顯示在數(shù)碼管上。00H-09H的共陽字形代碼如下表所示。 MOV P1,#01H MOV DPTR,#TAB MOV A,R7 MOVC
7、 A,A+DPTR MOV P1,A RET TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H DB 82H,0F8H,80H,90H,06H END(60H)00H01H02H03H04H05H06H07H08H09H字形代碼C0HF9HA4HB0H99H92H82HF8H80H90H三、多字節(jié)無符號(hào)數(shù)的加減法1、編一個(gè)三字節(jié)無符號(hào)數(shù)的減法程序。被減數(shù)存放在內(nèi)部RAM的30H開始的連續(xù)三個(gè)單元中(高位在高地址),減數(shù)存放在內(nèi)部RAM的40H開始的連續(xù)三個(gè)單元中(高位在高地址),請將差存放在內(nèi)部RAM的50H開始的連續(xù)三個(gè)單元中(高位在高地址),借位存放在01H位地址 (
8、?) MOV R0,#30H MOV R1,#40H MOV R7,#3 MOV R2,50H CLR C LOOP:MOV A,R0 SUBB A,R1 MOV R2,A INC R0 INC R1 INC R2 DJNZ R7,LOOP MOV A,#00H ADDC A,#00H MOV 01H,A END2、編一個(gè)四字節(jié)無符號(hào)數(shù)的加法程序。被加數(shù)存放在內(nèi)部RAM的25H開始的連續(xù)四個(gè)單元中(高位在高地址),加數(shù)存放在內(nèi)部RAM的55H開始的連續(xù)四個(gè)單元中(高位在高地址),請將和存放在內(nèi)部RAM的25H開始的連續(xù)四個(gè)單元中(高位在高地址),進(jìn)位存放29H字節(jié)地址中。 MOV R7,#4
9、MOV R0,#25H MOV R1,#55H CLR CLOOP:MOV A,R0 ADDC A,R1 MOV R0,A INC R0 INC R1 DJNZ R7,LOOP MOV A,#00H ADDC A,#00H MOV 29H,A END3、編一個(gè)N字節(jié)無符號(hào)數(shù)的加法程序。被加數(shù)存放在內(nèi)部RAM的符號(hào)地址AAA開始的連續(xù)單元中(高位在低地址),加數(shù)存放在內(nèi)部RAM的符號(hào)地址BBB開始的連續(xù)單元中(高位在低地址),請將和存放在內(nèi)部RAM的AAA開始的連續(xù)單元中,進(jìn)位存放符號(hào)地址JWEI字節(jié)。(?)MOV R7,#N MOV R0,#AAA MOV R1,#BBB LOOP:MOV A
10、,R0 SWAP A MOV R0,A MOV A,R1 SWAP A MOV R1,A CLR C ADDC A,R0 MOV R0,A INC R0 INC R1 DJNZ R7,LOOP CLR A ADDC A,#00H MOV JWE1,A END 四、多路散轉(zhuǎn)1、請編程實(shí)現(xiàn)根據(jù)A的值進(jìn)行多路散轉(zhuǎn)的程序。即當(dāng)A=0時(shí),調(diào)用PRO0子程序;當(dāng)A=1時(shí),調(diào)用PRO1子程序,當(dāng)A=10時(shí),調(diào)用PRO10子程序。 MOV A,R2 RL A MOV DPTR,#TAB JMP A+DPTR TAB: AJMP PRO0 AJMP PRO1 AJMP PRO2 AJMP PRO3 AJMP P
11、RO4 AJMP PRO5 AJMP PRO6 AJMP PRO7 AJMP PRO8 AJMP PRO9 AJMP PRO10 END2、請編程實(shí)現(xiàn)根據(jù)R7 的值進(jìn)行128路散轉(zhuǎn)的程序。即當(dāng)(R7)=0時(shí),調(diào)用CHULI0子程序;當(dāng)(R7)=1時(shí),調(diào)用CHULI1子程序,當(dāng)A=128時(shí),調(diào)用CHULI128子程序。 ? MOV A,R7 RL A MOV DPTR,#TAB JMP A+DPTR TAB:AJMP CHULI0 AJMP CHULI1 . . . AJMP CHULI128 END五、軟件定時(shí)程序設(shè)計(jì)計(jì)算下面程序的延時(shí)時(shí)間:1、 MOV R6,#TIME LOOP:NOP N
12、OP DJNZ R6,LOOP 計(jì)算當(dāng)TIME=0、1、2、255時(shí)的延時(shí)時(shí)間2、 MOV R7,#TIME1LOOP0:MOV R6,#TIME2 LOOP1:NOP NOP DJNZ R6,LOOP1 DJNZ R7,LOOP0 六、數(shù)據(jù)檢索程序設(shè)計(jì)1、在內(nèi)RAM20H3FH地址的32個(gè)單元中,存放一批數(shù)據(jù),試檢索是否有與R0寄存器內(nèi)容相等的數(shù),若檢索成功,將該數(shù)據(jù)地址存放在R1,否則將FFH存放在R1中。 MOV R7,#32H MOV R2,20H LOOP: MOV A,R2 MOV 2AH,R0 CJNE A,2AH,NEXT INC R2 MOV R1,A SJMP $ NEXT
13、: DJNZ R7,LOOP MOV R1,0FFH END 2、在內(nèi)RAM20H29H地址的10個(gè)單元中,存放一批數(shù)據(jù),試檢索是否含有立即數(shù)30H,若檢索成功,將該數(shù)據(jù)地址存放在31H,否則將FFH存放在31H。MOV R0,#20HMOV R7,#10 LOOP:CJNE R0,#30H,NEXTMOV 31H,ASJMP $ NEXT: INC R0DJNZ R7,LOOPMOV 31H,#0FFHEND MOVR0,#20HMOVR7,#10LOOP2:MOVA,R0CJNEA,#30H,LOOPMOV31H,#30HSJMP$LOOP:INCR0DJNZR7,LOOP2MOV31H,
14、#0FFHSJMP$END3、統(tǒng)計(jì)內(nèi)RAM20H4FH單元中內(nèi)容為“0”的個(gè)數(shù),并把結(jié)果存入50H單元。 MOV R0,#20H LOOP:MOV R7,#48 CJNE R0,#00H,NEXT INC R2 NEXT:INC R0 DJNZ R7,LOOP END 七、極值查找1、將內(nèi)部RAM50H、51H單元兩個(gè)無符號(hào)數(shù)中較大的數(shù)存入60H單元。 MOV R0,#50H MOV A,R0 CLR C SUBB A,51H JC NEXT MOV 60H,50H NEXT:MOV 60H,51H END2、在內(nèi)部RAM 40-4FH中存在16個(gè)無符號(hào)數(shù),找出其中的最小數(shù),存放到50H單元。
15、先畫出程序框圖,再編程。 MOV R7,#16H MOV R0,#40H MOV A,R0 LOOP:INC R0 CLR C SUBB A,R0 JC NEXT MOV A,R0 NEXT:DJNZ R7,LOOP MOV 50H,A END3、內(nèi)部RAM中有一個(gè)數(shù)據(jù)塊,首地址為30H,長度存放在2BH單元,要求把其中的最大值找出,并放到以20H單元。 MOV R0,#30H MOV A,R0 LOOP:INC R0 CLR C SUBB A,R0 JNC AAA MOV A,R0 AAA:DJNZ 2BH,LOOP MOV 20H,A END4、內(nèi)部RAM以30H為首地址的一個(gè)數(shù)據(jù)塊,第一
16、個(gè)數(shù)據(jù)為該數(shù)據(jù)長度。試求該數(shù)據(jù)的最大值,把結(jié)果放在內(nèi)部RAM的70H單元中。畫出程序流程圖并編寫程序。 MOV R0,#30H MOV A,R0 LOOP:INC R0 CLR C SUBB A,R0 JNC AAA MOV A,R0AAA:DJNZ 30H,LOOP MOV 70H,AEND*5、內(nèi)部RAM20H開始存放一組有符號(hào)的數(shù),數(shù)據(jù)個(gè)數(shù)存放在內(nèi)部RAM1FH單元中,請編程統(tǒng)計(jì)其中大于0、等于0、小于0的數(shù)的個(gè)數(shù),分別存放于70H、71H、72H。*6、內(nèi)部RAM20H開始存放一組有符號(hào)的數(shù),數(shù)據(jù)個(gè)數(shù)存放在內(nèi)部RAM1FH單元中,請編程將其中大于0、等于0、小于0的數(shù)分別存放于70H、
17、60H、50H開始的連續(xù)單元中。 MOV A,HEX ANL A,#0F0H SWAP A MOV DPTR,#TAB MOVC A,A+DPTR MOV ASC+1,A MOV A,HEX ANL A,#0FH MOV DPTR,#TAB MOVC A,A+DPTR MOV ASC,A TAB: DB 30H,31H,32H,33H DB 34H,35H,36H,37H DB 38H,39H,41H,42H DB 43H,44H,45H,46H END MOV R0,#41H MOV R1,#33H MOV A,R0 CJNE A,#41H,NEXT3 MOV R0,#0AH NEXT3:
18、JC NEXT1 CLR C SUBB A,#37H MOV R0,A SJMP NEXT9 NEXT1: CLR C SUBB A,#30H MOV R0,A SJMP NEXT9 NEXT9: CLR C MOV A,R1 CJNE A,#41H,NEXT5 MOV R1,#0AH NEXT5: JNC NEXT7 CLR C SUBB A,#30H MOV R1,A SJMP NEXT2 NEXT7:CLR C SUBB A,#37H MOV R1,A NEXT2: SWAP A ORL A,R0 END1、數(shù)據(jù)檢索:首先將8個(gè)不同的數(shù)寫入30H37H,再編程查找是否有一個(gè)單元的內(nèi)容為#
19、45H,若找到,將#FFH送50H單元;若找不到,則將#7FH送50H單元。單元地址(30H)(31H)(32H)(33H)(34H)(35H)(36H)(37H)關(guān)鍵字(50H)第一次#45H第二次#45H第三次思考:(1)運(yùn)行程序,檢查(50H)的值,判斷程序設(shè)計(jì)是否達(dá)到要求。(2)若要查找與45H地址內(nèi)容相同的數(shù),如何修改程序? 把#45H改45H,給45H賦值一個(gè)數(shù)(3)若要查找與45H絕對值相同的數(shù),如何修改程序?并輸入不同的數(shù)據(jù)運(yùn)行程序,驗(yàn)證程序的正確性。(1) MOV 30H,#00H MOV 31H,#01H MOV 32H,#045H MOV 33H,#04H MOV 34H
20、,#05H MOV 35H,#06H MOV 36H,#07H MOV 37H,#08H MOV R0,#30H MOV R7,#8LOOP: MOV A,R0 CJNE A,#45H,NEXT MOV 50H,#0FFH SJMP $NEXT: INC R0 DJNZ R7,LOOP MOV 50H,#7FH END(3)MOV 30H,#00H MOV 31H,#01H MOV 32H,#0BBH MOV 33H,#04H MOV 34H,#05H MOV 35H,#06H MOV 36H,#07H MOV 37H,#08H MOV R0,#30H MOV R7,#8LOOP: MOV A
21、,R0 CJNE A,#45H,AAA MOV 50H,#0FFH SJMP $ AAA: CPL A INC A CJNE A,#45H,NEXT MOV 50H,#0FFH SJMP $NEXT: INC R0 DJNZ R7,LOOP MOV 50H,#7FH END2、極值查找:首先將8個(gè)不同的數(shù)寫入48H4FH,再編程分別找出最大值和最小值,送到40H和50H。數(shù) 據(jù) 區(qū) 數(shù) 據(jù)最大值最小值單元地址(48H)(49H)(4AH)(4BH)(4CH)(4DH)(4EH)(4FH)(40H)(50H)第一次第二次第三次思考:若這8個(gè)數(shù)是有符號(hào)的數(shù),如何編程查找最大值和最小值。合并 ORG 00
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高致病性禽流感病毒實(shí)驗(yàn)活動(dòng)審批
- 院感保潔員培訓(xùn)
- 穿孔吸音板施工
- 2026云南曲靖市宣威市發(fā)展和改革局招聘編制外工作人員5人備考題庫完整答案詳解
- 2026年武漢消防招聘270名政府專職消防員備考題庫有答案詳解
- 2026年上半年黑龍江事業(yè)單位聯(lián)考省農(nóng)業(yè)農(nóng)村廳招聘19人備考題庫有答案詳解
- 2026上半年貴州事業(yè)單位聯(lián)考務(wù)川自治縣招聘48人備考題庫及答案詳解(新)
- 隨機(jī)過程在微分方程中的應(yīng)用
- 2025廣東佛山市順德區(qū)沙滘初級(jí)中學(xué)第一學(xué)期生活老師招聘備考題庫及答案詳解參考
- 2026山東青島市農(nóng)業(yè)融資擔(dān)保有限責(zé)任公司招聘3人備考題庫完整參考答案詳解
- 柴油維修技術(shù)培訓(xùn)課件
- DL∕T 5210.6-2019 電力建設(shè)施工質(zhì)量驗(yàn)收規(guī)程 第6部分:調(diào)整試驗(yàn)
- 2024年度初會(huì)《初級(jí)會(huì)計(jì)實(shí)務(wù)》高頻真題匯編(含答案)
- 績效考核和薪酬方案通用模板
- YY/T 0590.1-2018醫(yī)用電氣設(shè)備數(shù)字X射線成像裝置特性第1-1部分:量子探測效率的測定普通攝影用探測器
- GB/T 16927.1-2011高電壓試驗(yàn)技術(shù)第1部分:一般定義及試驗(yàn)要求
- 政府會(huì)計(jì)準(zhǔn)則優(yōu)秀課件
- 陣發(fā)性室性心動(dòng)過速課件
- 無機(jī)與分析化學(xué)理論教案
- 名詞性從句 講義-英語高考一輪復(fù)習(xí)語法部分
- T∕ZZB 2722-2022 鏈板式自動(dòng)排屑裝置
評(píng)論
0/150
提交評(píng)論