(1)、16根地址线的寻址空间可达1MB。 (2)、内存储器的存储单元是按字节编址的。
(3)、CPU中用于存放地址的寄存器称为地址寄存器。 (4)、地址总线上传送的只能是地址信息。
041、20根地址线的寻址范围可达( )。
(1)、512KB (2)、1024KB (3)、640KB (5)、4096KB
042、主存储器系统中使用Cache的目的是( )。
(1)、增加主存容量 (2)、存放常用的系统程序 (3)、存放固化的软件 (4)、提高CPU存取主存的速度
043、MCS-51系列单片机外扩存储器芯片时,4个IO口中用作数据总线的是( )。
(1)、P0和P2口 (2)、P0口 (3)、P2和P3口 (4)、P2口
044、计算机工作时,能写入也能读出的半导体存储器是( )。
(1)、RAM (2)、ROM (3)、磁盘 (4)、磁带
045、区分片外程序存储器还是数据存储器的最可靠方法是( )。
(1)、看其芯片型号是RAM还是ROM (2)、看其位于地址范围的低端还是高端 (3)、看其离MCS-51芯片的远近
(4)、看其是被RD信号连接还是被PSEN信号连接
046、指令AJMP的跳转范围是( )。
(1)、256 (2)、1KB (3)、2KB (4)、64K
三、编程题
001、编写程序实现两个4位BCD数相加,设被加数存放在内部RAM 40H和41H单元,加数存放在45H和
46H单元,和数存入50H和51H单元,并设最高位不产生进位。 解:程序如下:
002、编写程序,将1字节的压缩BCD数转换为二进制数,并存入内部RAM 30H单元中。
解:程序如下:
MOV A,41H
ADD A,46H DA A
MOV 51H,A MOV A,40H ADDC A,45H DA A
MOV 50H,A SJMP $
MOV A,40H SWAP A
ANL A,#0FH MOV B,#10 MUL AB
11
ANL 40H,#0FH ADD A,40H MOV 30H,A SJMP $
003、编写程序,将一个字节的二进制数转换为BCD数(0-255),并存入内部RAM 31H和32H单元中。
解:程序如下:
MOV A,30H MOV B,#10 DIV AB MOV 32H,B MOV B,#10 DIV AB XCH A,B SWAP A ORL 32H,A MOV 31H,B SJMP $
004、试编写一个程序,将内部RAM中 45H单元的高4位清0,低4位置1。
解:程序如下: MOV A,#0FH XCH A, 45H
005、设有字无符号数X、Y存放在内部RAM 30H、31H和32H、33H,试编写求|X-Y|的程序。
解:程序如下: CLR C MOV A,31H SUBB A,33H MOV 35H,A MOV A,30H SUBB A,32H JNC NN CPL A MOV 34H,A MOV A,35H CPL A ADD A,#1 MOV 35H,A MOV A,34H ADDC A,#0 NN: MOV 34H,A SJMP $
12
006、设平面上一点P的直角坐标为(X,Y),X、Y为字节符号数,试编写若P落在第I象限内,则令K
=I;若P落在坐标轴上,则令K=0的程序。 解:程序如下:
X DATA 30H Y DATA 31H K DATA 33H MOV A,Y JZ K0 MOV A,X JZ K0 JNB ACC。7,K14 MOV A,Y JNB ACC。7,K2 MOV K,#3 SJMP $ K2: MOV K,#2 SJMP $ K0: MOV K,#0 SJMP $ K14: MOV A,Y JNB ACC。7,K1 MOV K,#4 SJMP $ K1: MOV K,#1 SJMP $
007、编写程序把起始地址为1000H的100个连续单元中的内容送到以2000H开始的单元中。
解:程序如下: MOV DPTR,#1000H AG1: MOVX A,@DPTR XRL DPH,#30H MOVX @DPTR,A XRL DPH,#30H INC DPTR MOV A,DPL CJNE A,#04H,AG1 SJMP $
008、编程求内部RAM中40H-49H 10个单元中的内容的平均值,并放入4AH单元中。
解:程序如下: MOV R0,#40H CLR A MOV 4AH,A AG1: ADD A,@R0 JNC NINC
13
INC 4AH NINC: INC R0 CJNE R0,#4AH,AG1 XCHD A,@R0 SWAP A MOV B,#10 DIV AB XCH A,@R0 XCH A,B SWAP A ORL A,B MOV B,#10 DIV AB SWAP A ORL A,@R0 SWAP A MOV @R0,A SJMP $
009、从2000H地址单元开始,连续存有200W个字节补码数,编写程序将它们改变为各自的绝对值。
解:程序如下: MOV DPTR,#2000H AG1: MOVX A,@DPTR JNB ACC。7,NN CPL A INC A MOVX @DPTR,A NN: INC DPL MOV A,DPL CJNE A,#200,AG1 SJMP $
010、编写程序把内部RAM 20H-23H单元的内容分别送到2000H、2004H、2008H和200CH单元中。
解:程序如下: MOV DPTR,#2000H MOV R0,#20H AG1: MOV A,@R0 MOVX @DPTR,A INC R0MOV A,DPL ADD A,#4 MOV DPL,A CJNE R0,#24H,AG1 SJMP $
011、编写程序求放在3000H单元开始的5个字无符号数的和,并将和存放在3100H开始的单元中。
14
解:程序如下:
012、从内部RAM的DATA单元开始,存有H个数。请设计一个程序,将其中正数,零及负数分选出来,
将数据块中的正数和零传送到自ZHEN单元开始的存贮区,而把其中的负数送到FUSH单元开始的存贮区。
解:程序如下: ORG 300H START:MOV R1,#H MOV 20H,#ZHEN MOV 21H,#FUSH MOV R0,#DATA LOOP: MOV A,@R0 JB ACC。7,NEG MOVV R1,#20H MOV @R1,A INC 20H SJMP HEDNEG: MOV R1,21H MOV @R1,A HED: INC R0
15
AG1: NI: AGI1: MOV DPTR,#3000H
MOV 40H,#0 MOV 41H,#0 MOV 42H,#0 MOV R7,#5
MOVX A,@DPTR MOV 4AH,A INC DPL
MOVX A,@DPTR ADD A,42H MOV 42H,A MOV A,41H ADDC A,4AH MOV 41H,A JNC NI INC 40H INC DPL
DJNZ R7,AG1 MOV R0,#40H
MOV DPTR,#3100H MOV A,@R0
MOVX @DPTR,A INC DPL INC R0
CJNE R0,#43H,AGI1 SJMP $