(完整word版)單片機軟件實驗報告_第1頁
(完整word版)單片機軟件實驗報告_第2頁
(完整word版)單片機軟件實驗報告_第3頁
(完整word版)單片機軟件實驗報告_第4頁
(完整word版)單片機軟件實驗報告_第5頁
已閱讀5頁,還剩77頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗一內(nèi)存操作1. 實驗目的 掌握數(shù)據(jù)傳送指令; 掌握各種數(shù)據(jù)傳送指令的尋址方式; 熟練運用keil 環(huán)境對匯編程序進行調(diào)試; 掌握數(shù)據(jù)傳送、復制等程序的設計與調(diào)試方法。2. 預習要求 理解數(shù)據(jù)傳送指令和循環(huán)指令的使用; 理解如何對內(nèi)部寄存器、內(nèi)部RAM 、外部 XRAM (外部數(shù)據(jù)存儲器)的讀寫; 理解各種尋址方式,尤其是較為抽象的變址尋址及相對尋址的方式; 認真預習本實驗內(nèi)容,自行編寫程序,填寫實驗報告。1 臺;3. 實驗設備 計算機4. 基礎(chǔ)型實驗內(nèi)容:1. 下列程序的功能是給外部XRAM 8000H 80FFH 的 256 個單元的內(nèi)容賦值,賦值的內(nèi)容取決于程序中A 的賦值。在 Kei

2、l 環(huán)境運行該程序,并觀察寄存器及內(nèi)存單元的變化。ORG0000HSTARTEQU8000H;MAIN:MOVDPTR,#START;;起始地址MOVR0,#0H;;設置256 字節(jié)計數(shù)值MOVA,#1H;Loop:MOVXDPTR,A;INCDPTR;;指向下一個地址DJNZR0,Loop;;計數(shù)值減1NOP;SJMP$;ENDA 為 1H, DPTR 遞增到 8100H,奇偶校驗位由于A 的內(nèi)容是1H,所以 p 也是 1.2. 下列程序?qū)⑼獠縓RAM 3000H起始的256 個字節(jié)存儲塊移動到外部XRAM 4000H起始的256 個字節(jié)存儲塊,在Keil 環(huán)境運行如下程序,觀察寄存器及存儲

3、單元的變化。ORG 0000HMOV DPTR,#3000HMOV A,#01HMOV R5,#0HLOOP:MOVX DPTR,AINC DPTRDJNZ R5,LOOPMOV R0,#30HMOV R1,#00HMOV R2,#40HMOV R3,#00HMOV R7,#0HLOOP1:MOV DPH,R0MOV DPL,R1MOVX A,DPTRMOV DPH,R2MOV DPL,R3MOVX DPTR,AINC R1INC R3DJNZ R7,LOOP1SJMP $END實現(xiàn)了將3000H 開始的256 個單元的內(nèi)容復制到以4000H 開頭的外部RAM 存儲單元中。R0 的值為 30H

4、; R2的值變?yōu)?0H;寄存器A 中賦值為1H,對棧指針sp初始化為07H,其最大值亦為07H , DPTR 中最后遞增到40ffH , psw 中只有奇偶校驗位p 是 1H3 在 Keil 環(huán)境運行如下程序,觀察寄存器及內(nèi)存單元的變化,將變化結(jié)果注釋于右側(cè),并說明程序完成什么功能?將程序中MOV A,R0 改成 MOVX A,R0 ,將 MOV R1,A改成 MOVX R1,A ,運行如下程序,觀察寄存器及相應地址RAM 、 XRAM 地址單元存儲內(nèi)容的變化。1.ORG0000H; 程序從 000H 開始MOVR0,#30H;MOVR1,#50HMOVR2,#20HL1:MOVA,R0MOV

5、R1,AINCR0INCR1DJNZR2,L1SJMP $ENDR0 的值遞增到50H, R1 的值遞增到70H , A 中的值是4FH 中的值,即FFH(程序運行前自己設定的)該程序?qū)?nèi)部RAM 30H 開始的連續(xù)20H 個存儲單元中的內(nèi)容復制到內(nèi)部RAM50H 開始的連續(xù)20H 個存儲單元中。其中30H 到 4FH 中的值在程序運行前自定義。2. 將程序中MOV A,R0 改成 MOVX A,R0,將 MOV R1,A 改成 MOVX R1,AORG0000HMOVR0,#30HMOVR1,#50HMOVR2,#20HL1:MOVX A,R0MOVX R1,AINCR0INCR1DJNZ

