解:误接后,相当于存贮器的地址线A10、A9、A8分别与P2.5、P2.4、P2.3相连。由此可求出地址区:
P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 P0.7-P0.0 地址区 × × 0 0 0 × × × 0……0 0000H × × 0 0 0 × × × 1……1 00FFH × × 0 0 1 × × × 0……0 0800H × × 0 0 1 × × × 1……1 08FFH × × 0 1 0 × × × 0……0 1000H × × 0 1 0 × × × 1……1 10FFH × × 0 1 1 × × × 0……0 1800H × × 0 1 1 × × × 1……1 18FFH × × 1 0 0 × × × 0……0 2800H × × 1 0 0 × × × 1……1 28FFH × × 1 1 0 × × × 0……0 3000H × × 1 1 0 × × × 1……1 30FFH × × 1 1 1 × × × 0……0 3800H × × 1 1 1 × × × 1……1 38FFH
所以存贮器的寻址范围分别为8个不连续的区域,每块地址区有256个字节。这在实际使用时当然很不方便,所以要注意地址线不要接错。
3.18 将图改用译码器74LS138来构成全译码方式的地址选择方式,保持ROM的地址仍然是0000H~0FFFH
3.19 这样的安排是否有问题?如果使系统能正常工作,应该如何重新分配各芯片的地址?如何实现?假定系统
3.20 8031用一片64KB的RAM作为外部的ROM和外部的RAM。请画出相应的接口电路。假定ROM地址和RAM地址各为32KB
第4章
4.1 若要完成以下的数据传送,应如何用MCS-51的指令来实现? (1).R1内容传送到R0。 解:MOV A,R1
MOV R0,A (2).外部RAM 20H单元内容送R0。 解:MOV R1,#20H
MOVX A,@R1 MOV R0,A (3).外部RAM 20H单元内容送内部RAM 20H单元。 解:MOV R0,#20H
MOVX A,@R0 MOV 20H,A (4).外部RAM 1000H单元内容送内部RAM 20H单元。
解:MOV DPTR,#1000H
MOVX A,@DPTR MOV 20H,A (5).ROM 2000H单元内容送R0。 解:MOV A,#00H
MOV DPTR,#2000H MOVC A,@A+DPTR MOV R0,A
(6).ROM 2000H单元内容送内部RAM 20H单元。 解:MOV A,#00H
MOV DPTR,#2000H MOVC A,@A+DPTR MOV 20H,A
(7).ROM 2000H单元内容送外部RAM 20H单元。 解:MOV A,#00H
MOV R0,#20H
MOV DPTR,#2000H MOVC A, @A+DPTR MOVX @R0,A
4.2 已知A=7AH,R0=30H,(30H)=A5H,PSW=80H,问执行以下各指令的结果(每条指令都以题中规定的数据参加操作)。 (1). XCH A,R0 A= 30H R0= 7AH (2). XCH A,30H A= A5H (3). XCH A,@R0 A= A5H (4). XCHD A,@R0 A= 75H (5). SWAP A A= A7H (6). ADD A,R0 A= AAH Cy= 0 OV=1 (7). ADD A,30H A=1FH Cy=1 OV=0 (8). ADD A,#30H A=AAH Cy=0 OV= 1 (9). ADDC A,30H A= 20H Cy= 1 OV= 0 (10).SUBB A,30H A=D4H Cy=1 OV=1 (11).SUBB A,#30H A= 49H Cy= 0 OV= 0 4.3 设内部RAM的30H单元的内容为40H,即(30H)=40H,还知(40H)=10H,(10H)=00H,端口P1=0CAH,问执行以下指令后,各有关存储器单元、寄存器及端口的内容(R0,R1,A,B,P1,40H,30H及10H单元)。 MOV R0,#30H MOV A,@R0 MOV R1,A MOV B,@R1 MOV @R1,P1 MOV P2,P1 MOV 10H,#20H MOV 30H,10H 解:
R0= 30H R1= 40H A=40H B=10H P1= 0CAH (40H)= 0CAH (30H)= 20H (10H)=20H 4.4 设A=83H,R0=17H,(17H)=34H,执行以下指令后,A是多少 ? ANL A,#17H ORL 17H,A XRL A,@R0 CPL A 解:
A=0CBH 4.7 试编写程序,将内部RAM的20H,21H,22H连续三个单元的内容依次存入2FH,2EH和2DH单元。
解:MOV R7,#03H
MOV R0,#20H MOV R1,#2FH
LOOP:MOV A,@R0 MOV @R1,A INC R0 DEC R1 DJNZ R7,LOOP
4.8 编写程序,进行两个16位数的减法:6F5DH-13B4H,结果存入内部RAM的30H和31H单元。30H单元存储差的低8位。
解: CLR C
MOV A,#5DH SUBB A,#0B4H MOV 30H,A MOV A,#6FH SUBB A,#13H MOV 31H,A
4.9编写程序,若累加器A的内容分别满足以下条件时,则程序转至LABEL地址单元。设A中存的是无符号数。
(1).??10
(2).??10 (3)..??1(40).?? 0 1(1)解:有关语句如下:
CJNE A,#0AH,00H JNC LABEL (2)解:有关语句如下 CJNE A,#0BH,00H JNC LABEL
(3)解:有关语句如下: CJNE A,#0BH,00H JC LABEL
(4)解:有关语句如下: CJNE A,#0AH,00H JC LABEL
4.10已知SP=25H,PC=2345H,(24H)=12H,(25H)=34H,(26H)=56H,问在这种条件下执行RET指令以后,SP= ?PC= ? 解:
SP= 3412H PC=23H 4.11若SP=25H,PC=2345H,标号LABEL所在地址为3456H,问执行长调用指令 LCALL LABEL
之后,堆栈指针和堆栈内容发生什么变化 ?PC是多少? 解:
SP=27H, (26H)=48H, (27H)=23H PC=3456H