DJNZ R7,LOOP
SJMP $
7.设有两个长度为15的数组,分别存放在0200H和0500H为首址的存储区域中,试编写程序求其对应项之和,结果存放在以0600H为首址的存储区域中。
MOV R7,#15
MOV R0,#00H CLR C
LOOP:
MOV P2,,#02H MOVX A,@R0 MOV B,A MOV P2,#05H MOVX A,@R0 ADDC A,B
MOV P2,#06H MOVX @R0,A INC R0
DJNZ R7,LOOP SJMP $
8.分别用数据传送指令和位操作指令编写程序,将内RAM位寻址区的128位单元全部清零。
MOV R0,#20H
MOV R1,#0FH MOV A,#00H
LOOP: MOV @R0,A
INC R0
DJNZ R1,LOOP SJMP $
9.编程求内部RAM中40H~49H10个单元中的内容的平均值,并放人4AH单元中。
START:MOV R3,#0
MOV R4,#0
MOV MOV
LOOP: MOV
ADD
MOV
R2,#10 R0,#40H A,R3 A,@R0 R3,A
CLR A
ADDC A,R4
MOV R4,A INC R0
DJNZ R2,LOOP
;调用单字节无符号除法程序即可
13
10.设内部RAM中30H和31H单元中有2个带符号数,求出其中的大数存放在32单元中。
CLR C
MOV A,30H SUBB A,31H JZ XMAX
JB ACC.7,NEG JB SJMP
NEG: JB YMAX: MOV
SJMP
XMAX: MOV RMAX: MOV
OV,YMAX XMAX OV,XMAX A,31H RMAX A,30H 32H,A
RET
11.请用位操作指令编写下面逻辑表达式值的程序。 (1) P1.7=ACC.0∧ (B.0∨P2.1)∨P3.2 MOV C, B.0 ORL C, P2.1
ANL C, ACC.0 ORL C, P3.2
MOV P1.7,C
(2) PSW.5=P1.3∧ACC.2∨B.5∧P1.1 (3) P2.3=P1.5∧B.4∨ACC.7∧P1.0
12.使用位操作指令实现下列逻辑操作,但不得改变未涉及位的内容。 (1) 使ACC.0置“1” SETB ACC.0
(2) 清除累加器高4位 CLR ACC.7 CLR ACC.6 CLR ACC.5 CLR ACC.4 (3) 清除ACC.3,ACC.5,ACC.7位。
CLR ACC.7 CLR ACC.5 CLR ACC.3
13.试编程把片外RAM从2040H开始的连续50个单元的内容按降序排列,结果存入3000H开始的存储区中。
START;MOV R0,#50
MOV DPTR,#2040H MOV R1,#20H
A,@ DPTR
MOV @ R1,A INC DPTR
LOOP: MOVX
INC R1
DJNZ R0,LOOP
14
ACALL SORT
MOV DPTR,#3000H MOV R1,#20H
LOOP: MOV A ,@ R1 MOVX @ DPTR, A
INC DPTR INC R1
DJNZ R0,LOOP SJMP $
14.试编一查表程序,从首地址为2000H,长度为100的数据表中,查找出A的ASCII码,将其地址存入2010H和2011H单元中。
MOV R7,#100 MOV B,’A’
MOV DPTR,#2000H LOOP: MOVX A,@DPTR CJNE A,B,NFIND SJMP FIND RET
NFIND: INC DPTR DJNZ R7,LOOP FIND: MOV 2010H,DPL MOV 2011H,DPH
RET
15.设计一个多字节无符号数加法子程序和减法子程序。
N字节无符号数加法程序 ([R0]+[R1])=([R0]) ;入口: R0,R1,R7 ;占用资源: ACC,B
;出口: R0,CF NADDN: MOV B,R0 CLR C
NADN1: MOV A,@R0 ADDC A,@R1 MOV @R0,A INC R0 INC R1
DJNZ R7,NADN1 MOV R0,B RET
;N字节无符号数减法程序 ([R0]-[R1])=([R0]) ;入口: R0,R1,R7 ;占用资源: ACC,B ;出口: R0,CF NSUBN: MOV B,R0 MOV R7,N CLR C
15
NSUBN1 : MOV A,@R0 SUBB A,@R1 MOV @R0,A INC R0 INC R1
DJNZ R7,NSUBN1 MOV R0,B
RET 16.在128分支程序中是用AJMP指令实现分支转移的。若用长转移指令LJMP来代替AJMP指令,以便子程序入口地址可在64KB范围内安排。试修改原来的程序,使之能适应新的要求。?
修改后的程序最多能有256个分支
MOV DPTR,#JPTAB
MOV A,R1 MOV B,#03 MUL AB PUSH A MOV A,B ADD A,DPH
POP AJMP @A+DPTR
JPTAB: LJMP PROGRAM0
LJMP PROGRAM1
LJMP PROGRAMN
习题五
一、选择题
(1) MCS-51单片机中断源和可设置的中断优先等级分别为( B )。 A.中断源为2个,中断优先等级为2个 B.中断源为5个,中断优先等级为2个 C.中断源为4个,中断优先等级为1个
D.中断源为3个,中断优先等级为1个
(2) MCS-51单片机定时/计数器的方式0和方式1分别是( A )位定时/计数器。 A.13和16 B.16和13 C.8和16 D.16和8
(3) MCS-51单片机定时/计数器的最大定时时间是( B )(设时钟频率为6MHz)。 A.65.536ms B.131.072ms C.8.192ms D.16.384ms (4) MCS-51单片机定时/计数器方式l时,其最大的计数个数是( A )。 A.65536 D.65635 C.8192 D.256 (5) T1中断源的中断矢量地址是( D )。
A.0003H B.000BH C.0013H D.001BH (6) IE0是( C )的中断标志。
A.T0 B.T1 C.INT0 D.INT1
16