6、R2,L1SJMP $END寄存器 A 中的數(shù)值沒有發(fā)生過任何變化,R0 和 R1 同未改變前一樣,一直遞增到50H 和 70H50H 到 6FH 存儲單元中。雖然設定了外部RAM 30H 到 4FH 中的值,但是并沒有復制到原因是初始化后口都為,而使用MOVX A , Ri要 求 口 為 , 所 以 只 要 在 程 序 前 加 MOVP2,#00H 就能實現(xiàn)和原來一樣的功能了5 .設計型實驗 在 keil 環(huán)境下,修改內(nèi)部RAM3 0H 3FH的內(nèi)容分別為#00H #0FH,設計程序?qū)崿F(xiàn)將內(nèi)部 RAM 30H-3FH單元的內(nèi)容復制到40H-4FH 中。ORG 000H;MOV R2,#10H

7、;MOV A,#0H;MOV R1,#30H;MOV R0,#40H;LOOP: MOV R1,A;INC R1;INC A;DJNZ R2,LOOP;MOV R1,#30H;MOV R2,#10H;LOOP2:MOV A,R1;MOV R0,A;INC R1;INC R0;DJNZ R2,LOOP2;SJMP $;END在 keil 環(huán)境下,修改內(nèi)部RAM3 0H 3FH的內(nèi)容分別為#00H #0FH,設計程序?qū)崿F(xiàn)將內(nèi)部RAM 30H 3FH 單元的內(nèi)容復制到片外1030H 103FH 中。ORG 000H;MOV R2,#10H;MOV A,#0H;MOV R1,#30H;MOV DPTR

8、,#1030H;LOOP: MOV R1,A;INC R1;INC A;DJNZ R2,LOOP;MOV R1,#30H;MOV R2,#10H;LOOP2:MOV A,R1;MOVX DPTR,A;INC R1;INC DPTR;DJNZ R2,LOOP2;SJMP $; 設計程序?qū)⑼獠?4KB 的 XRAM 高低地址存儲內(nèi)容互換;如 0000H 與 0FFFFH , 0001H與 0FFFEH , 0002H 與 0FFFDH, .互換;互換數(shù)據(jù)個數(shù)為256。ORG 000H;MOV DPTR,#0FFFFH;保存當然DPTR 低位MOV R1,DPL loop:MOV DPL,R1;MO

9、VX A,DPTR;MOV R3,AMOV R0,DPHMOV A,DPH;CPL AMOV DPH,A;MOV A,R1;CPL AMOV DPL,AMOVX A,DPTR;MOV R4,AMOV A,R3;MOVX DPTR,AMOV DPH,R0;MOV DPL,R1MOV A,R4;MOVX DPTR,ADEC R1;CJNE R1,#0FFH,LOOP;SJMP $;END;保存當前DPTR的內(nèi)容;保存當然DPTR高位; 求得當前DPTR高位的反碼; 求得當前DPTR低位的反碼;求得當前DPTR反碼; 保存當前DPTR 對稱碼(反碼)的內(nèi)容;將當前DPTR(原碼 )的內(nèi)容存入對稱碼中

10、;還原DPTR;將對稱碼的內(nèi)容存入當前DPTR(原碼 )運行前:運行后:6 . 綜合型實驗a) 設計程序?qū)崿F(xiàn)將外部XRAM 0000H起始的512 個字節(jié)數(shù)據(jù)傳送到外部XRAM 2000H起始的 512 個存儲單元中。ORG 0000H;MOV R3,#0H;MOV DPTR,#0000H;LOOP:MOVX A,DPTR;MOV R0,DPL;MOV DPH,#20H;MOVX DPTR,A;INC R0;MOV DPL,R0;MOV DPH,#0H;DJNZ R3,LOOP;SJMP $;ENDX:0H 至 X:0FFH至X:2000HX:20FFH;b) 若源塊地址和目標塊地址有重疊,程

