




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、實(shí)驗(yàn)一內(nèi)存操作1. 實(shí)驗(yàn)?zāi)康恼莆諗?shù)據(jù)傳送指令;掌握各種數(shù)據(jù)傳送指令的尋址方式;熟練運(yùn)用 keil環(huán)境對(duì)匯編程序進(jìn)行調(diào)試;掌握數(shù)據(jù)傳送、復(fù)制等程序的設(shè)計(jì)與調(diào)試方法。2. 預(yù)習(xí)要求理解數(shù)據(jù)傳送指令和循環(huán)指令的使用;理解如何對(duì)內(nèi)部寄存器、內(nèi)部RAM 、外部 XRAM (外部數(shù)據(jù)存儲(chǔ)器)的讀寫;理解各種尋址方式,尤其是較為抽象的變址尋址及相對(duì)尋址的方式;認(rèn)真預(yù)習(xí)本實(shí)驗(yàn)內(nèi)容,自行編寫程序,填寫實(shí)驗(yàn)報(bào)告。3. 實(shí)驗(yàn)設(shè)備計(jì)算機(jī)1 臺(tái);4.基礎(chǔ)型實(shí)驗(yàn)內(nèi)容:1. 下列程序的功能是給外部 XRAM 8000H 80FFH 的 256 個(gè)單元的內(nèi)容賦值,賦值的內(nèi)容取決于程序中 A 的賦值。 在 Keil 環(huán)境運(yùn)行該
2、程序, 并觀察寄存器及內(nèi)存單元的變化。ORG0000HSTARTEQU8000H;MAIN:MOVDPTR,#START;;起始地址MOVR0,#0H;;設(shè)置 256 字節(jié)計(jì)數(shù)值MOVA,#1H;Loop:MOVXDPTR,A;INCDPTR;;指向下一個(gè)地址DJNZR0,Loop;;計(jì)數(shù)值減 1NOP;SJMP$;END寄存器 A 為 1H, DPTR 遞增到 8100H ,奇偶校驗(yàn)位由于A 的內(nèi)容是1H,所以 p 也是 1.2. 下列程序?qū)⑼獠縓RAM 3000H起始的256 個(gè)字節(jié)存儲(chǔ)塊移動(dòng)到外部XRAM 4000H起始的256 個(gè)字節(jié)存儲(chǔ)塊,在 Keil 環(huán)境運(yùn)行如下程序,觀察寄存器及
3、存儲(chǔ)單元的變化。ORG0000HMOVDPTR,#3000HMOVA,#01HMOVR5,#0HLOOP:MOVXDPTR,AINCDPTRDJNZR5,LOOPMOVR0,#30HMOVR1,#00HMOVR2,#40HMOVR3,#00HMOVR7,#0HLOOP1:MOVDPH,R0MOVDPL,R1MOVXA,DPTRMOVDPH,R2MOVDPL,R3MOVXDPTR,AINCR1INCR3DJNZR7,LOOP1SJMP$END實(shí)現(xiàn)了將 3000H 開始的 256 個(gè)單元的內(nèi)容復(fù)制到以4000H 開頭的外部 RAM 存儲(chǔ)單元中。R0 的值為最大值亦為30H;R2 的值變?yōu)?0H;寄
4、存器 A 中賦值為1H,對(duì)棧指針07H ,DPTR 中最后遞增到40ffH , psw 中只有奇偶校驗(yàn)位sp 初始化為 07H ,其p 是 1H3 在 Keil 環(huán)境運(yùn)行如下程序,觀察寄存器及內(nèi)存單元的變化,將變化結(jié)果注釋于右側(cè),并說明程序完成什么功能?將程序中MOV A,R0改成 MOVX改成 MOVX R1,A,運(yùn)行如下程序,觀察寄存器及相應(yīng)地址內(nèi)容的變化。A,R0 ,將 MOVR1,ARAM 、XRAM地址單元存儲(chǔ)1.ORG0000H; 程序從 000H 開始MOVR0,#30H;MOVR1,#50HMOVR2,#20HL1:MOVA,R0MOVR1,AINCR0INCR1DJNZR2,
5、L1SJMP$ENDR0 的值遞增到 50H, R1 的值遞增到 70H ,A 中的值是 4FH 中的值,即 FFH( 程序運(yùn)行前自己設(shè)定的 )該程序?qū)?nèi)部 RAM 30H 開始的連續(xù) 20H 個(gè)存儲(chǔ)單元中的內(nèi)容復(fù)制到內(nèi)部 RAM 50H 開始的連續(xù) 20H 個(gè)存儲(chǔ)單元中。其中 30H 到 4FH 中的值在程序運(yùn)行前自定義。2.將程序中 MOV A,R0改成 MOVXA,R0 ,將 MOV R1,A改成 MOVX R1,AORG0000HMOVR0,#30HMOVR1,#50HMOVR2,#20HL1:MOVXA,R0MOVXR1,AINCR0INCR1DJNZR2,L1SJMP $END寄存
6、器 A 中的數(shù)值沒有發(fā)生過任何變化,R0 和 R1 同未改變前一樣, 一直遞增到50H 和 70H雖然設(shè)定了外部RAM 30H到 4FH中的值,但是并沒有復(fù)制到50H到6FH存儲(chǔ)單元中。原因是初始化后口都為,而使用MOVX A,Ri要 求 口 為 , 所 以 只 要 在 程 序 前 加MOVP2,#00H就能實(shí)現(xiàn)和原來一樣的功能了5.設(shè)計(jì)型實(shí)驗(yàn)在keil環(huán)境下,修改內(nèi)部RAM30H 3FH 的內(nèi)容分別為#00H #0FH,設(shè)計(jì)程序?qū)崿F(xiàn)將內(nèi)部 RAM 30H-3FH單元的內(nèi)容復(fù)制到40H-4FH 中。ORG 000H;MOV R2,#10H;MOV A,#0H;MOV R1,#30H;MOV R
7、0,#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)部RAM30H 3FH 的內(nèi)容分別為#00H #0FH,設(shè)計(jì)程序?qū)崿F(xiàn)將內(nèi)部RAM 30H 3FH單元的內(nèi)容復(fù)制到片外1030H 103FH中。ORG 000H;MOV R2,#10H;MOV A,#0H;MOV R1,#30H;MOV DPTR,#1030H;LOOP: MOV R1,A;INC R1;IN
8、C 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 $;END 設(shè)計(jì)程序?qū)⑼獠?64KB 的 XRAM 高低地址存儲(chǔ)內(nèi)容互換; 如 0000H 與 0FFFFH ,0001H與 0FFFEH , 0002H 與 0FFFDH, .互換;互換數(shù)據(jù)個(gè)數(shù)為256。ORG 000H;MOV DPTR,#0FFFFH;MOV R1,DPL ;保存當(dāng)然 DPTR 低位 loop:MOV DPL,R1;MOVX A,DPTR;MOV R3,A;保存當(dāng)前 D
9、PTR 的內(nèi)容MOV R0,DPH;保存當(dāng)然 DPTR 高位MOV A,DPH;CPL A;求得當(dāng)前 DPTR 高位的反碼MOV DPH,A;MOV A,R1;CPL A;求得當(dāng)前 DPTR 低位的反碼MOV DPL,A;求得當(dāng)前 DPTR 反碼MOVX A,DPTR;MOV R4,A;保存當(dāng)前 DPTR 對(duì)稱碼 (反碼 )的內(nèi)容MOV A,R3;MOVX DPTR,A;將當(dāng)前 DPTR( 原碼 )的內(nèi)容存入對(duì)稱碼中MOV DPH,R0;MOV DPL,R1;還原 DPTRMOV A,R4;MOVX DPTR,A;將對(duì)稱碼的內(nèi)容存入當(dāng)前DPTR( 原碼 )DEC R1;CJNE R1,#0FF
10、H,LOOP;SJMP $;END運(yùn)行前:運(yùn)行后:6. 綜合型實(shí)驗(yàn)a)設(shè)計(jì)程序?qū)崿F(xiàn)將外部XRAM 0000H起始的512 個(gè)字節(jié)數(shù)據(jù)傳送到外部XRAM 2000H起始的 512 個(gè)存儲(chǔ)單元中。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的值是自定義的;運(yùn)行程序后復(fù)制到X:2000H 至 X:20FFH;b)若源塊地址和目標(biāo)塊地址有
11、重疊,程序該如何設(shè)計(jì)(用地址減1 方法移動(dòng)塊)?假設(shè)源塊地址2000H ,目標(biāo)塊地址2050H ,移動(dòng)塊長度80H ;試設(shè)計(jì)程序?qū)崿F(xiàn)該功能。思路:先將由源塊地址起始的數(shù)據(jù)塊保存到非目標(biāo)塊地址中(防止覆蓋目標(biāo)地址),然后再復(fù)制到目標(biāo)塊地址;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)實(shí)現(xiàn)將x:2000H開始的80 個(gè)單元中的內(nèi)容復(fù)制到x:3000H
12、開始的 80 個(gè)單元中去MOV DPTR,#3000H;MOV R3,#80H;MOV R4,#50H;LOOP2:MOVX A,DPTR;MOVR2,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)實(shí)現(xiàn)將x:3000H開始的80 個(gè)單元中的內(nèi)容復(fù)制到x:2050H開始的80 個(gè)單元中去SJMP $;END實(shí)驗(yàn)二數(shù)制及代碼轉(zhuǎn)換1. 實(shí)驗(yàn)?zāi)康牧私馕C(jī)系統(tǒng)中的數(shù)制與代碼表示方法;掌握計(jì)算機(jī)
13、中使用的各種代碼轉(zhuǎn)換方法;掌握實(shí)現(xiàn)分支、循環(huán)的指令及其程序的編寫方法;2. 預(yù)習(xí)要求理解十進(jìn)制數(shù)、十六進(jìn)制數(shù)的數(shù)制表示方法;理解 BCD 碼、 ASCII 碼編碼方式;如何實(shí)現(xiàn)十六進(jìn)制數(shù)與BCD 碼之間的轉(zhuǎn)換;如何實(shí)現(xiàn) ASCII 碼與 BCD 碼之間的轉(zhuǎn)換。3. 實(shí)驗(yàn)設(shè)備計(jì)算機(jī)1 臺(tái)。4. 基礎(chǔ)型實(shí)驗(yàn)內(nèi)容以下程序完成單字節(jié)的ASCII碼到十六進(jìn)制數(shù)轉(zhuǎn)換,完成空白處程序填寫,并在Keil環(huán)境運(yùn)行程序,觀察寄存器及相應(yīng)地址內(nèi)存單元內(nèi)容的變化。RESULT EQU30HORG0000HMOVA,#41H; “ A”的ASCII碼CLRCSUBB A,#37H;轉(zhuǎn)換為十六進(jìn)制值A(chǔ)MOVRESULT,
14、ALJMP $END以下程序完成單字節(jié)的 BCD 碼到十六進(jìn)制數(shù)轉(zhuǎn)換, ,在 Keil 環(huán)境運(yùn)行程序,觀察寄存器及相應(yīng)地址內(nèi)存單元內(nèi)容的變化。RESULT EQU 30HORG0000HMOVA,#23HMOVR0,AANL A,#0F0HSWAP AMOVB, #0AHMULABMOVRESULT,A;轉(zhuǎn)換高位MOVA, R0MOVB, #0FHANLA,B;ADDA,RESULTMOVRESULT,A; 轉(zhuǎn)換低位SJMP $END以下程序?qū)巫止?jié)十六進(jìn)制數(shù)A 的值轉(zhuǎn)換為十進(jìn)制數(shù),存放在30H 32H中,完成空白處程序填寫,并在Keil 環(huán)境運(yùn)行程序,觀察寄存器及相應(yīng)地址內(nèi)存單元內(nèi)容的變化。
15、RESULT EQU 30HORG0000HMOVA, #7BHMOVB, #100DIVABMOVRESULT,A;除以 100 得百位數(shù)MOVA, BMOVB, #10DIVABMOVRESULT+1, A;除以 10 得十位數(shù)MOVRESULT+2, B;余數(shù)為個(gè)位數(shù)SJMP $END5. 設(shè)計(jì)型實(shí)驗(yàn)內(nèi)容將 30H、31H 單元中的十六進(jìn)制數(shù),轉(zhuǎn)換成ASCII碼,存放到40H 開始的 4 個(gè)單元中。ORG 0000H;MOV R2,30H;MOV R3,31H;MOV R0,#40H;MAIN:MOV A,R2;ANL A,#0F0H;SWAP A;ADD A,#90H;DA A;ADD
16、C 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;MOV A,R3;ANL A,#0FH;ADD A,#90H;DA A;ADDC A,#40H;DA A;將 31H中的低位轉(zhuǎn)化成碼INC
17、 R0;SJMP $;END單字節(jié)十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)的程序設(shè)計(jì)。設(shè)單字節(jié)十六進(jìn)制數(shù)存放在內(nèi)部RAM 30H中,結(jié)果要求存放到內(nèi)部RAM 40H-41H中。本題應(yīng)該是40H-42H, 因?yàn)樵撌M(jìn)制數(shù)完全有可能超過100RESULT EQU 40H;ORG0000H;MOVR0,#30H;MOVA,R0;MOVB,#100DIVABMOVRESULT ,A; 除以 100得百位數(shù)MOVA,BMOVB,#10DIVABMOVRESULT+1H,A; 除以 10得十位數(shù)MOVRESULT+2H,B; 余數(shù)為個(gè)位數(shù)SJMP$END單字節(jié)壓縮BCD 碼數(shù)轉(zhuǎn)換成十六進(jìn)制數(shù)的程序設(shè)計(jì)。設(shè)壓縮BCD 碼
18、數(shù)存放在內(nèi)部 RAM30H 中,結(jié)果要求存放在內(nèi)部RAM40H 中。RESULT EQU40H;設(shè)置存放地址ORG0000H;MOVR1,#30H;MOVA,R1;ANL A,#0F0H; 取高 4 位SWAP A;MOVB,#0AH;MULAB; 高位乘以 10MOVRESULT,A;轉(zhuǎn)換高位MOVA,R1;MOVB,#0FH; 取低 4 位ANLA,B;ADDA,RESULT;MOVRESULT,A; 轉(zhuǎn)換低位SJMP$;END6. 綜合實(shí)驗(yàn)多字節(jié)十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)的程序設(shè)計(jì)。設(shè)多字節(jié)十六進(jìn)制數(shù)存放在內(nèi)部RAM 30H開始的單元中,要求結(jié)果存放在內(nèi)部RAM 40H開始的單元中。ORG
19、0000H;MOVR1,#40H;存放單元MOVR0,#30H;起始存儲(chǔ)單元MOVR2,#9H;設(shè)置要轉(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ù)為個(gè)位INCR1;INCR0;DJNZR2,LOOP;SJMP$;END注:由于內(nèi)部RAM 30H與內(nèi)部 RAM 40H之間只有16 個(gè)單元,即循環(huán)的次數(shù)最好不要超過 16 次,否則數(shù)據(jù)塊發(fā)生重疊,如果非要進(jìn)行16 次以上操作,那么可以先將轉(zhuǎn)化好的十進(jìn)
20、制數(shù)存放到其他內(nèi)存中,最后再統(tǒng)一復(fù)制到40H 開始的內(nèi)存中,此處不再列出程序。多字節(jié)壓縮BCD 碼數(shù)轉(zhuǎn)換成十六進(jìn)制數(shù)的程序設(shè)計(jì)。設(shè)壓縮BCD 碼數(shù)存放在內(nèi)部 RAM30H 開始的單元中,要求結(jié)果存放在內(nèi)部RAM 40H開始的單元中。ORG0000H;MOVR0,#40H;設(shè)置存放地址MOVR1,#30H;MOVR2,#9H;LOOP:MOVA,R1;ANL A,#0F0H; 取高 4 位SWAP A;MOVB,#0AH;MULAB; 高位乘以 10MOVR0,A;轉(zhuǎn)換高位MOVA,R1;MOVB,#0FH; 取低 4 位ANLA,B;ADDA,R0;MOVR0,A; 轉(zhuǎn)換低位INCR0;INC
21、R1;DJNZR2,LOOP;SJMP$;END注:由于內(nèi)部 RAM 30H 與內(nèi)部 RAM 40H 過 16 次,否則數(shù)據(jù)塊發(fā)生重疊,如果非要進(jìn)行進(jìn)制數(shù)存放到其他內(nèi)存中,最后再統(tǒng)一復(fù)制到之間只有16 個(gè)單元,即循環(huán)的次數(shù)最好不要超16 次以上操作,那么可以先將轉(zhuǎn)化好的十40H 開始的內(nèi)存中,此處不再列出程序。實(shí)驗(yàn)三算術(shù)運(yùn)算1. 實(shí)驗(yàn)?zāi)康恼莆账阈g(shù)運(yùn)算類、邏輯運(yùn)算類指令的使用方法;掌握 BCD碼、補(bǔ)碼數(shù)制表示方法;掌握運(yùn)算程序及循環(huán)程序的編寫和調(diào)試方法。2. 預(yù)習(xí)要求理解 8051 單片機(jī)的算術(shù)運(yùn)算指令;理解補(bǔ)碼表示數(shù)值的方法;理解壓縮、非壓縮BCD 碼表示數(shù)值的方法;如何實(shí)現(xiàn)多位數(shù)的BCD 碼
22、加、乘、除運(yùn)算;如何實(shí)現(xiàn)多位數(shù)的BCD 碼減法運(yùn)算;預(yù)習(xí)本實(shí)驗(yàn)內(nèi)容,以及相關(guān)課程內(nèi)容。3. 實(shí)驗(yàn)設(shè)備計(jì)算機(jī)1 臺(tái)。4. 基礎(chǔ)型實(shí)驗(yàn)內(nèi)容以下程序完成單字節(jié)的 BCD 碼加法功能, 完成空白處程序填寫,行程序,觀察寄存器及相應(yīng)地址內(nèi)存單元內(nèi)容的變化。并在Keil環(huán)境運(yùn)RESULT EQU30HORG0000HMOVA,#99HMOVB,#99HADDA , BDA A; BCD碼相加并得到BCD碼結(jié)果MOVRESULT,AMOVA,#00HADDC A,#00HMOVRESULT+1, A; 高位處理SJMP $END下列程序完成多字節(jié)BCD 碼加法運(yùn)算。內(nèi)部RAM30H 開始的 4 字節(jié)長的BC
23、D碼和外部XRAM 1000H開始的 4 字節(jié)長的BCD 碼相加,結(jié)果放在外部XRAM 1100H開始的單元中 (從低字節(jié)到高字節(jié)) ,在 Keil 環(huán)境運(yùn)行程序,觀察寄存器及相應(yīng)地址內(nèi)存單元內(nèi)容的變化。ORG 0000HCLR CMOV R5,#04HMOV R0,#30HMOV R1,#10HMOV R2,#00HMOV R3,#11HMOV R4,#00HL1:MOV DPH,R1MOV DPL,R2MOVX A,DPTRADDC A, R0DAAMOV DPH,R3MOV DPL,R4MOVX DPTR,AINC R2INC R4; 十進(jìn)制調(diào)整INC R0L2:DJNZ R5, L1J
24、NCL3MOVDPTR,#1104H; 有進(jìn)位則結(jié)果的第五個(gè)字節(jié)置1MOVA,#01HMOVX DPTR,AL3:NOPSJMP $END5. 設(shè)計(jì)型實(shí)驗(yàn)內(nèi)容設(shè)計(jì)程序,實(shí)現(xiàn)任意字節(jié)(設(shè)字節(jié)數(shù)為n)壓縮 BCD 碼的相加。加數(shù)分別存放在外部 RAM 1000H 和內(nèi)部 RAM 30H 開始的單元中, 結(jié)果保存到內(nèi)部RAM 40H 開始的單元中。因?yàn)槭侨我庾止?jié),所以相加的結(jié)果不能直接放在內(nèi)部40H 開始的單元中,因?yàn)樽止?jié)數(shù)可能超過 10H個(gè);所以需要設(shè)置臨時(shí)存放和的地址ORG 0000H;CLRC;MOVR5,#04H; 自定義需要參加運(yùn)算的字節(jié)數(shù)MOVA,R5;MOVR6,A;保存參加運(yùn)算的字節(jié)
25、數(shù)MOVR0,#30H; 存放加數(shù)的片內(nèi)RAM 起始地址 30HMOVR1,#10H;MOVR2,#00H; 存放加數(shù)的片外RAM 起始地址 1000HMOVR3,#21H;MOVR4,#00H; 臨時(shí)保存和的片外 RAM 起始地址 2100HL1:MOVDPH,R1;MOVDPL,R2;MOVX A,DPTR;ADDC A,R0;DAA; 十進(jìn)制調(diào)整MOVDPH,R3;MOVDPL,R4;MOVX DPTR,A;INCR2;INCR4;INCR0;L2:DJNZR5,L1;JNCL3;MOVDPH,R3;MOVDPL,R4; 有進(jìn)位則結(jié)果的下一個(gè)字節(jié)置1MOVA,#01H;MOVXDPTR,
26、A;L3:NOP;MOV DPH,R3;MOV DPL,R4;MOVX A,DPTR;CJNE A,#01H,L4 ;判斷是否做加法后有進(jìn)位,有則使 R6 加 1 INC R6;MOVR0,#40H; 本語句塊實(shí)現(xiàn)將臨時(shí)存放單元中的和復(fù)制到內(nèi)部RAM 中以 40H 起始的存儲(chǔ)單元中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 R2;R1變成00H之后,R2加1L5:DJNZ R6,L4;SJMPEND$;設(shè)計(jì)程序,實(shí)現(xiàn)多字節(jié)(設(shè)字節(jié)數(shù)
27、為n)十六進(jìn)制無符號(hào)數(shù)的減法。被減數(shù)和減數(shù)分別存放在外部 RAM 1000H和內(nèi)部 RAM 30H 開始的單元中,結(jié)果保存到內(nèi)部RAM40H 開始的單元中。ORG 0000H;MOV R4,#00H; 被減數(shù)低位地址MOV R2,#10H; 被減數(shù)高位地址MOV R1,#30H; 減數(shù)地址MOV R3,#4H; 設(shè)置字節(jié)數(shù)MOV R0,#40H; 設(shè)置存放地址LOOP: MOV DPL,R4; 本循環(huán)實(shí)現(xiàn)字節(jié)的逐個(gè)相減的過程MOV DPH,R2;MOVX A,DPTR;SUBB A,R1;MOV R0,A;INC R0;INC R4;INC R1;CJNE R4,#0H,L; 如果R4增加到0
28、H ,則高位加1INC R2;L:DJNZ R3,LOOP;SJMP $;END度在在內(nèi)部 RAM 30H單元開始,存放著一串帶符號(hào)數(shù)據(jù)(負(fù)數(shù)用補(bǔ)碼表示),數(shù)據(jù)長10H 中(設(shè)數(shù)據(jù)長度小于等于16);編程分別求其中正數(shù)之和與負(fù)數(shù)之和,并存入內(nèi)部RAM的2CH與2EH開始的2 個(gè)單元中,記錄程序運(yùn)行結(jié)果。例如:內(nèi)部RAM的30H-35H存放 -1, 5, -2, 19, -8,對(duì)應(yīng)的補(bǔ)碼分別為0FFH ,5H , 0FEH , 13H , 0F8H ,則正、負(fù)數(shù)的和分別為24、 -11,對(duì)應(yīng)的補(bǔ)碼分別為18H ,0F5H 。ORG 0000H;MOV R2,#10H;MOV R0,#30H;MO
29、V R3,#00H;MOV R4,#00H;MAIN:MOV A,R0;JB ACC.7,SUBBB;SJMP ADDDD;L:INC R0;DJNZ R2,MAIN;SJMP EXIT;SUBBB:CLR ACC.7;負(fù)數(shù)做正數(shù)處理MOV 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,A;R6中存放高8 位MOV A,R7;NEXT1:MOV R3,A;R3 中存放低8 位CLR CY;SJMPL;ADDDD:ADD A,R4;JNB CY ,NEXT2;INC R1;R1 中存放高8 位NEXT2:MOV R4,A;R4 中存放低8 位CLR CY;SJMPL;EXIT: MOV 2CH,R1;MOV 2DH,R4;MOV 2EH,R6;MOV 2FH,R3;SJMP $;END6. 綜合實(shí)驗(yàn)設(shè)計(jì)程序, 實(shí)現(xiàn)十六進(jìn)制無符號(hào)數(shù)雙字節(jié)乘單字節(jié),始的三個(gè)單元中,使用單步、斷點(diǎn)方式調(diào)試程序,查看結(jié)果。(調(diào)試數(shù)據(jù):35A6H*56H )結(jié)果存于內(nèi)部RAM的40H開ORG 0000H;MULMST:MOV R0,#40HMOV A,R3;MOV B,R5;MUL ABMOV R0,AMOV R7,BMOV
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 內(nèi)蒙古鄂爾多斯市東勝區(qū)九年級(jí)化學(xué)下冊(cè) 8.4 常見的鹽(2)教學(xué)實(shí)錄 (新版)粵教版
- 小學(xué)信息技術(shù)第一冊(cè) 我的圖冊(cè)-用看圖軟件創(chuàng)建圖冊(cè)教學(xué)實(shí)錄 河大版
- 22《 為中華之崛起而讀書》(第二課時(shí))(教學(xué)設(shè)計(jì))2024-2025學(xué)年統(tǒng)編版語文四年級(jí)上冊(cè)
- ma信號(hào)轉(zhuǎn)dc信號(hào)并電阻
- 2025年阿片類中毒解毒藥項(xiàng)目發(fā)展計(jì)劃
- 電腦的整流電路
- 2025年燒傷整形科手術(shù)器械項(xiàng)目發(fā)展計(jì)劃
- 2023六年級(jí)數(shù)學(xué)上冊(cè) 四 解決問題的策略第3課時(shí) 解決問題的策略(練習(xí)課)教學(xué)實(shí)錄 蘇教版
- 2024年秋九年級(jí)歷史上冊(cè) 第4課《古代羅馬》教學(xué)實(shí)錄 中華書局版
- 制定數(shù)字營銷轉(zhuǎn)型策略計(jì)劃
- 12K101-1 軸流通風(fēng)機(jī)安裝
- 新《鐵路勞動(dòng)安全》考試題庫500題(含答案)
- 世界現(xiàn)代設(shè)計(jì)簡史
- GA/T 1275-2015石油儲(chǔ)罐火災(zāi)撲救行動(dòng)指南
- 2023年杭州市余杭區(qū)事業(yè)單位招聘筆試題庫及答案解析
- 醫(yī)患溝通技巧講義課件
- 保潔員培訓(xùn)考核試卷(答案)
- 《企業(yè)招聘研究文獻(xiàn)綜述(3500字)》
- 高血壓病例分析-課件
- 縣級(jí)危重孕產(chǎn)婦救治中心評(píng)審標(biāo)準(zhǔn)(產(chǎn)科)
- 2022特納綜合征中國專家共識(shí)(全文)
評(píng)論
0/150
提交評(píng)論