写在最前面
本分类内使用的单片机皆为AT89S52,外接晶振频率为11.059MHz。
实验一 验证实验
test 1_1
将外部数据存储器0000H-0010H中的内容传送到片内数据存储器60H-70H单元。
1 2 3 4 5 6 7 8 9 10 11
| ORG 0000H MOV DPTR,#0000H MOV R0,#60H LOOP: MOVX A,@DPTR MOVX @R0,A INC DPTR INC R0 CJNE R0 ,#71H,LOOP SJMP $ END
|
test 1_2
程序跳转表
(1)运行程序,打开数据窗口,观察地址 30H、31H、32H、33H的数据变化。用键盘输入改变地址 30H、31H、32H、33H 的值,观察其实验效果。修改源程序中给30H~33H的赋值,观察实验效果。
(2)打开CPU窗口,选择单步或跟踪执行方式运行程序,观察CPU窗口各寄存器的变化。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| ORG 0 LJMP START // 改动此处,改变的是赋值 FUNC0:MOV 30H,#0 RET FUNC1:MOV 31H,#1 RET FUNC2:MOV 32H,#2 RET FUNC3:MOV 33H,#3 RET
FUNCENTER: ADD A,ACC // AJMP是一个2字节指令,故A需要乘以2,使得程序在JMP指令中跳转到正确的位置 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 LJMP $ END
|
test 1_3
test1_3_1
教材第55页5题。
1 2 3 4 5 6
| ORG 0000H MOV A,#56H ADD A,#74H ; CAH+CAH = 194H,高位舍弃 ADD A,ACC SJMP $ END
|
test1_3_2
教材第55页7题。
1 2 3 4 5 6 7 8 9 10 11
| ORG 0000H MOV 59H,#50H MOV A,59H MOV R0,A MOV A,#0 MOV @R0,A MOV A,#25H MOV 51H,A MOV 52H,#70H SJMP $ END
|
test1_3_3
教材第55页8题。
1 2 3 4 5 6 7 8 9 10 11
| ORG 0000H MOV SP,#60H MOV 30H,#24H MOV 31H,#10H PUSH 30H PUSH 31H POP DPL POP DPH MOV A,#00H MOVX @DPTR,A SJMP $
|