11、序該如何設計(用地址減1 方法移動塊)?假設源塊地址2000H ,目標塊地址2050H ,移動塊長度80H ;試設計程序?qū)崿F(xiàn)該功能。思路:先將由源塊地址起始的數(shù)據(jù)塊保存到非目標塊地址中(防止覆蓋目標地址),然后再復制到目標塊地址;ORG 0000H;MOV DPTR,#2000H;MOV R3,#80H;LOOP:MOVX A,DPTR;MOV R0,DPH;MOV R1,DPL;MOV DPH,#30H;MOVX DPTR,A;MOV DPH,R0;INC R1;MOV DPL,R1;DJNZ R3,LOOP; 本循環(huán)實現(xiàn)將x:2000H 開始的 80個單元中的內(nèi)容復制到的 80 個單元中去

12、MOV DPTR,#3000H;MOV R3,#80H;MOV R4,#50H;LOOP2:MOVX A,DPTR;MOV R2,A;MOV R0,DPH;MOV R1,DPL;MOV A,R4;MOV DPH,#20H;MOV DPL,A;MOV A,R2;MOVX DPTR,A;INC R4;MOV DPH,R0;INC R1;MOV DPL,R1;DJNZ R3,LOOP2; 本循環(huán)實現(xiàn)將x:3000H 開始的 80個單元中的內(nèi)容復制到始的 80 個單元中去SJMP $;x:3000H 開始x:2050H 開ENDAddress: x:2000HX: 0X002000:(112200X:

13、0x002015:tnrTJO0000X:0x00202A:0000000000X:0x00203F:0000000000X:0x002054:0000000000X:0x0020«9:OJL毀000000X:0x00207E:石899,oo0000Address: p3000HX:Dx003000M533X: 0x003015:OOOOOOOOXiOx00302A!0000OOOOX:Dx00303F:0000OOOOX: 0x003054:0000OOOOX: 0x003069.OOOOX: 0x00307788990000000000000000RtQtntfS Q X1 Va

14、luey0x20IBSx20r:0r3gur4OtOO r50r:0r5U±jUr7OZIOA Syc0x59b0x00w0x07?。╥w0WI73 <0x2oeoIpc iC OxCOt5St4t<S2L79sec0 00?17901t: pwOzOOW)p: I 三 Registe”“,"803: XCV R3J8DH;4: LOOP:FCV3,#FO IOX0TJ力rmt64twn 1Cl i 15 : |16 : ElORG OOOOH;MOV DPTRr #20C0H;MOV R3r# IOH:LOOP:hOVX A, SDPTR;MW ROf CPH

15、;KW RlrDPL;MW D?Hr#30H; MDVX gDPTR,A; MDV D?H,RO;THC RI:MW DPI,RI, OJN2 R3,LOOP;MOV DPTR,t30C0H;MOV R3r#20H;MOV R4r#30H:1MOVX A.LPTR;M«r)ory 1Load BS MST61S心H X2AS2HX:0x002050: X:0x002065: X:Ox0O2O7A: X:0x0O2O8F:X:OX0020A4:X:0x0O2OB9: X:0x002OCEoo oo oo000000 DO00000009 OO00 0000000030 00000000

16、0000實驗二數(shù)制及代碼轉(zhuǎn)換1. 實驗目的 了解微機系統(tǒng)中的數(shù)制與代碼表示方法; 掌握計算機中使用的各種代碼轉(zhuǎn)換方法; 掌握實現(xiàn)分支、循環(huán)的指令及其程序的編寫方法;2. 預習要求 理解十進制數(shù)、十六進制數(shù)的數(shù)制表示方法; 理解 BCD 碼、 ASCII 碼編碼方式; 如何實現(xiàn)十六進制數(shù)與BCD 碼之間的轉(zhuǎn)換; 如何實現(xiàn)ASCII 碼與 BCD 碼之間的轉(zhuǎn)換。3. 實驗設備計算機1 臺。4. 基礎(chǔ)型實驗內(nèi)容以下程序完成單字節(jié)的ASCII 碼到十六進制數(shù)轉(zhuǎn)換,完成空白處程序填寫,并在Keil 環(huán)境運行程序,觀察寄存器及相應地址內(nèi)存單元內(nèi)容的變化。RESULT EQU 30HORG 0000HMOV

