2023年單片機(jī)編程題題庫答案_第1頁
2023年單片機(jī)編程題題庫答案_第2頁
2023年單片機(jī)編程題題庫答案_第3頁
2023年單片機(jī)編程題題庫答案_第4頁
2023年單片機(jī)編程題題庫答案_第5頁
已閱讀5頁,還剩94頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

《單片機(jī)原理及應(yīng)用》編程題題庫參照答案六

1、內(nèi)部RAM30H和31H單元中寄存著2個(gè)0部的ASCII碼(高位字節(jié)在前),請將其轉(zhuǎn)換為壓縮

BCD碼(高位在前)并存入外部RAM2300H單元中。

解:ORGOH

LJMPSTART

ORG3011

START:MOVA,30H

ANLA,8OFH

SWAPA

MOVRO,A

MOVA,31H

ANLA,#OFH

ORLA,RO

MOVDPTR,#230011

MOVX@DPTR,A

END

評分措施:不規(guī)定寫出程序的注釋。程序設(shè)計(jì)思緒對的可得5分,指令完全寫對可得分。若僅

寫對少許指令,可酌情給1-3分:若僅有少許指令寫錯(cuò),可酌情扣1-3分。

2、將寄存在內(nèi)部RAM30H-35H單元的壓縮型BCD碼轉(zhuǎn)換成對應(yīng)的ASCII碼,依次寄存到外部RAM

2100H開始的單元區(qū)中。

ORGOH

LJMPSTART

ORG3OH

START:MOVRO,#3011

MOVR2,#06H

MOVDPTR,#2100H

LOOP:MOVA,?RO

SWAPA

ANLA,#OFH

ORLA,#30H

MOVX@DPTR,A

INCDPTR

MOVA,@R0

ANLA,#oni

ORLA,#30H

MOVX領(lǐng)PTR,A

INCDPTR

INCRO

DJNZR2,LOOP

SJMP$

END

評分措施:不規(guī)定寫出程序的注釋。程序設(shè)計(jì)思緒對口勺可得5分,指令完全寫對可得1。分。若僅

寫對少許指令,可酌情給卜3分;若僅有少許指令寫錯(cuò),可酌情扣1-3分。

3、內(nèi)部RAM20H和30H開始H勺單元分別寄存著16個(gè)16進(jìn)制數(shù),請將對應(yīng)單元H勺內(nèi)容相加(不考

慮溢出),并將和存入外部RAM2023H開始的單元中。

解:0RG0

LJMPSTART

0RG30H

START:MOVRO,#20H

MOVRI,#30H

MOVDPTR,#202311

MOVR2,#08H;每個(gè)單元寄存2個(gè)16進(jìn)制數(shù),故16個(gè)16進(jìn)制數(shù)占用8個(gè)單

LOOP:MOVA,@R()

ADDA,@R1

MOVX?DPTR,A

INCR0

INCRI

INCDPTR

DJNZR2,LOOP

SJMP$

END

評分措施:不規(guī)定寫出程序的注釋。程序設(shè)計(jì)思緒對的可得5分,指令完全寫對可得1。分。若僅

寫對少許指令,可酌情給1-3分;若僅有少許指令寫錯(cuò),可酌情扣1-3分。

4、請編寫多字節(jié)無符號數(shù)減法程序。被減數(shù)寄存在內(nèi)部RAM20H開始的18個(gè)單元中,減數(shù)寄存在

內(nèi)部RAM30H開始的8個(gè)單元,請將差寄存到外部RAM2023H開始的8個(gè)單元中,借位寄存到0V標(biāo)志

中。注意:所有數(shù)據(jù)均按照從低字節(jié)到高字節(jié)的次序寄存。

ORG0

LJMPSTART

ORG30H

START:MOVRO,#20H

MOVRL#30H

MOVDPTR,#2023H

MOVR2,#08H

CLRC

LOOP:MOVA,@R0

SUBBA,@R1

MOVX?DPTR,A

INCRO

INCRI

INCDPTR

DJNZR2,LOOP

MOVOV,C

SJMP$

END

評分措施:不規(guī)定寫出程序的注釋。程序設(shè)計(jì)思緒對II勺可得5分,指令完全寫對可得19分。若僅

