单片机应用技术习题解答
3-4. 假定累加器A中的内容为30H,执行指令 1000 H:MOVC
A,@A+PC
后,把程序存储器( )单元的内容送入累加器A中。
答:1031H。
3-7.下列程序段的功能是什么?
PUSH Acc PUSH B POP Acc POP B
POP AccPOP BBPUSH BPUSH AccAcc
答:A的内容与B的内容互换。
3-9.写出完成如下要求的指令,但是不能改变未涉及位的内容。 (A)把Acc.3,Acc.4, Acc.5和Acc.6清零。 (B)把累加器A的中间4位清零。 (C)把Acc.2和Acc.3置1。 答:(A)ANL A,#87H
(B)ANL A,#0C3H (C)ORL A,#0CH
;(A)∧10000111 ;(A)∧11000011 ;(A)∨00001100
3-10.已知程序执行前有(A)=02H,(SP)=52H,(51H)=FFH,(52H)=FFH,下述程序执行后,(A)( 50H )=(SP),=( 52H ),(51H)( 30H )=,(52H)=( 50H ),(PC)=( 5030H )。
POP DPHPOP DPLFFHFFH52HSP-151HSP-1(SP)=50HSPSP
POP POP
DPH DPL
;(SP)=52H,(52H)=FFH,(DPH)=FFH,(SP)=51H ;(SP)=51H,(51H)=FFH,(DPL)=FFH,(SP)=50H
;(DPTR)=4000H
; 原来(A)=02H,左移一位后(A)=04H ;(B)=04H,
;(4004H)=30H→A,(A)=30H ;(SP)=51H,(51H)=30H ; (A)=04H ; (A)=05H
50H30H52H50H(SP)+1SPMOV DPTR,#4000H RL
A
MOV B,A
MOVC A,@A+DPTR PUSH Acc MOV A,B INC
A
PUSH AccPUSH Acc51H(SP)+1SP
MOVC A,@A+DPTR PUSH Acc RET
;(4005H)=50H→A,(A)=50H ;(52H)=(A)=50H, (SP)=52H
;(PCH)=50H, (SP)=51H, (PCL)=30H, (SP)=50H
PCHPCL50H30H52H51H50H(SP)-1(SP)-1SPSPORG 4000H DB
10H,80H,30H,50H,30H,50H
3-12:如果DPTR=507BH,SP=32H,(30H)=50H,(31H)=5FH,(32H)=3CH,
则执行下列指令后:
POP POP POP
DPH DPL SP
DPH=(3CH),DPL=(5FH ),SP=(4FH )
3-13.假定(SP)=60H, (A)=30H, (B)=70H, 则执行下列指令后,(SP)=( ), (61H)=( ), (62H)=( )。 PUSH Acc PUSH B
;(61H)=30H, (SP)=61H ;(62H)=70H, (SP)=62H
PUSH BPUSH Acc70H30H62H60H(SP)+1SP61H(SP)+1SP
答:(SP)=62H,(61H)=30H,(62H)=70H。
4-13.编写程序,实现双字节无符号数加法运算,要求(R0R1)+(R6R7)→60H和61H中。
答:参考程序如下:
ORG 0000H MOV A, R1 ADD A, R7 MOV 61H, A MOV A, R0
ADDC A, R6 MOV 60H, A SJMP $ END
4-16.若SP=60H,标号LABEL所在的地址为3456H,LCALL指令的地址为2000H,执行如下指令:
2000H LCALL LABEL
后,堆栈指针SP和堆栈内容发生了什么变化?PC的值等于什么?如果将指令LCALL直接换成ACALL是否可以?如果换成ACALL指令,可调用的地址范围是什么?
答:(1) 堆栈指针SP和堆栈内容变化为:
SP=SP+1=61H
SP=SP+1=62H
(61H)=PC的低字节=03H (62H)=PC的高字节=20H
(2) PC的值:PC=3456H。
(3) 不可以将指令LCALL直接换成ACALL。 (4) 可调用的地址范围是2KB,即2002H~27FFH。 5-3:编写出外部中断1为跳沿触发的中断初始化程序。
答:SETB IT1
SETB EX1 SETB EA
5-5:某系统有3个外部中断源1、2、3,当某一中断源变为低电平时,便要求CPU进行处理,它们的优先处理次序由高到低依次为3、2、1,中断处理程序的入口地址分别为1000H,1100H,1200H。试编写主程序及中断服务程序(转至相应的中断处理程序的入口即可)。
答:若仅在/INT0引脚接3个外部中断源,电路如图5-10(P115)
ORG
0000H
LJMP MAIN ORG
0003H
LJMP INT_EX0 ORG
0030H IT0
; 采用低电平有效触发中断
;允许外部中断0
MAIN: CLR
SETB EX0 SETB EA
; 插入用户程序
;单片机进入休眠方式等待中断
WAIT: MOV PCON,#01H
NOP
LJMP WAIT
;以下为外部中断0服务子程序 INT_EX0:JNB
P1.0,NEXT1
;判断是不是1号中断
LJMP INT_IR1 ;跳转到1号中断处理程序