17、 A,#41H; “ A”的ASCII 碼CLR CSUBB A, #37H;轉(zhuǎn)換為十六進制值A(chǔ)MOV RESULT, ALJMP $ENDBCD 碼到十六進制數(shù)轉(zhuǎn)換,,在Keil 環(huán)境運行程序,觀察寄存器及相應地址內(nèi)存單元內(nèi)容的變化。RESULT EQU 30HORG 0000HMOV A,#23HMOV R0,AANL A,#0F0HSWAP AMOV B , #0AHMUL ABMOV RESULT , A ; 轉(zhuǎn)換高位MOV A, R0MOV B, #0FHANL A,B;ADD A,RESULTMOV RESULT,A; 轉(zhuǎn)換低位SJMP $END以下程序?qū)巫止?jié)十六進制數(shù)A的值轉(zhuǎn)換

18、為十進制數(shù),存放在30H 32H中,完成空白處程序填寫,并在Keil 環(huán)境運行程序,觀察寄存器及相應地址內(nèi)存單元內(nèi)容的變化。RESULT EQU 30HORG 0000HMOV A, #7BHMOV B, #100DIV ABMOVRESULT ,AMOVA,BMOVB, #10DIVABMOVRESULT+1,AMOVRESULT+2,BSJMP$END除以 100 得百位數(shù)除以 10 得十位數(shù) 余數(shù)為個位數(shù)5. 設計型實驗內(nèi)容 將 30H 、 31H 單元中的十六進制數(shù),轉(zhuǎn)換成ASCII 碼,存放到40H 開始的 4 個單元中。ORG 0000H;MOV R2,30H;MOV R3,31H

19、;MOV R0,#40H;MAIN:MOV A,R2;ANL A,#0F0H;SWAP A;ADD A,#90H;DA A;ADDC A,#40H;DA A;MOV R0,A;將 31H 中的高位轉(zhuǎn)化成ASCII 碼INC R0;MOV A,R2;ANL A,#0FH;ADD A,#90H;DA A;ADDC A,#40H;DA A;MOV R0,A;將 30H 中的低位轉(zhuǎn)化成ASCII 碼INC R0;MOV A,R3;ANL A,#0F0H;SWAP A;ADD A,#90H;DA A;ADDC A,#40H;DA A;MOV R0,A;將 30H 中的高位轉(zhuǎn)化成ASCII 碼INC R0

20、;MOV A,R3;ANL A,#0FH;ADD A,#90H;DA A;ADDC A,#40H;DA A;MOV R0,A;將 31H 中的低位轉(zhuǎn)化成ASCII 碼INC R0;SJMP $;END; 除以 100 得百位數(shù); 除以 10 得十位數(shù); 余數(shù)為個位數(shù) 單字節(jié)十六進制數(shù)轉(zhuǎn)換為十進制數(shù)的程序設計。設單字節(jié)十六進制數(shù)存放在內(nèi)部RAM 30H 中,結(jié)果要求存放到內(nèi)部RAM 40H-41H中。本題應該是40H-42H, 因為該十六進制數(shù)完全有可能超過100RESULT EQU 40H;ORG 0000H;MOV R0,#30H;MOV A,R0;MOV B,#100DIV ABMOV R

21、ESULT,AMOV A,BMOV B,#10DIV ABMOV RESULT+1H,AMOV RESULT+2H,BSJMP $END 單字節(jié)壓縮BCD 碼數(shù)轉(zhuǎn)換成十六進制數(shù)的程序設計。設壓縮BCD 碼數(shù)存放在內(nèi)部 RAM30H 中,結(jié)果要求存放在內(nèi)部RAM40H 中。RESULT EQU 40H;設置存放地址ORG 0000H;MOV R1,#30H;MOV A,R1;ANL A,#0F0H;取高4 位SWAP A;MOV B,#0AH;MUL AB;高位乘以10MOVRESULT,A;轉(zhuǎn)換高位MOV A,R1;MOVB,#0FH;取低4位ANL A,B;ADD A,RESULT;MOV