寫對少許指令,可酌情給1-3分;若僅有少許指令寫錯(cuò),可酌情扣1-3分。

5、內(nèi)部RAM40H和41H單元中寄存著2個(gè)0-9的ASCII碼(高位字節(jié)在前),請將其轉(zhuǎn)換為壓縮

BCD碼(席位在前)并存入外部RAM2023H單元中。

解:ORGOH

LJMPSTART

ORG30H

START:MOVA,40H

ANLA,#OFH

SWAPA

MOVRO,A

MOVA.41H

ANLA,#OFH

ORLA,RO

MOVDPTR,#2O23H

MOVX@DPTR,A

END

評分措施:不規(guī)定寫出程序的注釋。程序設(shè)計(jì)思緒對的可得5分,指令完全寫對可得13分。若僅

寫對少許指令,可酌情給1-3分;若僅有少許指令寫錯(cuò),可酌情扣1-3分。

6、將寄存在內(nèi)部RAM20H-2FH單元日勺壓縮型BCD碼(高位在前)轉(zhuǎn)換成對應(yīng)的ASCII碼,依次寄存

到外部RAM1000H開始的單元區(qū)中。

ORG011

IJMPSTART

ORG30H

START:MOVRO,#20H

MOVR2,#10H

MOVDPTR,#1000H

LOOP:MOVA,@R0

SWAPA

ANLA,#OFH

ORLA,#3011(或ADDA,#3011)

MOVX@DPTR,A

INCDPTR

MOVA,@RO

ANLA,#OFH

ORLA,#3011(或ADDA,#3011)

MOVX@DPTR,A

INCDPTR

INCRO

DJNZR2,LOOP

SJMP$

END

評分措施:不規(guī)定寫出程序的注釋。程序設(shè)計(jì)思緒對日勺可得5分,指令完全寫對可得19分。若僅

寫對少許指令,可酌情給1-3分;若僅有少許指令寫錯(cuò),可酌情扣1-3分。

7、內(nèi)部RAM30H和38H尸始口勺單元分別寄存著8個(gè)壓縮BCD碼,請將對應(yīng)單元口勺內(nèi)容相加(不考

慮溢出),并將和存入外部RAM1000H開始的單元中。

解:ORG0

LJMPSTART

ORG30H

START:MOVRO,#30H

MOVRI,#38H

MOVDPTR,#IOOOH

MOVR2,#08

LOOP:MOVA,@RO

ADDA,@R1

DAA

MOVX@DPTR,A

INCRO

INCRI

INCDPTR

DJNZR2,LOOP

SJMP$

END

評分措施:不規(guī)定寫出程序的注釋。程序設(shè)計(jì)思緒對口勺可得5分,指令完全寫對可得19分。若僅

寫對少許指令,可酌情給1-3分;若僅有少許指令寫錯(cuò),可酌情扣卜3分。

8、請編寫多字節(jié)無符號數(shù)加法程序。被加數(shù)寄存在內(nèi)部RAM20H開始的8個(gè)單元中,加數(shù)寄存在

內(nèi)部RAM30H開始的8個(gè)單元,請將和寄存到外部RAM2023H開始的8個(gè)單元中,進(jìn)位寄存到F0標(biāo)志

中。注意:所有數(shù)據(jù)均按照從低字節(jié)到高字節(jié)的次序寄存。

ORG0

LJMPSTART

ORG3011

START:MOVRO,#2011

MOVRI,#30H

MOVDPTR,#2023H

MOVR2,#08H

CLRC

LOOP:MOVA,@R0

ADDCA,@R1

MOVX@DPTR,A

INCRO

INCRI

INCDPTR

DJNZR2,LOOP

MOVFO,C

SJMP$

END

評分措施:不規(guī)定寫出程序的注釋.程序設(shè)計(jì)思緒對口勺可得5分,指令完全寫對可得19分。若僅

寫對少許指令,可酌情給1-3分;若僅有少許指令寫錯(cuò),可酌情扣1-3分。

9、兩個(gè)8字節(jié)壓縮BCD碼分別寄存在內(nèi)部RAM30H和40H開始時(shí)持續(xù)單元中(低位字節(jié)在前),請

