《单片机原理及应用A》实验指导书
MOV R0,#30H
MOV R2,#39H MOV 30H,#0AAH MOV 40H,#5BH XCH A,R2 XCH A,@R0 XCH A,40H SWAP A
MOV R1,A SJMP $ END
(2)编译并在WAVE仿真开发系统中运行程序。 (3)观察结果:
A的内容应为(),R0的内容为(),R2的内容为(),30H单元内容为(),40H单元内容为()。
★通过这段程序应理解:要将内部存储器的内容进行交换必须借助累加器A,寻址方式可以采用直接寻址和寄存器间接寻址。而半字节交换仅能通过累加器A进行。
(二).堆栈操作指令
(1)编辑一下内容源程序,保存文件为EX2_2_1.asm。
ORG 0000H
LJMP MAIN ORG 0030H MAIN: MOV SP,#60H MOV R0,#53H
MOV R1,#30H MOV 30H,#0AAH MOV A,R0 PUSH ACC PUSH 01H PUSH 30H
MOV A,#0FFH XCH A,30H
6
《单片机原理及应用A》实验指导书
MOVE R1,A POP 30H POP 01H POP ACC SJMP $ END
(2)编译并在WAVE仿真开发系统中运行程序。
★单步运行观察入栈时,SP内容的变化,需入栈的内容压在那些单元?
(3)观察结果
累加器A的内容应为(),R1的内容为(),30H单元内容为()。问答题:如果R1入栈使用PUSH R1,出栈使用POP R1可以吗?试一试,想想为什么?在例程中(EX2_2_1.asm)是用什么指令实现R1入栈保护的,说明理由?
(4)编辑一下内容源程序,保护文件为EX2_2_2.asm。 ORG 0000H
LJMP MAIN ORG 0030H
MAIN: MOV R0,#53H
MOV R1,#30H MOV 30H,#0AAH MOV A,R0 MOV A,#0FFH XCH A,30H MOVE R1,A SJMP $ END
(5)运行后,观察结果
★思考:与上面的程序段(EX2_2_1.asm)比较一下,结果有什么不同(A/RI/30H)?为什么?
7
《单片机原理及应用A》实验指导书
(三).对A简单逻辑操作指令
(1)编辑一下内容源程序,保存文件为EX2_3.asm。
ORG 0000H LJMP MAIN ORG 0030H
MAIN: MOV A,#53H CPL A MOVE R0,A RL A MOV R1,A RL A MOV R2,A CLR C RLC A MOV R3,A CLA A RLC A MOV R4,A CLA A SETB C RRC A
MOV R5,A SETB C RR A SJMP $ END
(2)编译并在WAVE仿真开发系统中运行程序。 (3)观察结果:
A累加器的内容应为(),R0的内容应为(),R1的内容为(),R2的内容为(),R3的内容为,R4的内容为()R5的内容为()。
★左移、右移可以实现乘2、除2操作。
8
《单片机原理及应用A》实验指导书
(四)逻辑与、或、异或操作指令
(1)编辑以下内容源程序,保存文件为EX2_4。asm。
ORG 0000H LJMP MAIN ORG 0030H
MAIN: MOV A,#53H MOV P1,#55H MOV R0,#30H
MOV R1,#40H MOV 30H,#3AH MOV 40H,#83H
ANL A,P1 MOV R2,A ORL A,#26H MOV R3,A RLC A ANL A,@R0 MOV R4,A ORL 40H,A MOV R5,40H
ANL A,R1 MOV R6,A XRL A,#58H SJMP $
END
(2)编译并在WAVE仿真开发系统中运行程序。
(3)观察每步程序执行结果,指出R1,R2,R3,R4,R5,R6的内容。
★逻辑与、或分别可以用来对某些位进行屏蔽(即置0)或是置1。
9
《单片机原理及应用A》实验指导书
实验二单片机指令系统学习实验(二)
2.1——算术运算指令
一、实验目的
本课程是让学生了解如何运用算术指令进行数据加、减、乘、除运算操作。
二、实验设备
微机一台(WINDOWS系统、安装好WAVE仿真开发系统等相关软件)
三、实验内容
观察算术运算程序的编写规则和运行结果
(一).多字节加法以及减法基本运算程序
将98H与DAH相加再与C8H相加计算其和,将2384H减FCH求其差。 (1) 编辑以下内容源程序,保存文件为EX3_1.asm。
ORG 0000H LJMP MAIN
ORG 0030H
MAIN: MOV A,#98H
MOV R1,#0DAH MOV 32H,#0C8H MOV R0,#30H MOV 30H,#84H MOV 31H,#23H CLR C ADD A,R1 MOV R1,A CLR A
ADDC A,#00H MOV R2,A CLR C MOV A,R1 ADD A,32H
MOV R1,A CLR A ADDC A,R2 MOV R2,A MOV A,@R0
10