22、RESULT,A;轉(zhuǎn)換低位SJMP $;END6. 綜合實驗多字節(jié)十六進制數(shù)轉(zhuǎn)換為十進制數(shù)的程序設計。設多字節(jié)十六進制數(shù)存放在內(nèi)部RAM 30H 開始的單元中,要求結(jié)果存放在內(nèi)部RAM 40H開始的單元中。ORG0000H;MOVR1,#40H; 存放單元MOVR0,#30H; 起始存儲單元MOVR2,#9H; 設置要轉(zhuǎn)化的單元數(shù),即循環(huán)次數(shù)LOOP:MOVA,R0;MOVB,#100;DIVAB;MOVR1,A; 除以100 得百位數(shù)INCR1;MOVA,BMOVB,#10;DIVABMOVR1,A; 除以10 得十位數(shù)INCR1;MOVR1,B; 余數(shù)為個位INCR1;INCR0;DJNZ

23、R2,LOOP;SJMP$; 設置存放地址; 取高4 位; 高位乘以10; 轉(zhuǎn)換高位; 取低4 位; 轉(zhuǎn)換低位注:由于內(nèi)部RAM 30H 與內(nèi)部 RAM 40H 之間只有16 個單元,即循環(huán)的次數(shù)最好不要超過 16次,否則數(shù)據(jù)塊發(fā)生重疊,如果非要進行16 次以上操作,那么可以先將轉(zhuǎn)化好的十進制數(shù)存放到其他內(nèi)存中,最后再統(tǒng)一復制到40H 開始的內(nèi)存中,此處不再列出程序。多字節(jié)壓縮BCD 碼數(shù)轉(zhuǎn)換成十六進制數(shù)的程序設計。設壓縮BCD 碼數(shù)存放在內(nèi)部 RAM30H 開始的單元中,要求結(jié)果存放在內(nèi)部RAM 40H開始的單元中。ORG 0000H;MOV R0,#40H;MOV R1,#30H;MOV

24、R2,#9H;LOOP:MOV A,R1;ANL A,#0F0H SWAP A;MOV B,#0AH;MUL ABMOV R0,AMOV A,R1;MOV B,#0FH ANL A,B;ADD A,R0;MOV R0,AINC R0;INC R1;DJNZ R2,LOOP;SJMP $;END注:由于內(nèi)部RAM 30H 與內(nèi)部 RAM 40H 之間只有16 個單元,即循環(huán)的次數(shù)最好不要超過 16次,否則數(shù)據(jù)塊發(fā)生重疊,如果非要進行16 次以上操作,那么可以先將轉(zhuǎn)化好的十進制數(shù)存放到其他內(nèi)存中,最后再統(tǒng)一復制到40H 開始的內(nèi)存中,此處不再列出程序。實驗三算術(shù)運算1. 實驗目的 掌握算術(shù)運算類、

25、邏輯運算類指令的使用方法; 掌握BCD碼、補碼數(shù)制表示方法; 掌握運算程序及循環(huán)程序的編寫和調(diào)試方法。2. 預習要求 理解8051 單片機的算術(shù)運算指令; 理解補碼表示數(shù)值的方法; 理解壓縮、非壓縮BCD碼表示數(shù)值的方法; 如何實現(xiàn)多位數(shù)的BCD碼加、乘、除運算; 如何實現(xiàn)多位數(shù)的BCD碼減法運算; 預習本實驗內(nèi)容,以及相關(guān)課程內(nèi)容。3. 實驗設備計算機1 臺。4. 基礎(chǔ)型實驗內(nèi)容 以下程序完成單字節(jié)的BCD 碼加法功能,完成空白處程序填寫,并在 Keil 環(huán)境運行程序,觀察寄存器及相應地址內(nèi)存單元內(nèi)容的變化。 RESULT EQU 30H ORG 0000H MOV A,#99HMOV B,

26、#99H ADD A , B DA A; BCD碼相加并得到BCD碼結(jié)果MOV RESULT , A MOV A,#00H ADDC A,#00HMOV RESULT+1 , A; 高位處理SJMP $ END 下列程序完成多字節(jié)BCD 碼加法運算。內(nèi)部RAM 30H 開始的 4 字節(jié)長的BCD碼和外部XRAM 1000H 開始的4字節(jié)長的BCD 碼相加,結(jié)果放在外部XRAM 1100H開始的單元中(從低字節(jié)到高字節(jié)), 在 Keil 環(huán)境運行程序,觀察寄存器及相應地址內(nèi)存單元內(nèi)容的變化。ORG 0000HCLR CMOV R5,#04HMOV R0,#30HMOV R1,#10HMOV R2