將兩者求和(不考慮溢出狀況),并將和存入外部RAM1000H開始的單元中。

解:ORG0

MOVR0,#3011

MOVRI,#40H

MOVDPTR,#1OOOH

MOVR2,#8

CLRC

LOOP:MOVA,@R0

ADDCA,@RI

DAA

MOVX@DPTR,A

INCRO

INCRI

INCDPTR

DJNZR2,LOOP

SJMP$

END

10、將寄存在內(nèi)部RAM2CH-2FH單元日勺十六進(jìn)制數(shù)轉(zhuǎn)換成ASCII碼,依次寄存到外部RAM2023H

開始的單元中。

解:MOVKO,#2OH

MOVR2,#16

MOVDPTR,#2023H

MOVR3,DPH

MOVR4,DPL

LOOP:MOVA,@RO

ANLA,#OFH

MOVDPTR,#TAB

MOVCA,0A+DPTR

MOVDPH,R3

MOVDPL,R4

MOVX0DPTR,A

INCDPTR

MOVR3,DPH

MOVR4,DPL

MOVA,0RO

SWAPA

ANLA,#OFH

MOVDPTR,#TAB

MOVCA,QA+DPTR

MOVDPH,R3

MOVDPL,R4

MOVX@DPTR,A

INCDPTR

MOVR3,DPH

MOVR4,DPL

INCRO

DJNZR2,LOOP

SJMP

TAB:I)B<ABCDEF,

ENI)

11、內(nèi)部RAM30H和外部RAM2200H開始的單元分別寄存著兩個(gè)8字節(jié)十六進(jìn)制數(shù)(低位字節(jié)寄

存在前),請將兩者相加(不考慮溢出狀況),并將和存入內(nèi)部RAM40H開始的單元中。

解:ORG0

MOVRO,#30H

MOVRI,#40H

MOVDPTR,#220011

MOVR2,#8

CLRC

LOOP:MOVXA,?DPTR

ADDCA,@R0

MOV@R1,A

INCRO

INCRI

INCDPTR

DJNZR2,LOOP

SJMP$

END

12、請編寫多字節(jié)無符號數(shù)減法程序。被減數(shù)寄存在內(nèi)部RAM30H開始H勺8個(gè)單元中,減數(shù)寄存在

內(nèi)部RAM38H開始H勺8個(gè)單元,請將差寄存到外部RAM1000H開始的8個(gè)單元中,借位寄存到F0標(biāo)志

中。注意:所有數(shù)據(jù)均按照從低字節(jié)到高字節(jié)的次序寄存。

解:ORG0

LJMPSTART

ORG30H

START:MOVRO,#30H

MOVRI,#38H

MOVDPTR,#100011

MOVR2,#8

CLRC

LOOP:MOVA,@R0

SUBBA,@R1

MOVX@DPTR,A

INCRO

INCRI

INCDPTR

DJNZR2,LOOP

MOVC,FO

SJMP3

END

13、請編寫多字節(jié)無符號數(shù)減法程序。被減數(shù)寄存在內(nèi)部RAM20H開始的16個(gè)單元中,減數(shù)寄存

在內(nèi)部RAM30H開始的16個(gè)單元,請將差寄存到外部RAM2023H開始的16個(gè)單元中,借位寄存到0V

標(biāo)志中。注意:所有數(shù)據(jù)均按照從低字節(jié)到高字節(jié)的次序寄存

解:ADDR1EQU20H

ADDR2EQU30H

LENEQU16

ADDR3EQU2023H

ORG0

LJMPSTART

ORG30H

START:MOVRO,#ADI)R1

MOVRI,#ADDR2

MOVDPTR,SADDR3

MOVR2,升LEN

CLRC

LOOP:MOVA,@R0

SUBBA,@R1

MOVX@DPTR,A

INCRO

INCRI

INCDPTR

DJNZR2,LOOP

MOVov,c

SJMP$

END

14、將寄存在內(nèi)部RAM20H-3FH單元H勺壓縮BCD碼轉(zhuǎn)換成ASCII碼,依次寄存到外部RAM2300H

開始的單元中。(注:每個(gè)單元均先轉(zhuǎn)換高四位)

解:LEMEQU20H

