单片机第二次实验课——程序跳转表

发布时间 2023-03-22 21:10:52作者: Ryan爱吃糖

二、单片机第二次实验课——程序跳转表


(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的单元