27、,#00HMOV R3,#11HMOV R4,#00HL1:MOV DPH,R1MOV DPL,R2MOVX A,DPTRADDC A, R0DA A; 十進制調(diào)整MOV DPH,R3MOV DPL,R4MOVX DPTR,AINC R2INC R4INC R0L2:DJNZ R5, L1JNC L3MOV DPTR,#1104H;有進位則結(jié)果的第五個字節(jié)置1MOV A,#01HMOVX DPTR,AL3:NOPSJMP $END5. 設計型實驗內(nèi)容設計程序,實現(xiàn)任意字節(jié)(設字節(jié)數(shù)為n )壓縮 BCD 碼的相加。加數(shù)分別存放在外部 RAM 1000H 和內(nèi)部 RAM 30H 開始的單元中,結(jié)果

28、保存到內(nèi)部RAM 40H 開始的單元中。因為是任意字節(jié),所以相加的結(jié)果不能直接放在內(nèi)部40H 開始的單元中,因為字節(jié)數(shù)可能超過 10H 個;所以需要設置臨時存放和的地址ORG 0000H;CLR C;MOV R5,#04HMOV A,R5;MOV R6,AMOV R0,#30HMOV R1,#10H;MOV R2,#00HMOV R3,#21H;MOV R4,#00HL1:MOV DPH,R1;MOV DPL,R2;MOVX A,DPTR;ADDC A,R0;DA AMOV DPH,R3;MOV DPL,R4;MOVX DPTR,A;INC R2;INC R4;INC R0;L2:DJNZ R

29、5,L1;JNC L3;MOV DPH,R3;MOV DPL,R4MOV A,#01H;MOVX DPTR,A;L3:NOP; 自定義需要參加運算的字節(jié)數(shù); 保存參加運算的字節(jié)數(shù); 存放加數(shù)的片內(nèi)RAM 起始地址30H; 存放加數(shù)的片外RAM 起始地址1000H; 臨時保存和的片外RAM 起始地址2100H; 十進制調(diào)整; 有進位則結(jié)果的下一個字節(jié)置1MOV DPH,R3;MOV DPL,R4;MOVX A,DPTR; CJNE A,#01H,L4 INC R6; 判斷是否做加法后有進位,有則使R6 加 1MOV R0,#40H; 本語句塊實現(xiàn)將臨時存放單元中的和復制到內(nèi)部RAM 中以 40H

30、 起始的存儲單元中MOV R1,#00H;MOV R2,#21H;L4: MOV DPH,R2;MOV DPL,R1;MOVX A,DPTR;MOV R0,A;INC R0;INC R1;CJNE R1,#00H,L5;INC R2L5: DJNZ R6,L4;R1 變成 00H 之后, R2 加 1SJMP $;END設計程序,實現(xiàn)多字節(jié)(設字節(jié)數(shù)為n)十六進制無符號數(shù)的減法。被減數(shù)和減數(shù)分別存放在外部RAM 1000H 和內(nèi)部 RAM 30H 開始的單元中,結(jié)果保存到內(nèi)部RAM40H 開始的單元中。ORG 0000H;被減數(shù)低位地址 被減數(shù)高位地址 減數(shù)地址 設置字節(jié)數(shù) 設置存放地址; 本

31、循環(huán)實現(xiàn)字節(jié)的逐個相減的過程MOV R4,#00HMOV R2,#10HMOV R1,#30HMOV R3,#4HMOV R0,#40HLOOP: MOV DPL,R4MOV DPH,R2;MOVX A,DPTR;SUBB A,R1;MOV R0,A;INC R0;INC R4;INC R1; 如果 R4 增加到 0H ,則高位加1CJNE R4,#0H,LINC R2;L:DJNZ R3,LOOP;SJMP $;END; 負數(shù)做正數(shù)處理;R6 中存放高8 位在內(nèi)部 RAM 30H 單元開始,存放著一串帶符號數(shù)據(jù)(負數(shù)用補碼表示),數(shù)據(jù)長度在 10H 中(設數(shù)據(jù)長度小于等于16) ;編程分別求