ADDRIEQU2011

ADDR2EQU2300H

ORG0

LJMPSTART

ORG30H

START:MOVRO,#ADDR1

MOVDPTR,#ADDR2

MOVR2,#LEN

LOOP:MOVA,@R0

ANLA,ftOFOH

SWAPA

ORLA,#3011(或ADI)A,#3011)

MOVX@DPTR,A

INCDPTK

MOVA,@R0

ANLA,#OFH

ORLA,#30H(或ADDA,#30H)

MOVX@DPTR,A

INCDPTR

INCRO

DJNZR2,LOOP

SJMP$

ENI)

評分措施:程序設(shè)計(jì)思緒對時(shí)可得5分,指令完全寫對可得10分。不規(guī)定使用偽指令。若僅寫對少

許指令,可酌情給1-3分;若僅有少許指令寫錯(cuò),可酌情扣1-3分。

15、將寄存在內(nèi)部RAM3CH-35H單元的十六進(jìn)制數(shù)轉(zhuǎn)換成對應(yīng)H勺ASCII碼,依次寄存到外部RAM

UOOH開始的單元區(qū)中。(注:每個(gè)字節(jié)轉(zhuǎn)換時(shí)先轉(zhuǎn)換高四位)

解:ORG0

MOVRO,#30H

MOVDPTR,#110011

MOVR2,#6

LOOP:MOVA,eRO;取需要轉(zhuǎn)換H勺數(shù)

ANLA,#OFOH;屏蔽低4位

SWAPA

PUSHDPH

PUSHDPL;保護(hù)目H勺地址

MOVDPTR,#TAB

MOVCA,@A+DPTR;查表得ASCII碼

POPDPL

POPDPH;恢復(fù)目的地址

MOVX@DPTR,A;存轉(zhuǎn)換后口勺ASCII碼

INCDPTK;修改日的地址指針

MOVA,@R0;取需要轉(zhuǎn)換的數(shù)

ANLA,#OFH;屏蔽高4位

PUSHDPH

PUSHDPL;保護(hù)目的地址

MOVDPTR,#TAB

MOVCA,gA+DPTR;查表得表CH碼

POPDPL

POPDPI!;恢復(fù)目的地址

MOVX@DPTR,A

INCDPTR;修改目H勺地址指針

INCRO;修改源地址指針

DJNZR2,LOOP;未轉(zhuǎn)換完則繼續(xù)

SJMP$

TAB:DB'ABCDEF'

END

評分措施:程序設(shè)計(jì)思緒對的可得5分,指令完全寫對可得10分。若僅寫對少許指令,可酌情給

1-3分;若僅有少許指令寫錯(cuò),可酌情扣13分。

16、內(nèi)部RAM30H開始的單元中寄存著16個(gè)0-9的ASCH碼(高位字節(jié)在前),請將其轉(zhuǎn)換為壓縮

BCD碼(而位在前)并存入外部RAM1000H開始II勺單元中。

解:ORG0

MOVRO,#30H

MOVDPTR,#100011

MOVR2,#8;16個(gè)ASCII碼轉(zhuǎn)換為8個(gè)壓縮BCD碼

LOOP:MOVA,@R0

ANLA,#OFH;屏蔽高4位得到BCD碼

SWAPA

MOVRI,A

INCRO;指向下一種ASCII碼

MOVA,@R0

ANLA,#OFH;屏蔽高4位得到BCD碼

ORLA,RI;合成壓縮BCD碼

MOVX@DPTR,A;存壓縮BCD碼

INCDPTR

INCRO

DJNZR2,LOOP

SJMP$

END

設(shè)有兩個(gè)長度為16字節(jié)口勺數(shù)組,分別寄存在外部RAM0200H和0300H為首址的存儲區(qū)域中,

試編寫程序求其對應(yīng)項(xiàng)之和(不考慮溢出的狀況),成果寄存在以0400H為首址H勺外部RAM中。

解:參照程序清單如下:

ORG0

MOVR2,口6;數(shù)組長度為16個(gè)字節(jié)

MOVR3,W2H;數(shù)組1的首地址高8位

MOVR4,#0311;數(shù)組2的首地址高8位

