二、单片机第二次实验课——程序跳转表
(1)运行程序,打开数据窗口,观察地址30H、31H、32H、33H的数据变化。用键盘输入改变地址30H、31H、32H、33H 的值,观察其实验效果。修改源程序中给 30H~33H 的赋值,观察实验效果。
;实验2-1
ORG 0000H
LJMP START
FUNC0: MOV 30H,#6
RET
FUNC1: MOV 31H,#7
RET
FUNC2: MOV 32H,#8
RET
FUNC3: MOV 33H,#9
RET
FUNCENTER:
ADD A,ACC ;AJMP 为二字节指令,调用号×2
MOV DPTR,#FUNCTAB
JMP @A+DPTR
FUNCTAB:
AJMP FUNC0
AJMP FUNC1
AJMP FUNC2
AJMP FUNC3
START:
MOV A,#0
CALL FUNCENTER
MOV A,#1
CALL FUNCENTER
MOV A,#2
CALL FUNCENTER
MOV A,#3
CALL FUNCENTER
SJMP $
END
(2)打开 CPU 窗口,选择单步或跟踪执行方式运行程序,观察 CPU 窗口各寄存器的变化。
(3)教材第 55 页 5、7、8 题。
第五题
MOV A,#56H
ADD A,#74H
ADD A,ACC
Cy=1, OV=0, A=94H
分析:
01010110
+01110100
————————
11001010 (第二条指令执行完,CY=0,CY-1=1, OV=CY⊕CY-1=1)
11001010
+11001010
————————
110010100(第三条指令执行完,CY=1,CY-1=1, OV=CY⊕CY-1=0)
而10010100=94H,由此得以上答案
第七题
MOV A,59H
MOV R0,A
MOV A,#0
MOV @R0,A
MOV A,#25H
MOV 51H,A
MOV 52H,#70H
A=25H, (50H)=0H, (51H)=25H, (52H)=70H
第八题
PUSH 30H ;SP=(61H) (SP)=(24H)
PUSH 31H ;SP=(62H) (SP)=(10H)
POP DPL ;SP=(61H) DPL=(10H)
POP DPH ;SP=(60H) DPH=(24H)
MOV A,#00H
MOVX @DPTR,A
最后的执行结果是:将0送到地址为24H的单元