32、其中正數(shù)之和與負數(shù)之和,并存入內(nèi)部 RAM 的 2CH 與 2EH 開始的 2 個單元中,記錄程序運行結(jié)果。例如:內(nèi)部RAM 的 30H-35H 存放 -1, 5, -2, 19, -8,對應的補碼分別為0FFH ,5H, 0FEH , 13H, 0F8H ,則正、負數(shù)的和分別為24、 -11,對應的補碼分別為18H,0F5H 。ORG 0000H;MOV R2,#10H;MOV R0,#30H;MOV R3,#00H;MOV R4,#00H;MAIN:MOV A,R0;JB ACC.7,SUBBB;SJMP ADDDD;L:INC R0;DJNZ R2,MAIN;SJMP EXIT;SUBB

33、B:CLR ACC.7MOV B,A;MOV A,R3;CLR ACC.7;MOV R3,A;MOV A,B;ADD A,R3;MOV R7,A;JNB CY,NEXT1;MOV A,#01H;ADD A,R6;MOV R6,AMOV A,R7;MOV R3,ACLR CY;R3 中存放低8 位NEXT1:SJMP L;ADDDD:ADD A,R4;JNB CY,NEXT2;R1 中存放高8 位;R4 中存放低8 位INC R1NEXT2:MOV R4,ACLR CY;SJMP L;EXIT: MOV 2CH,R1;MOV 2DH,R4;MOV 2EH,R6;MOV 2FH,R3;SJMP $

34、;END6. 綜合實驗 設計程序,實現(xiàn)十六進制無符號數(shù)雙字節(jié)乘單字節(jié),結(jié)果存于內(nèi)部RAM 的 40H 開始的三個單元中,使用單步、斷點方式調(diào)試程序,查看結(jié)果。(調(diào)試數(shù)據(jù):35A6H*56H )ORG 0000H;MULMST:MOV R0,#40HMOV A,R3;MOV B,R5;MUL ABMOV R0,AMOV R7,BMOV A,R2;MOV B,R5;MUL ABADD A,R7INC R0;MOV R0,ACLR A;ADDC A,BINC R0;MOV R0,ASJMP $;END;最終結(jié)果:;設置存放地址;R3*R5=BA;R3R5L送 40H 單元; R3R5H 暫存 R7;

35、R2*R5=BA; R3R5H+R2R5L,形成標志位Cy; R3R5 H+R2R5 L 結(jié)果存放到41H 單元; R2R5H+Cy; R2R5 H+Cy 存放到42H單點調(diào)試:斷點調(diào)試:第一次乘法:第二次乘法:得到最高位:全部存入對應地址: 設計一個實現(xiàn)十六進制無符號數(shù)雙字節(jié)乘雙字節(jié)的通用程序。ORG 0000H;MOV R0,#40H;MUL1: MOV A,R3;MOV B,R5;MUL AB;MOV R0,A;MOV R7,B;MOV A,R2;MOV B,R5;MUL AB;ADD A,R7;MOV R7,A;CLR A;ADDC A,B;MOV R6,A;MOV A,R3;MOV

36、B,R4;MUL AB;ADD A,R7;INC R0;MOV R0,A;MOV A,R6;ADDC A,B;MOV R7,A;MOV F0,C;MOV A,R2;MOV B,R4;MUL AB;ADD A,R7;INC R0;MOV R0,A;CLR A;MOV ACC.0,C;MOV C,F0;ADDC A,B;INC R0;MOV R0,A;SJMP $;END最終結(jié)果:實驗四比較和查表1. 實驗目的掌握比較指令的使用及循環(huán)程序的編寫方法;掌握字符查找的思路和算法;理解并能運用查表和散轉(zhuǎn)指令。2. 預習要求理解掌握比較程序的設計思路;理解多分支結(jié)構(gòu)程序的編程方法;預習本節(jié)實驗內(nèi)容,編寫程序及實驗預習報告。3. 實驗設備1 臺。4. 基礎(chǔ)型實驗內(nèi)容以下程序完成共陰數(shù)碼管數(shù)值顯示譯碼的功能,在Keil 環(huán)境運行程序,觀察寄存

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論