MOVR5,#0411;和數(shù)組的首地址高8位

MOVDPL,#0;數(shù)據(jù)指針低8位清零

LOOP:MOVDPH,R3

MOVXA,@DPTR;取被加數(shù)

MOVRI,A;存被加數(shù)

MOVDPH,R4

MOVXA,@DPTR;取加數(shù)

ADDA,RI;求和

MOVDPH,R5

MOVX@DPTR,A;存和

INCDPL;指向下一字節(jié)

DJNZR2,LOOP;未加完則循環(huán)

END

評分措施:程序設(shè)計(jì)思緒對內(nèi)可得5分,指令完全寫對可得10分。若僅寫對少許指令,可酌情給

1-3分;若僅有少許指令寫錯(cuò),可酌情扣1-3分。

18、編程求內(nèi)部RAM中40H?4FH共16個(gè)單元中的內(nèi)容的和(成果為2字節(jié)),并將和放入50H和

51H單元中(高8位在50H)。

解:參照程序清單如下:

ORG0

LJMPSTART

ORG3011

START:MOVRO,#40H;數(shù)據(jù)區(qū)首地址送R()

MOVR2,#16;單元數(shù)送R2

MOVR3,#0;和的高8位清零

CLRA;和時(shí)低8位清零

LOOP:CLRC

ADDA,@R0;求和

JNCNEXT;沒有進(jìn)位則轉(zhuǎn)移

INCR3;和的高8位存儲單元內(nèi)容加1

NEXT:INCRO;指向下一種單元

DJNZR2,LOOP;沒加完則循環(huán),和在口3和八中

MOV51H,A;存低8位成果

MOV50H,R3;存高8位成果

SJMP$

END

19、有一種長度為16字節(jié)的ASCII碼字符串寄存在外部RAM1000H為首址的存儲區(qū)域中,字符串

中的每一種字符均不相似,試編寫程序查找字符串中與否存在ASCII碼“9"。假如在字符串中存在ASCII

碼“9”,則將其存儲單元的地址寄存到內(nèi)部RAM30H和31H單元中(高8位地址在30H單元中),同步

將0V標(biāo)志位清零。否則,將30H和31H單元的內(nèi)容清零,并將OV標(biāo)志位置“1”。

解:ORG0

MOVSP,#6(川

MOVDPTR,#1()OOH

MOVR2,#16

LOOP:MOVXA,@DPTR

CJNEA,#39H,EXIT

MOV30H,DPH

MOV31H,DPL

CLROV

SJMP$

EXIT:INCDPTR

DJNZR2,LOOP

MOV30H,#0

MOV31H,#0

SETBOV

SJMP

END

20、有兩個(gè)8字節(jié)的16進(jìn)制數(shù)a和b,它們分別寄存在內(nèi)部RAM中30H?37H和40H?47H日勺單元中

〔高位字節(jié)在前)。請編程求a-b,并將差存入30H開始H勺內(nèi)部RAM單元中(高位字節(jié)在前),若差不大

于零則將F0標(biāo)志位置“1”,否則清零。

解:設(shè)計(jì)思緒:從16進(jìn)制數(shù)的最低位字節(jié)(37H和47H)開始對應(yīng)字節(jié)帶借位相減,然后修改地

址指針在對次低位字節(jié)進(jìn)行相減,一共循環(huán)8次完畢兩個(gè)8字節(jié)16進(jìn)制數(shù)H勺相減。最終將Cy標(biāo)志的內(nèi)

容傳送給F0標(biāo)志位即可。

0RG0

MOVRO,#37H

MOVRI,#47H

MOVR2,#8

CLRC

LOOP:MOVA,@R0

SUBBA,@R1

MOV@R0,A

DECRO

DECRI

DJNZR2,LOOP

MOVF0,C

SJMP

END

21、若外部RAM的(3000H)=X,(3001H)=Y,編程實(shí)現(xiàn)Z=X*X+2Y,并將成果存到片內(nèi)RAMFJ勺4011

單元(設(shè)ZV256)?

解:XEQU3000H

YEQU3001H

ZEQU40H

ORG0

MOVDPTR,#X;變量X的地址送DPTR

MOVXA,@DPTR;取變量X

MOVB.A;變量X的值送給B寄存器

