AD30: ADD A,#30H
8、 编写程序,统计自P1口输入的数字串中的正数、负数及零的个数,统计的个数分别
存放在R0、R1、R2三个工作寄存器中。 START: CLR A MOV R0,A MOV R1,A MOV R2,A ENTER: MOV A,P1 JZ ZERO JB P1.7,NEG INC R0 SJMP ENTER
ZERO: INC R2 SJMP ENTER NEG: INC R1 SJMP ENTER
9、 编写程序,将外部数据存储器中的5000H—50FFH单元全部清零
MOV DPTR #5000H
MOV R0,#00H CLR A
LOOP: MOVX @DPTR,A INC DPTR DJNZ R0,LOOP
HERE:: SJMP HERE (RET ,SJMP $ 等) 10、分析下列程序的功能 PUSH ACC PUSH B POP ACC POP B
是通过累加器ACC与寄存器B数据交换
11、如果(DPTR)=507BH,(SP)=32H,(30H)=50H,(31H)=5FH,(32H)=3CH,则执行下列指令后:
POP DPH; POP DPL; POP SP;
则:(DPH)= ___3CH___;(DPL)=_____5FH_____;(SP)=_____50H_____;
12、如果(DPTR)=5678H,(SP)=42H,(3FH)=12H ,(40H)=34H,(41H)=50H,(42H)=80H,则执行下列指令后:
POP DPH POP DPL RET
则:(PCH) =__34H__;(PCL)=___12H____ ;(DPH)=__80H__;(DPL)=___50H__;
13、分析以下程序的功能。程序执行后片内RAM42H、43H单元和进位标志位C 中内容为多少? MOV R0,#40H
片内 MOV A,@R0
RAM INC R0 ADD A,@R0 INC R0
40H 98H MOV @R0,A
CLR A 41H AFH ADDC A,#0 INC R0 MOV @R0,A
14、阅读并分析以下程序片段的功能。
START: MOV R0,#40H
MOV R1,#10H
LOOP: CLR C MOV A,@R0 INC R0 SUBB A,@R0 JNC NEXT MOV A,@R0 DEC R0 XCH A,@R0 INC R0 MOV @R0,A NEXT: DJNZ R1,LOOP
15、试编写程序段,将片内RAM的20H-2FH共16个连续单元清零。 16、分析下列程序段的功能。 MOV 30H,#0 MOV 31H,#0 MOV 32H,#0
MOV DPTR,2000H MOV R1,#100
L4:MOVX A,@DPTR
INC DPTR CJNE A,#0,L1 INC 32H SJMP L2 L1: JC L3 INC 30H SJMP L2
… … L3: INC 31H
L2: DJNZ R1,L4 SJMP $
17、读程序:
已知:在8051单片机的片内RAM中,(30H)=25H,(31H)=1DH
MOV R0,#30H MOV A,@R0 SWAP A INC R0
XCHD A,@R0 ;交换低半字节 MOV 30H,A
执行该程序后,片内RAM30H单元内的数据是___,31H单元内的数据是___。
(30H)=5DH,(31H)=12H
18、已知:片内RAM(30H)=98H,(31H)=AFH MOV R0,#31H MOV A,@R0 DEC R0 CLR C SUBB A,@R0 MOV B,#10 DIV AB MOV @R0,A INC R0 MOV @R0,B
执行该程序后,片内RAM30H内的数据是( ),31H内的数据是( )
01H 07H
19、已知:片内RAM(30H)=12H(31H)=34H,片外RAM(30H)=56H,(31H)=78H MOV R1,#30H MOVX,A,@R1 MOV @R1,A INC R1 MOVX A,@R1 MOV @R1,A 执行该程序后,片内RAM30H内的数据是( ),31H内的数据是( ) 56H 78H
20、设MCS-51晶振为12Mz,设计一个软件延时程序,延时时间为10ms。 21、已知:片内RAM(30H)=12H(31H)=34H,片外RAM(30H)=56H,(31H)=78H MOV R1,#30H MOVX,A,@R1 MOV @R1,A INC R1
MOV A,@R1 MOVX @R1,A 执行该程序后,片内RAM30H内的数据是( ),片外31H内的数据是( ) 56H 34H
22、编写程序将片外数据存储器地址为1000H~102FH的数据块,全部搬迁到片内RAM30H~5FH中,并将原数据块区域全部清零。 START: MOV DPTR,#1000H MOV R0,#30H MOV R1,#30H LOOP: MOVX A,@DPTR MOV @R1,A CLR A
MOVX @DPTR,A INC DPTR INC R1
DJNZ R0,LOOP
23、设ROM、片内RAM、片外RAM各有关单元的内容示如下图,问复位执行下列程序段后(A)=?
0000 AJMP 030H
ORG 0030H
0030 MOV R0,#32H
MOV A,@R0 MOV R1,A MOVX A,@R1
MOVC A,@A+ DPTR
24、在外部ROM/EPROM中,从2000H单元开始依次存放0~5的平方值:0、1、4、9、…25,要求依据累加器中的值(0~5)来查找所对应的平方值,分析下述程序的结果
MOV DPTR,#2000H
MOV A,#05H MOVC A,@A+DPTR 执行结果:(DPTR)=2000H,(A)=25