单片机第三章答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.2指出下列每条指令的寻址方式和功能:
○1MOV A, #50H
该指令是立即数寻址方式,功能:A←立即数52H,就是操作数包含在指令字节中,跟在指令操作码后面字节内容就是操作数本身,把立即数52H送到累加器中。
○2MOV A, 50H
该指令是直接寻址方式,功能:A←50H,指令中直接给出该操作数所在的单元的地址,将50H 单元里的内容送到累加器中。
○3MOV A, @R0
该指令是寄存器间接寻址方式,功能:A←(R0),指令中给出的某一个寄存器的内容是操作数所在的存储单元地址,从该地址去取操作数,把R0单元的操作数送到累加器里。
○4MOV A, R7
该指令是寄存器寻址方式,功能:A←R7,指令中直接给出该寄存器的名称,将寄存器单元里的操作数送给累加器。
○5MOVC A, @A+PC
该指令是变址寻址方式,功能:操作数的地址是由一个基地址加一个偏移地址组成。该指令把基址寄存器PC的内容为基本地址,加上变址寄存器A的内容形成16位的地址,访问程序存储器中的数据表格。
○6SJMP LOOP
该指令是相对转移指令该指令的寻址方式为相对寻址方式,功能:PC ←PC+2,PC←PC+LOOP
3.3设内部RAM中的69H单元的内容为50H,写出当执行下列程序段后寄存器A﹑R0和内部RAM中50H﹑51H单元的内容为何值?
MOV A,69H ;A中的值为50H
MOV R0,A ;将A中的值送到R0中
MOV A,#00H ;将立即数00H送到A中
MOV @R0,A ;将A中的内容送到间接寻址的内部RAM中50H单元中MOV A,#35H ;将立即数35H送到A中
MOV 51H,A ;将A中的值送到51H单元中
MOV 52H,#80H ;将立即数80H送到52H单元中
可以知道:完成这段程序后,A中的值为:35H,R0:50H,内部RAM中50H:00H,51H:35H
3.6设堆栈指针SP中的内容为60H,内部RAM中的30H和31H单元的内容分别为24H和10H,执行下列程序段后,61H,62H,30H,31H,DPTR以及SP中内容将有何变化?
PUSH 30H ;SP←SP+1,(SP)←(30H),SP=61H,(61H)=24H
PUSH 31H ;SP←SP+1,(SP)←(31H),SP=62H,(62H)=10H
POP DPL ;DPL←(SP),SP←SP-1,(82H)=10H,SP=61H
POP DPH ;DPH←(SP),SP←SP-1,(83H)=24H,SP=60H
MOV 30H,#00H ;30H←00H
MOV 31H,#0FFH ;31H←0FFH
可以知道:完成这段程序后,61H中的内容为:24H,62H:10H,内部RAM中30H:00H,31H:0FFH,DPTR:2410H,SP:60H。
3.7用数据传送指令实现下列要求的数据传达:
○1R0的内容传送到R1中。
MOV A,R0
MOV R1,A
○2内部RAM 20H单元的内容传送到R0
MOV R0,20H
○3外部RAM 2030H 单元的内容传送到内部RAM 20H单元。
MOV DPTR,#2030H
MOVX A,@DPTR
MOV 20H,A
○4外部RAM 2030H 单元的内容传送到外部 RAM 2000H单元。
MOV DPTR,#2030H
MOV A,@DPTR
MOV DPTR,#2000H
MOVX @DPTR,A
○5外部RAM 1000H单元的内容传送到外部RAM 2000H单元。
MOV DPTR,#2000H
MOV R0,#00H
MOV P2,#10H
MOVX A,@R0
MOVX @DPTR,A
○6程序存储器ROM 2000H 单元的内容送到R1中。
MOV A,#01H
MOV DPTR,#1FFFH
MOVC A,@A+DPTR
MOV R1,A
○7 ROM 2000H 单元的内容传送到内部RAM 20H单元。
MOV A,#01H
MOV DPTR,#1FFFH
MOVC A,@A+DPIR
MOV 20H,A
○8ROM 2000H 单元的内容传送到外部 RAM 2000H 单元。
MOV A,#01H
MOV DPTR,#1FFFH
MOVC A,@A+DPTR
MOV DPTR,#2000H
MOVX @DPTR,A
3.11 试分析下列程序段,当程序执行后,位地址 00H,01H 中的内容将为何值?P1口的8条I/O线为何状态?
CLR C
MOV A,#66H
JC LOOP1
CPL C
SETB 01H
LOOOP1:ORL C,ACC.0
JB ACC.2,LOOP2
CLR 00H
LOOP2:MOV P1,A
可以知道当执行完该段程序后,位地址 00H的内容为0,01H中的内容为1
3.12 编程将片内RAM 的40H~60H单元中的内容送到片外RAM 以3000H开始的连续单元中。
ORG 0000H
START:MOV R0,40H
MOV R1,21H
MOV DPTR,#3000H
LOOP:MOV A,@RO
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R1,LOOP
RET
END
3.13 两个4位BCD码数相加,被加数和加数分别存于50H﹑51H和52H﹑53H单元中(次序为:千位﹑百位在低地址中,十位﹑个位在高地址中),要求和数存放在54H﹑55H和56H 中(56H用来存放最高位的进位),试编写加法程序。
ORG 0000H
START:MOV A,51H
ADD A,53H
DA A
MOV 54H,A
MOV A,50H
ADDC A,52H
DA A
MOV 55H,A
CLR A
RLC A
MOV 56H,A
SJMP $
END