MULAB;求*X,根據(jù)題意知積為1字節(jié)(在A中)

MOVRO,A;X*XH勺成果存入R0中

INCDPTR;指向變量Y

MOVXA,@DPTR;取變量Y

MOVB,#2

MULAB;求2*Y,根據(jù)題意知積為1字節(jié)(在A中)

ADDA,RO;求X*X+2*Y

MOVZ,A;和存入40H單元

SJMP$;停機(jī)

END

評分措施:不規(guī)定寫出程序的I注釋和使用偽指令。程序設(shè)計(jì)思緒對的可得5分,指令完全寫對可得

1D分。若僅寫對少許指令,可酌情給1-3分;若僅有少許指令寫錯(cuò),可酌情扣1-3分。

22、設(shè)外部RAM2023H單元為數(shù)據(jù)塊的起始地址,數(shù)據(jù)塊長度為1(),試編程求數(shù)據(jù)塊中的最小值,

存入內(nèi)部RAM30H單元。

解:設(shè)計(jì)思緒:將數(shù)據(jù)塊的第1個(gè)數(shù)據(jù)放入成果單元,然后依次與剩余的9個(gè)數(shù)據(jù)進(jìn)行比較。假如

新的數(shù)據(jù)比成果單元中的數(shù)據(jù)還小則將該數(shù)據(jù)存入成果單元,9次比較完畢則成果單元中日勺數(shù)據(jù)就是最

小值。

ORG0

MOVDPTR,#2023H

MOVXA,@DPTR;取數(shù)據(jù)塊的第一種數(shù)

MOV30H,A;存入成果單元

MOVR2,#9;共比較9次

INCDPTR;指向第2個(gè)數(shù)

LOOP:CLRC

MOVXA,@DPTR

SUBBA,30H

JNCLP;沒有借位則闡明成果單元H勺數(shù)小,不用更換最小值

MOVXA,@DPTR

MOV30H,A;更換最小值

LP:INCDPTR;指向下一種數(shù)

DJNZR2,LOOP;沒有比較完則繼續(xù)循環(huán)

SJMP$;停機(jī)

END

評分措施:不規(guī)定寫出程序的注釋。程序設(shè)計(jì)思緒對時(shí)可得5分,指令完全寫對可得13分。若僅

寫對少許指令,可酌情給『3分;若僅有少許指令寫錯(cuò),可酌情扣1-3分。

