版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 《單片機原理及應用》編程題題庫參考答案六</p><p> 內(nèi)部RAM 30H和31H單元中存放著2個0-9的ASCII碼(高位字節(jié)在前),請將其轉(zhuǎn)換為壓縮BCD碼(高位在前)并存入外部RAM 2300H單元中。</p><p> 解: ORG 0H</p><p> LJMP START</p><
2、;p> ORG 30H</p><p> START: MOV A,30H</p><p> ANL A,#0FH</p><p><b> SWAP A</b></p><p> MOV R0,A </p><p> MOV A,31H<
3、/p><p> ANL A,#0FH</p><p> ORL A,R0</p><p> MOV DPTR,#2300H </p><p> MOVX @DPTR,A</p><p><b> END</b></p><p> 評分辦法:不要求
4、寫出程序的注釋。程序設(shè)計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。</p><p> 2、將存放在內(nèi)部RAM 30H-35H單元的壓縮型BCD碼轉(zhuǎn)換成相應的ASCII碼,依次存放到外部RAM 2100H開始的單元區(qū)中。</p><p><b> ORG 0H</b></p>
5、<p> LJMP START</p><p><b> ORG 30H</b></p><p> START:MOV R0,#30H</p><p> MOV R2,#06H</p><p> MOV DPTR,#2100H</p><p> LOO
6、P:MOV A,@R0</p><p><b> SWAP A</b></p><p> ANL A,#0FH</p><p> ORL A,#30H</p><p> MOVX @DPTR,A</p><p> INC DPTR</p><p&g
7、t; MOV A,@R0</p><p> ANL A,#0FH</p><p> ORL A,#30H</p><p> MOVX @DPTR,A</p><p> INC DPTR</p><p><b> INC R0</b></p><p
8、> DJNZ R2,LOOP</p><p><b> SJMP $</b></p><p><b> END</b></p><p> 評分辦法:不要求寫出程序的注釋。程序設(shè)計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。</
9、p><p> 3、內(nèi)部RAM 20H和30H開始的單元分別存放著16個16進制數(shù),請將對應單元的內(nèi)容相加(不考慮溢出),并將和存入外部RAM 2000H開始的單元中。</p><p> 解: ORG 0</p><p> LJMP START</p><p><b> ORG 30H</b&g
10、t;</p><p> START: MOV R0,#20H</p><p> MOV R1,#30H</p><p> MOV DPTR,#2000H</p><p> MOV R2,#08H ;每個單元存放2個16進制數(shù),故16個16進制數(shù)占用8個單元</p><p> LOOP: MOV
11、 A,@R0</p><p> ADD A,@R1</p><p> MOVX @DPTR,A</p><p> INC R0</p><p> INC R1</p><p> INC DPTR</p><p> DJNZ R2,LOOP</p
12、><p> SJMP $</p><p><b> END</b></p><p> 評分辦法:不要求寫出程序的注釋。程序設(shè)計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。</p><p> 4、請編寫多字節(jié)無符號數(shù)減法程序。被減數(shù)存放在內(nèi)
13、部RAM 20H開始的8個單元中,減數(shù)存放在內(nèi)部RAM 30H開始的8個單元,請將差存放到外部RAM 2000H開始的8個單元中,借位存放到OV標志中。注意:所有數(shù)據(jù)均按照從低字節(jié)到高字節(jié)的順序存放。</p><p><b> ORG 0</b></p><p> LJMP START</p><p> ORG 30H
14、</p><p> START: MOV R0,#20H</p><p> MOV R1,#30H</p><p> MOV DPTR,#2000H</p><p> MOV R2,#08H</p><p><b> CLR C</b></p>
15、<p> LOOP: MOV A,@R0</p><p> SUBB A,@R1</p><p> MOVX @DPTR,A</p><p><b> INC R0</b></p><p><b> INC R1</b></p><p&
16、gt; INC DPTR</p><p> DJNZ R2,LOOP</p><p><b> MOV OV,C</b></p><p><b> SJMP $</b></p><p><b> END</b></p><p>
17、 評分辦法:不要求寫出程序的注釋。程序設(shè)計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。</p><p> 5、內(nèi)部RAM 40H和41H單元中存放著2個0-9的ASCII碼(高位字節(jié)在前),請將其轉(zhuǎn)換為壓縮BCD碼(高位在前)并存入外部RAM 2000H單元中。</p><p> 解: ORG 0H&
18、lt;/p><p> LJMP START</p><p> ORG 30H</p><p> START: MOV A,40H</p><p> ANL A,#0FH</p><p><b> SWAP A</b></p><p> M
19、OV R0,A </p><p> MOV A,41H</p><p> ANL A,#0FH</p><p> ORL A,R0</p><p> MOV DPTR,#2000H </p><p> MOVX @DPTR,A</p><p><b
20、> END</b></p><p> 評分辦法:不要求寫出程序的注釋。程序設(shè)計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。</p><p> 6、將存放在內(nèi)部RAM 20H-2FH單元的壓縮型BCD碼(高位在前)轉(zhuǎn)換成相應的ASCII碼,依次存放到外部RAM 1000H開始的單元區(qū)中。<
21、/p><p><b> ORG 0H</b></p><p> LJMP START</p><p><b> ORG 30H</b></p><p> START: MOV R0,#20H</p><p> MOV R2,#10H</p>
22、;<p> MOV DPTR,#1000H</p><p> LOOP: MOV A,@R0</p><p><b> SWAP A</b></p><p> ANL A,#0FH</p><p> ORL A,#30H (或 ADD A,#30H)</p>&
23、lt;p> MOVX @DPTR,A</p><p> INC DPTR</p><p> MOV A,@R0</p><p> ANL A,#0FH</p><p> ORL A,#30H (或 ADD A,#30H)</p><p> MOVX @DPTR,A</p&g
24、t;<p> INC DPTR</p><p><b> INC R0</b></p><p> DJNZ R2,LOOP</p><p><b> SJMP $</b></p><p><b> END</b></p>&l
25、t;p> 評分辦法:不要求寫出程序的注釋。程序設(shè)計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。</p><p> 7、內(nèi)部RAM 30H和38H開始的單元分別存放著8個壓縮BCD碼,請將對應單元的內(nèi)容相加(不考慮溢出),并將和存入外部RAM 1000H開始的單元中。</p><p> 解:
26、 ORG 0</p><p> LJMP START</p><p><b> ORG 30H</b></p><p> START: MOV R0,#30H</p><p> MOV R1,#38H</p><p> MOV DPTR,#1000H</p>
27、<p> MOV R2,#08</p><p> LOOP: MOV A,@R0</p><p> ADD A,@R1</p><p><b> DA A</b></p><p> MOVX @DPTR,A</p><p> INC R0<
28、/p><p> INC R1</p><p> INC DPTR</p><p> DJNZ R2,LOOP</p><p> SJMP $</p><p><b> END</b></p><p> 評分辦法:不要求寫出程序的注釋。程
29、序設(shè)計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。</p><p> 8、請編寫多字節(jié)無符號數(shù)加法程序。被加數(shù)存放在內(nèi)部RAM 20H開始的8個單元中,加數(shù)存放在內(nèi)部RAM 30H開始的8個單元,請將和存放到外部RAM 2000H開始的8個單元中,進位存放到F0標志中。注意:所有數(shù)據(jù)均按照從低字節(jié)到高字節(jié)的順序存放。</p>
30、<p><b> ORG 0</b></p><p> LJMP START</p><p> ORG 30H</p><p> START: MOV R0,#20H</p><p> MOV R1,#30H</p><p> MOV D
31、PTR,#2000H</p><p> MOV R2,#08H</p><p><b> CLR C</b></p><p> LOOP: MOV A,@R0</p><p> ADDC A,@R1</p><p> MOVX @DPTR,A</p>
32、<p><b> INC R0</b></p><p><b> INC R1</b></p><p> INC DPTR</p><p> DJNZ R2,LOOP</p><p><b> MOV F0,C</b></p>
33、;<p><b> SJMP $</b></p><p><b> END</b></p><p> 評分辦法:不要求寫出程序的注釋。程序設(shè)計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。</p><p> 9、兩個8字節(jié)壓縮B
34、CD碼分別存放在內(nèi)部RAM 30H和40H開始的連續(xù)單元中(低位字節(jié)在前),請將二者求和(不考慮溢出情況),并將和存入外部RAM 1000H開始的單元中。</p><p> 解: ORG 0</p><p> MOV R0,#30H</p><p> MOV R1,#40H</p><p> MOV
35、 DPTR,#1000H</p><p> MOV R2,#8</p><p><b> CLR C</b></p><p> LOOP: MOV A,@R0</p><p> ADDC A,@R1</p><p><b> DA
36、A</b></p><p> MOVX @DPTR,A</p><p> INC R0</p><p> INC R1</p><p> INC DPTR</p><p> DJNZ R2,LOOP</p><p><b>
37、SJMP $</b></p><p><b> END</b></p><p> 10、將存放在內(nèi)部RAM 20H-2FH單元的十六進制數(shù)轉(zhuǎn)換成ASCII碼,依次存放到外部RAM 2000H開始的單元中。</p><p> 解: MOV R0,#20H</p><p> MOV
38、 R2,#16</p><p> MOV DPTR,#2000H</p><p> MOV R3, DPH</p><p> MOV R4, DPL</p><p> LOOP: MOV A,@R0</p><p> ANL A,#0FH</p><p
39、> MOV DPTR,#TAB</p><p> MOVC A,@A+DPTR</p><p> MOV DPH,R3</p><p> MOV DPL,R4</p><p> MOVX @DPTR,A</p><p> INC DPTR</p><
40、p> MOV R3,DPH</p><p> MOV R4,DPL</p><p> MOV A,@R0</p><p> SWAP A</p><p> ANL A,#0FH</p><p> MOV DPTR,#TAB</p><p
41、> MOVC A,@A+DPTR</p><p> MOV DPH,R3</p><p> MOV DPL,R4</p><p> MOVX @DPTR,A</p><p> INC DPTR</p><p> MOV R3,DPH</p><
42、;p> MOV R4,DPL</p><p> INC R0</p><p> DJNZ R2,LOOP</p><p> SJMP $</p><p> TAB: DB ‘0123456789ABCDEF’</p><p><b> EN
43、D</b></p><p> 11、內(nèi)部RAM 30H和外部RAM 2200H開始的單元分別存放著兩個8字節(jié)十六進制數(shù)(低位字節(jié)存放在前),請將二者相加(不考慮溢出情況),并將和存入內(nèi)部RAM 40H開始的單元中。</p><p> 解: ORG 0</p><p> MOV R0,#30H</p><
44、p> MOV R1,#40H</p><p> MOV DPTR,#2200H</p><p> MOV R2,#8</p><p><b> CLR C</b></p><p> LOOP: MOVX A,@DPTR</p><p> ADDC
45、 A,@R0</p><p> MOV @R1,A</p><p> INC R0</p><p> INC R1</p><p> INC DPTR</p><p> DJNZ R2,LOOP</p><p> SJMP $<
46、;/p><p><b> END</b></p><p> 12、請編寫多字節(jié)無符號數(shù)減法程序。被減數(shù)存放在內(nèi)部RAM 30H開始的8個單元中,減數(shù)存放在內(nèi)部RAM 38H開始的8個單元,請將差存放到外部RAM 1000H開始的8個單元中,借位存放到F0標志中。注意:所有數(shù)據(jù)均按照從低字節(jié)到高字節(jié)的順序存放。</p><p> 解: O
47、RG 0</p><p> LJMP START</p><p> ORG 30H</p><p> START: MOV R0,#30H</p><p> MOV R1,#38H</p><p> MOV DPTR,#1000H</p><p&g
48、t; MOV R2,#8</p><p> CLR C</p><p> LOOP: MOV A,@R0</p><p> SUBB A,@R1</p><p> MOVX @DPTR,A</p><p> INC R0</p><p&
49、gt; INC R1</p><p> INC DPTR</p><p> DJNZ R2,LOOP</p><p> MOV C,F0</p><p> SJMP $</p><p><b> END</b></p><
50、;p> 13、請編寫多字節(jié)無符號數(shù)減法程序。被減數(shù)存放在內(nèi)部RAM 20H開始的16個單元中,減數(shù)存放在內(nèi)部RAM 30H開始的16個單元,請將差存放到外部RAM 2000H開始的16個單元中,借位存放到OV標志中。注意:所有數(shù)據(jù)均按照從低字節(jié)到高字節(jié)的順序存放。</p><p> 解: ADDR1 EQU 20H</p><p> ADDR2
51、 EQU 30H</p><p> LEN EQU 16</p><p> ADDR3 EQU 2000H</p><p><b> ORG 0</b></p><p> LJMP START</p><p> ORG
52、 30H</p><p> START: MOV R0,#ADDR1</p><p> MOV R1,#ADDR2</p><p> MOV DPTR,#ADDR3</p><p> MOV R2,#LEN</p><p><b> CLR C<
53、;/b></p><p> LOOP: MOV A,@R0</p><p> SUBB A,@R1</p><p> MOVX @DPTR,A</p><p> INC R0</p><p> INC R1</p><p> IN
54、C DPTR</p><p> DJNZ R2,LOOP</p><p> MOV OV,C</p><p><b> SJMP $</b></p><p><b> END</b></p><p> 14、將存放在內(nèi)部RAM 20H-
55、3FH單元的壓縮BCD碼轉(zhuǎn)換成ASCII碼,依次存放到外部RAM 2300H開始的單元中。(注:每個單元均先轉(zhuǎn)換高四位)</p><p> 解: LEN EQU 20H</p><p> ADDR1 EQU 20H</p><p> ADDR2 EQU 2300H</p><p><b&g
56、t; ORG 0</b></p><p> LJMP START</p><p> ORG 30H</p><p> START: MOV R0,#ADDR1</p><p> MOV DPTR,#ADDR2</p><p> MOV R2,#LEN</
57、p><p> LOOP: MOV A,@R0</p><p> ANL A,#0F0H</p><p><b> SWAP A</b></p><p> ORL A,#30H (或 ADD A,#30H)</p><p> MOVX @DPTR,A</
58、p><p> INC DPTR</p><p> MOV A,@R0</p><p> ANL A,#0FH</p><p> ORL A,#30H (或 ADD A,#30H)</p><p> MOVX @DPTR,A</p><p> INC
59、DPTR</p><p><b> INC R0</b></p><p> DJNZ R2,LOOP</p><p><b> SJMP $</b></p><p><b> END</b></p><p> 評分辦法:程序設(shè)計思
60、路正確可得5分,指令完全寫對可得10分。不要求使用偽指令。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。</p><p> 15、將存放在內(nèi)部RAM 30H-35H單元的十六進制數(shù)轉(zhuǎn)換成相應的ASCII碼,依次存放到外部RAM 1100H開始的單元區(qū)中。(注:每個字節(jié)轉(zhuǎn)換時先轉(zhuǎn)換高四位)</p><p> 解: ORG 0</p>
61、<p> MOV R0,#30H</p><p> MOV DPTR,#1100H</p><p> MOV R2,#6</p><p> LOOP: MOV A,@R0 ; 取需要轉(zhuǎn)換的數(shù)</p><p> ANL A,#0F0H ; 屏蔽低4位<
62、;/p><p><b> SWAP A</b></p><p> PUSH DPH</p><p> PUSH DPL ; 保護目的地址</p><p> MOV DPTR,#TAB </p><p> MOVC A,@A+DPTR
63、 ; 查表得ASCII碼</p><p> POP DPL</p><p> POP DPH ; 恢復目的地址</p><p> MOVX @DPTR,A ; 存轉(zhuǎn)換后的ASCII碼</p><p> INC DPTR ; 修改目的地址指針</p&g
64、t;<p> MOV A,@R0 ; 取需要轉(zhuǎn)換的數(shù)</p><p> ANL A,#0FH ; 屏蔽高4位</p><p> PUSH DPH</p><p> PUSH DPL ; 保護目的地址</p><p> MOV DPTR
65、,#TAB</p><p> MOVC A,@A+DPTR ; 查表得ASCII碼</p><p> POP DPL</p><p> POP DPH ; 恢復目的地址</p><p> MOVX @DPTR,A</p><p> INC DPT
66、R ; 修改目的地址指針</p><p> INC R0 ; 修改源地址指針</p><p> DJNZ R2,LOOP ; 未轉(zhuǎn)換完則繼續(xù)</p><p><b> SJMP $</b></p><p> TAB: DB ‘0
67、123456789ABCDEF’</p><p><b> END</b></p><p> 評分辦法:程序設(shè)計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。</p><p> 16、內(nèi)部RAM 30H開始的單元中存放著16個0-9的ASCII碼(高位字節(jié)在前),請將其
68、轉(zhuǎn)換為壓縮BCD碼(高位在前)并存入外部RAM 1000H開始的單元中。</p><p> 解: ORG 0</p><p> MOV R0,#30H</p><p> MOV DPTR,#1000H</p><p> MOV R2,#8 ; 16個ASCII碼轉(zhuǎn)換為8個壓縮BCD碼</p>
69、<p> LOOP: MOV A,@R0</p><p> ANL A,#0FH ; 屏蔽高4位得到BCD碼</p><p><b> SWAP A</b></p><p> MOV R1,A</p><p> INC R0 ; 指向下一個ASCII碼</
70、p><p> MOV A,@R0</p><p> ANL A,#0FH ; 屏蔽高4位得到BCD碼</p><p> ORL A,R1 ; 合成壓縮BCD碼</p><p> MOVX @DPTR,A ; 存壓縮BCD碼</p><p> INC DPTR</p><
71、;p><b> INC R0</b></p><p> DJNZ R2,LOOP</p><p><b> SJMP $</b></p><p><b> END</b></p><p> 17、設(shè)有兩個長度為16字節(jié)的數(shù)組,分別存放在外部RAM 02
72、00H和0300H為首址的存儲區(qū)域中,試編寫程序求其對應項之和(不考慮溢出的情況),結(jié)果存放在以0400H為首址的外部RAM中。</p><p> 解: 參考程序清單如下:</p><p><b> ORG 0</b></p><p> MOV R2,#16 ; 數(shù)組長度為16個字節(jié)</p>&
73、lt;p> MOV R3,#02H ; 數(shù)組1的首地址高8位</p><p> MOV R4,#03H ; 數(shù)組2的首地址高8位</p><p> MOV R5,#04H ; 和數(shù)組的首地址高8位</p><p> MOV DPL,#0 ; 數(shù)據(jù)指針低8位清零</p>&l
74、t;p> LOOP: MOV DPH,R3</p><p> MOVX A,@DPTR ; 取被加數(shù)</p><p> MOV R1,A ; 存被加數(shù)</p><p> MOV DPH,R4</p><p> MOVX A,@DPTR ; 取加數(shù)<
75、;/p><p> ADD A,R1 ; 求和</p><p> MOV DPH,R5</p><p> MOVX @DPTR,A ; 存和</p><p> INC DPL ; 指向下一字節(jié)</p><p> DJNZ R2,LOOP
76、 ; 未加完則循環(huán)</p><p><b> END</b></p><p> 評分辦法:程序設(shè)計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。</p><p> 18、編程求內(nèi)部RAM中40H~4FH共16個單元中的內(nèi)容的和(結(jié)果為2字節(jié)),并將和放入50H和51H
77、單元中(高8位在50H)。</p><p> 解: 參考程序清單如下:</p><p><b> ORG 0</b></p><p> LJMP START</p><p> ORG 30H</p><p> START: MOV R0,#40H ; 數(shù)據(jù)
78、區(qū)首地址送R0</p><p> MOV R2,#16 ; 單元數(shù)送R2</p><p> MOV R3,#0 ; 和的高8位清零</p><p> CLR A ; 和的低8位清零</p><p> LOOP: CLR C</p><p> ADD
79、 A,@R0 ; 求和</p><p> JNC NEXT ; 沒有進位則轉(zhuǎn)移</p><p> INC R3 ; 和的高8位存儲單元內(nèi)容加1</p><p> NEXT: INC R0 ; 指向下一個單元</p><p> DJNZ R2,LOOP
80、 ; 沒加完則循環(huán),和在R3和A中</p><p> MOV 51H,A ; 存低8位結(jié)果</p><p> MOV 50H,R3 ; 存高8位結(jié)果</p><p><b> SJMP $</b></p><p><b> END</b></p&g
81、t;<p> 19、有一個長度為16字節(jié)的ASCII碼字符串存放在外部RAM 1000H為首址的存儲區(qū)域中,字符串中的每一個字符均不相同,試編寫程序查找字符串中是否存在ASCII碼“9”。如果在字符串中存在ASCII碼“9”,則將其存儲單元的地址存放到內(nèi)部RAM 30H和31H單元中(高8位地址在30H單元中),同時將OV標志位清零。否則,將30H和31H單元的內(nèi)容清零,并將OV標志位置“1”。</p>
82、<p> 解: ORG 0</p><p> MOV SP,#60H</p><p> MOV DPTR,#1000H</p><p> MOV R2,#16</p><p> LOOP: MOVX A,@DPTR</p><p> C
83、JNE A,#39H,EXIT</p><p> MOV 30H,DPH</p><p> MOV 31H,DPL</p><p> CLR OV</p><p> SJMP $</p><p> EXIT: INC DPTR</p>&
84、lt;p> DJNZ R2,LOOP</p><p> MOV 30H,#0</p><p> MOV 31H,#0</p><p> SETB OV</p><p> SJMP $</p><p><b> END </b>&
85、lt;/p><p> 20、有兩個8字節(jié)的16進制數(shù)a和b,它們分別存放在內(nèi)部RAM中30H~37H和40H~47H的單元中(高位字節(jié)在前)。請編程求a-b,并將差存入30H開始的內(nèi)部RAM單元中(高位字節(jié)在前)。若差小于零則將F0標志位置“1”,否則清零。</p><p> 解:設(shè)計思路:從16進制數(shù)的最低位字節(jié)(37H和47H)開始相應字節(jié)帶借位相減,然后修改地址指針在對次低位字節(jié)進行
86、相減,一共循環(huán)8次完成兩個8字節(jié)16進制數(shù)的相減。最后將Cy標志的內(nèi)容傳送給F0標志位即可。</p><p> ORG 0</p><p> MOV R0,#37H</p><p> MOV R1,#47H</p><p> MOV R2,#8</p><p>
87、 CLR C</p><p> LOOP: MOV A,@R0</p><p> SUBB A,@R1</p><p> MOV @R0,A</p><p> DEC R0</p><p> DEC R1</p>
88、<p> DJNZ R2,LOOP</p><p> MOV F0,C</p><p> SJMP $</p><p><b> END</b></p><p> 21、若外部RAM的(3000H)=X,(3001H)=Y,編程實現(xiàn)Z=X*X+2Y,并將結(jié)果存到
89、片內(nèi)RAM的40H單元(設(shè)Z<256 。</p><p> 解: X EQU 3000H</p><p> Y EQU 3001H</p><p> Z EQU 40H</p><p> ORG 0</p><p>
90、 MOV DPTR,#X ; 變量X的地址送DPTR</p><p> MOVX A,@DPTR ; 取變量X</p><p> MOV B,A ; 變量X的值送給B寄存器</p><p> MUL AB ; 求X*X,根據(jù)題意知積為1字節(jié)(在A中)<
91、;/p><p> MOV R0,A ; X*X的結(jié)果存入R0中</p><p> INC DPTR ; 指向變量Y</p><p> MOVX A,@DPTR ; 取變量Y</p><p> MOV B,#2 </p>
92、<p> MUL AB ; 求2*Y,根據(jù)題意知積為1字節(jié)(在A中)</p><p> ADD A,R0 ; 求X*X+2*Y</p><p> MOV Z,A ; 和存入40H單元</p><p> SJMP $ ;
93、停機</p><p><b> END</b></p><p> 評分辦法:不要求寫出程序的注釋和使用偽指令。程序設(shè)計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。</p><p> 22、設(shè)外部RAM 2000H單元為數(shù)據(jù)塊的起始地址,數(shù)據(jù)塊長度為10,試編程求數(shù)據(jù)
94、塊中的最小值,存入內(nèi)部RAM 30H單元。</p><p> 解:設(shè)計思路:將數(shù)據(jù)塊的第1個數(shù)據(jù)放入結(jié)果單元,然后依次與剩余的9個數(shù)據(jù)進行比較。如果新的數(shù)據(jù)比結(jié)果單元中的數(shù)據(jù)還小則將該數(shù)據(jù)存入結(jié)果單元,9次比較完成則結(jié)果單元中的數(shù)據(jù)就是最小值。</p><p><b> ORG 0</b></p><p> MOV DPT
95、R,#2000H</p><p> MOVX A,@DPTR ;取數(shù)據(jù)塊的第一個數(shù)</p><p> MOV 30H,A ;存入結(jié)果單元</p><p> MOV R2,#9 ; 共比較9次</p><p> INC DPTR ;指向第2個數(shù)</
96、p><p> LOOP: CLR C</p><p> MOVX A,@DPTR</p><p> SUBB A,30H</p><p> JNC LP ; 沒有借位則說明結(jié)果單元的數(shù)小,不用更換最小值</p><p> MOVX A,@DPTR
97、 </p><p> MOV 30H,A ; 更換最小值</p><p> LP: INC DPTR ; 指向下一個數(shù)</p><p> DJNZ R2,LOOP ; 沒有比較完則繼續(xù)循環(huán)</p><p> SJMP $ ; 停機<
98、/p><p><b> END</b></p><p> 評分辦法:不要求寫出程序的注釋。程序設(shè)計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。</p><p> 23、若外部RAM的(1000H)=X,(1001H)=Y,請編程實現(xiàn)Z=2X+Y*Y+5(設(shè)Z<655
99、36),并將結(jié)果保存到片內(nèi)RAM的30H和31H單元(31H單元存放結(jié)果的高8位,30H單元存放結(jié)果的低8位)。</p><p> 解: X EQU 1000H</p><p> ZH EQU 31H</p><p> ZL EQU 30H </p><p><b> O
100、RG 0</b></p><p> MOV ZH,#0 ;結(jié)果單元清零</p><p> MOV ZL,#0</p><p> MOV DPTR,#1000H</p><p> MOVX A,@DPTR ;取X的值</p><p> MOV
101、 B,#2</p><p> MUL AB ;計算2X</p><p> ADD A,ZL</p><p> MOV ZL,A ;存結(jié)果低8位</p><p> MOV A,B ;取乘積高8位</p><p> ADD
102、A,ZH</p><p> MOV ZH,A ;存結(jié)果高8位</p><p> INC DPTR ;指向Y</p><p> MOVX A,@DPTR ;取Y</p><p> MOV B,A</p><p> MUL AB
103、;計算Y*Y</p><p> ADD A,ZL ;計算結(jié)果低8位</p><p> MOV ZL,A</p><p> MOV A,B ;取乘積的高8位</p><p> ADDC A,ZH ;計算結(jié)果高8位,注意必須帶進位加</p><p>
104、; MOV ZH,A</p><p> MOV A,ZL</p><p> ADD A,#5 ;計算結(jié)果加5</p><p> MOV ZL,A</p><p> MOV ZH,A ;存結(jié)果低8位</p><p> ADDC A,#0
105、 ;將低8位進位加到結(jié)果高8位,注意必須帶進位加</p><p> MOV ZH,A ;存結(jié)果高8位</p><p><b> END</b></p><p> 評分辦法:不要求寫出程序的注釋和使用偽指令。程序設(shè)計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,
106、可酌情扣1-3分。</p><p> 24、設(shè)外部RAM 1000H單元為數(shù)據(jù)塊的起始地址,數(shù)據(jù)塊長度為60字節(jié),試編程求數(shù)據(jù)塊中所有數(shù)據(jù)的和,并將其存入內(nèi)部RAM 30H和31H單元(30H單元存放和的低8位,31H單元存放和的高8位)。</p><p><b> 解:</b></p><p> ADDR EQU 100H
107、H ;數(shù)據(jù)塊首地址</p><p> LEN EQU 60 ;數(shù)據(jù)塊長度</p><p> ZH EQU 31H ;和的高8位地址</p><p> ZL EQU 30H ;和的低8位地址</p><p><b> ORG
108、 0</b></p><p> MOV DPTR,#ADDR ;數(shù)據(jù)塊首地址送DPTR</p><p> MOV R7,#LEN ;數(shù)據(jù)塊長度送R7</p><p> MOV ZH,#0 ;結(jié)果單元清零</p><p> MOV ZL,#0</p><p>
109、 LOOP: MOVX A,@DPTR ;取數(shù)據(jù)</p><p> ADD A,ZL ;將數(shù)據(jù)加到結(jié)果單元的低8位</p><p> MOV ZL,A ;存結(jié)果低8位</p><p> MOV A,ZH ;取結(jié)果高8位</p><p> ADDC A,#0
110、 ;將低8位計算的進位加到高8位中</p><p> MOV ZH,A ;存高8位</p><p> INC DPTR ;修改地址指針,指向下一個數(shù)據(jù)</p><p> DJNZ R7,LOOP ;沒有計算完則繼續(xù)</p><p><b> SJMP $</b&g
111、t;</p><p><b> END</b></p><p> 評分辦法:不要求寫出程序的注釋和使用偽指令。程序設(shè)計思路正確可得5分,指令完全寫對可得10分。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。</p><p> 25、若外部RAM的(1000H)=X,內(nèi)部RAM(30H)=Y,請編程實現(xiàn)Z=X*X
112、+3Y+18(設(shè)Z<65536),并將結(jié)果保存到片內(nèi)RAM的40H和41H單元(41H單元存放結(jié)果的高8位,40H單元存放結(jié)果的低8位)。</p><p> 解: X EQU 1000H</p><p> Y EQU 30H</p><p> ZH EQU 41H</p><p&
113、gt; ZL EQU 40H </p><p><b> ORG 0</b></p><p> MOV ZH,#0 ;結(jié)果單元清零</p><p> MOV ZL,#0</p><p> MOV DPTR,#1000H</p><p&
114、gt; MOVX A,@DPTR ;取X的值</p><p> MOV B,A</p><p> MUL AB ;計算X*X</p><p> ADD A,ZL</p><p> MOV ZL,A ;存結(jié)果低8位</p><p> M
115、OV A,B ;取乘積高8位</p><p> ADD A,ZH</p><p> MOV ZH,A ;存結(jié)果高8位</p><p> MOVX A,Y ;取Y</p><p> MOV B,#3</p><p> MUL
116、AB ;計算3*Y</p><p> ADD A,ZL ;計算結(jié)果低8位</p><p> MOV ZL,A</p><p> MOV A,B ;取乘積的高8位</p><p> ADDC A,ZH ;計算結(jié)果高8位,注意必須帶進位加</p>
117、;<p> MOV ZH,A</p><p> MOV A,ZL</p><p> ADD A,#18 ;計算結(jié)果加18</p><p> MOV ZL,A ;存結(jié)果低8位</p><p> MOV A,ZH ;取結(jié)果高8位</p&g
118、t;<p> ADDC A,#0 ;將低8位進位加到結(jié)果高8位,注意必須帶進位加</p><p> MOV ZH,A ;存結(jié)果高8位</p><p><b> END</b></p><p> 評分辦法:不要求寫出程序的注釋和使用偽指令。程序設(shè)計思路正確可得5分,指令完全寫對可得10分
119、。若僅寫對少量指令,可酌情給1-3分;若僅有少量指令寫錯,可酌情扣1-3分。</p><p> 26、若外部RAM的(1000H)=X,請編程實現(xiàn)Y=X2+2X+1(設(shè)Y<65536),并將結(jié)果保存到片內(nèi)RAM的30H和31H單元(31H單元存放結(jié)果的高8位,30H單元存放結(jié)果的低8位)。</p><p><b> 解:</b></p><
120、;p> ORG 0</p><p> MOV 30H,#0 ;結(jié)果單元清零</p><p> MOV 31H,#0</p><p> MOV DPTR,#1000H</p><p> MOV A,@DPTR ;取X的值</p><p
121、> MOV B,A </p><p> MUL AB ;求X的平方</p><p> MOV 30H,A ;存低8位</p><p> MOV A,B</p><p> MOV 31H,A ;存高8位</
122、p><p> MOVX A,@DPTR ;取X的值</p><p> MOV B,#2</p><p> MOV AB ;求2X</p><p> ADD A,30H ;求低8位和</p><p> MOV 30H
123、,A ;存和的低8位</p><p> MOV A,B ;取積的高8位</p><p> ADDC A,31H ;求高8位和</p><p> MOV 31H,A ;存和的高8位</p><p> MOV A,30H</p&
124、gt;<p> ADD A,#1 ;加1</p><p> MOV 30H,A ;存和的低8位</p><p> MOV A,31H</p><p> ADDC A,#0 ;和的高8位加上低8位運算的進位</p><p> MOV
125、 31H,A ;存和的高8位</p><p> SJMP $ ;停機</p><p><b> END</b></p><p> 27、設(shè)外部RAM 2000H單元為數(shù)據(jù)塊的起始地址,數(shù)據(jù)塊長度為100字節(jié)。假設(shè)在數(shù)據(jù)塊中存在唯一的一個ASCII字符“A”,試編程找到它,并將其在
126、外部RAM的存放地址存入內(nèi)部RAM 30H和31H單元中(30H單元存放地址的高8位,31H單元存放地址的低8位)。</p><p><b> 解:</b></p><p> ORG 0</p><p> MOV DPTR,#2000H ;數(shù)據(jù)塊首地址送DPTR</p><p> MOV
127、 R2,#100 ;數(shù)據(jù)塊長度送R2</p><p> LOOP: MOVX A,@DPTR ;取數(shù)據(jù)</p><p> CJNE A,#41H,NEXT ;數(shù)據(jù)不是“A”則轉(zhuǎn)移</p><p> MOV A,DPH</p><p> MOV 30H,A ;
128、存高8位地址</p><p> MOV A,DPL</p><p> MOV 31H,A ;存低8位地址</p><p> SJMP $ ;停機</p><p> NEXT: INC DPTR ;修改地址指針</p><p&
129、gt; DJNZ R2,LOOP ;沒有找到則繼續(xù)</p><p> SJMP $ ;停機</p><p> 28、若內(nèi)部RAM的(20H)=a,外部RAM(1300H)=b,請編程實現(xiàn)y=a2+b2+5(設(shè)y<65536),并將結(jié)果保存到片內(nèi)RAM的30H和31H單元(31H單元存放結(jié)果的高8位,30H單元存放結(jié)果的低8位)。&
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論