四、程序阅读:
1、MOV 20H ,#0A3H 2、 MOV SP,#49H
MOV A ,#0B6H MOV 30H,#3FH
MOV R0 ,#20H MOV 31H,#48H
MOV R2 ,#7EH CLR A
ORL A ,R2 PUSH Acc
ANL A ,@R0 PUSH 31H
SWAP A POP Acc
CPL A POP 30H
XRL A,#0F5H SJMP $
ORL 20H,A 执行后,(A)= 48H ; (30H)= 00H ;
SJMP $ (31H)= 48H ;(SP)= 50H 。
执行后, (A)= 20H ;(20H)= A3H 。
3、设(R0)=7FH,内部RAM的(7EH)=00H,(7FH)=40H,执行下列程序:
DEC @R0
DEC R0
DEC @R0 执行结果为:(R0)= 7EH ,(7EH)= 0FFH,(7FH)= 3FH 。
4、假定A=38H,(R0)=17H,(17H)=34H,执行以下指令:
ANL A,#17H
ORL 17H,A
XRL A,@R0
CPL A 执行结果:(A)= DBH 。
5、下列程序:
MOV R2,#8
TOGGLF: CPL P1·7
DJNZ R2,TOGGLF
执行结果:将改变P1·7的值 8 次,(R2)= 0 。
五、程序补充:
1、将片内部30H~60H单元中的内容传送到以2100为起始地址的存储区。注:此题可能考整道编程。
MOV R0,#30H 或 MOV R0,#30H
MOV DPTR,#2100H MOV R1,#00H
MOV R7,#31H MOV R7,#31H
L1: CLR A
MOV A,@R0 L1:
MOVX @DPTR,A MOV A,@R0
INC R0 MOVX @R1,A
INC DPTR INC R0
DJNZ R7,L1 INC R1
DJNZ R7,L1
2、查表法,求y=x!(x=0~7),x存放在30H中,y存放在40H、41H。
MOV A , 30H
CLR R7
MOV R7 , A
MOV DPTR,,#TAB
MOVC A ,@A+DPTR
MOV 40H , A
MOV A , R7
INC A
MOVC A ,@A+DPTR
MOV 41H ,A
SJMP $
TAB:DW 1,1,2,6,24
DW 120,720,5040