23、若外部RAM日勺(1000H;=X,(1001H)=Y,請編程實(shí)現(xiàn)Z=2X+Y*Y+5(設(shè)Z<65536),并將成果保

留到片內(nèi)RAM日勺30H和31H單元(31H單元寄存成果的高8位,30H單元寄存成果的低8位到

解:XEQU1000H

ZHEQU31H

ZLEQUSOH

ORG0

MOVzH,#0;成果單元清零

MOVZL,no

MOVDPTR,?1000H

MOVXA,@DPTR;取乂的值

MOVB,#2

MULAB;計(jì)算2乂

ADDA,ZL

MOV2L,A;存成果低8位

MOVA,B;取乘積高8位

ADDA,ZH

MOV2H,A;存成果高8位

INCDPTR;指向Y

MOVXA,?DPTR;取Y

MOVB,A

MULAB;計(jì)算Y*Y

ADDA,ZL;計(jì)算成果低8位

MOVzL,A

MOVA,B;取乘積U勺高8位

ADDCA,ZH;計(jì)算成果高8位,注意必須帶進(jìn)位加

MOV2H,A

MOVA,ZL

ADDA,#5;計(jì)算成果加5

MOV2L,A

MOV2H,A;存成果低8位

ADDCA,#0;將低8位進(jìn)位加到成果高8位,注意必須帶進(jìn)位加

MOVZH,A;存成果高8位

END

評分措施:不規(guī)定寫出程序的注釋和使用偽指令。程序設(shè)計(jì)思緒對的可得5分,指令完全寫對可得

1。分。若僅寫對少許指令,可酌情給1-3分:若僅有少許指令寫錯(cuò),可酌情扣1-3分。

24、設(shè)外部RAM1000H單元為數(shù)據(jù)塊R勺起始地址,數(shù)據(jù)塊長度為6()字節(jié),試編程求數(shù)據(jù)塊中所有

數(shù)據(jù)附和,并將其存入內(nèi)部RAM30H和31H單元(30H單元寄存和H勺低8位,31H單元寄存和的高8位據(jù)

解:

ADDREQU100HH;數(shù)據(jù)塊首地址

LENEQU60;數(shù)據(jù)塊長度

ZHEQL-31H;和日勺高8位地址

ZLEQU30H;和的低8位地址

ORG0

MOVDPTR,#ADDR;數(shù)據(jù)塊首地址送DPTR

MOVR7,#LEN;數(shù)據(jù)塊長度送R7

MOVZH,#0;成果單元清零

MOVZL,#O

LOOP:MOVXA,@DPTR;取數(shù)據(jù)

ADDA,ZL;將數(shù)據(jù)加到成果單元U勺低8位

MOVZL,A;存成果低8位

MOVA,ZH;取成果高8位

ADDCA,#0;將低8位計(jì)算的進(jìn)位加到高8位中

MOVZU,A;存高8位

INCDPTR;修改地址指針,指向下一種數(shù)據(jù)

DJNZR7,L00P;沒有計(jì)算完則繼續(xù)

SJMP$

END

評分措施:不規(guī)定寫出程序口勺注釋和使用偽指令。程序設(shè)計(jì)思緒時(shí)的可得5分,指令完全寫對可得

1。分。若僅寫對少許指令,可防情給1-3分;若僅有少許指令寫錯(cuò),可酌情扣1-3分。

25、若外部RAM時(shí)(1000H)=X,內(nèi)部RAM(30H)=Y,請編程實(shí)現(xiàn)Z=X*X+3Y+18(設(shè)Z<65536),并

將成果保留到片內(nèi)RAM的40H和41H單元(41H單元寄存成果的高8位,40H單元寄存成果的低8位)。

解:XEQU1000H

YEQU30H

ZHEQU41H

ZLEQU40H

0RG0

MOVZH,#O;成果單元清零

MOVZL,#0

MOVDPTR,#1000H

MOVXA,@DPTR;取乂的值

MOVB,A

MULAB;計(jì)算x*x

ADDA,ZL

MOVZL,A;存成果低8位

MOVA,B;取乘積高8位

ADDA,ZH

MOVZH,A;存成果高8位

MOVXA,Y;取丫

MOVB,#3

MULAB;計(jì)算3*Y

ADDA,ZL;計(jì)算成果低8位

MOVZL,A

MOVA,B;取乘積的高8位

ADDCA,ZH;計(jì)算成果高8位,注意必須帶進(jìn)位加

MOVZH,A

MOVA,ZL

ADDA,#18;計(jì)算成果加18

MOVZL,A;存成果低8位

MOVA,ZH;取成果高8位

ADDCA,#0;將低8位進(jìn)位加到成果高8位,注意必須帶進(jìn)位加

MOVZH,A;存成果高8位

END

評分措施:不規(guī)定寫出程序的注釋和使用偽指令。程序設(shè)計(jì)思緒對的可得5分,指令完全寫對可得

1。分。若僅寫對少許指令,可酌情給1-3分:若僅有少許指令寫錯(cuò),可酌情扣1-3分。

26、若外部RAM時(shí)(1000H)=X,請編程實(shí)現(xiàn)Y=X?+2X+1(設(shè)Y<65536),并將成果保留到片內(nèi)RAM

的30H和31H單元(3IH單元寄存成果U勺高8位,30H單元寄存成果II勺低8位)。

解:

ORG0

MOV30H,no;成果單元清零

MOV31H,#0

MOVDPTR,t±1000H

MOVA,@DPTR;取乂的值

MOVB,A

MULAB;求乂的立方

MOV30H,A;存低8位

MOVA,B

MOV31H,A;存高8位

MOVXA,?DPTR;取乂的值

MOVB,#2

MOVAB:求2X

ADDA,30H;求低8位和

MOV3011,A;存和的1低8位

MOVA,B;取積的高8位

ADDCA,31H;求高8位和

MOV31H,A;存和的高8位

MOVA,30H

ADDA,#l;加

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論