实验一 单片机数据区传送 /排序程序设计 一、单片机数据区传送/ 排序程序设计1、实验目的1进一步掌握汇编语言程序设计和调试方法。 2了解单片机 RAM 中的数据操作2、实验说明要求:编写程序把 R2、R3 源 RAM 区首地址内的 R6、R7 字节数据传送到 R4、R5 目的地址的 RAM 区。3
数据区传送子程序Tag内容描述:
1、如:3000H ),R2 、R3 中输入目的地址(例如 4000H),R6、R7 中输入字节数(例如:1FFFH) 。
查看 RAM 区 300030FFH 和 400040FFH 内容,也可自己重新赋值。
运行程序,首先单步,然后用执行到指定位置,最后用连续运行方式。
记录下运行结果,检查 300030FFH 中内容是否和 400040FFH 内容完全一致。
5、思考题1、改变源地址,例如 00FFH; 2、改变目的地址,例如 2000H; 3、改变传输的个数,小于 256 个和大于 256 个的情况。
4、把程序改为对某一数据存储区 RAM 赋都相同一个数值。
6、源程序及其修改原理org 0000HBlock equ 2000hmov dptr, #Block ; 起始地址mov r0,#12h mov a,#20h ;修改 2000h 开始的地址所存放的内容为 20hLoop:mov r1,#14h ;增加 r1 计数,用循环方式实现大于 256 的数据传输(思考题 3)Loop1:movx dptr,ainc dptr ; 指向下一个。
2、地址(例如 4000H),R6、R7 中输入字节数(例如:1FFFH) 。
查看 RAM 区 300030FFH 和 400040FFH 内容,也可自己重新赋值。
运行程序,首先单步,然后用执行到指定位置,最后用连续运行方式。
记录下运行结果,检查 300030FFH 中内容是否和 400040FFH 内容完全一致。
5、思考题1、改变源地址,例如 00FFH; 2、改变目的地址,例如 2000H; 3、改变传输的个数,小于 256 个和大于 256 个的情况。
4、把程序改为对某一数据存储区 RAM 赋都相同一个数值。
6、源程序及其修改原理org 0000HBlock equ 2000hmov dptr, #Block ; 起始地址mov r0,#12h mov a,#20h ;修改 2000h 开始的地址所存放的内容为 20hLoop:mov r1,#14h ;增加 r1 计数,用循环方式实现大于 256 的数据传输(思考题 3)Loop1:movx dptr,ainc dptr ; 指向下一个地址djnz r1,Loop1 。
3、佛山科学技术学院 实 验 报 告 课程名称 实验项目 数据区传送子程序 专业班级 姓 名 学 号 指导教师 成 绩 日 期 年 月 日 实验目的 掌握RAM中的数据操作。
实验内容 把R2源RAM区首址内的R3字节数据传送到R4目的RAM区。
程序 org 00h 。
4、使用方法。
2. 复习单片机指令系统。
3. 复习利用 Keil 集成编译环境查看单片机存储器状态的方法。
4.3.3 实验原理本实验需完成数据块的移动,用循环和分支程序完成,循环次数控制可用DJNZ 指令,分支可用条件判断指令。
4.3.4 预作实验任务1. 补全程序以完成程序功能。
程序功能:根据 R6 的值给 R7 赋值:06107RMOV A,R6 ;取出 R6COMP ;R6=0 则转移到 COMPACC.7,POSI ;R60 则转移到 POSIMOV A, ;R60 则 R7=1COMP:MOV R7, ;保存结果2. 补全程序以完成程序功能。
程序功能:求 110 的累加和,结果存放到 R7:MOV A, ;A 清零MOV R0,#01H ;R0 赋初值MOV R7, ;设置循环次数NEXT:ADD A, INC DJNZ ,NEXTMOV R7, ;保存结果3. 编写程序,将内部数据存储器 20H3FH 这 32 个字节奇数地址的数据全部设为 55H;偶数地址的数据全部设为。
5、小到大的次序重新排列。
三、 程序框图及电路连接图程序四: 程序五:四、 源程序清单(注释部分请手写)程序四:数据区传送子程序ORG 07B0HMOV R2,#00HMOV R3,#00HMOV R4,#10HMOV R5,#00HMOV R6,#00HMOV R7,#08HSE22: MOV DPL,R3MOV DPH,R2 MOVX A,DPTR MOV DPL,R5MOV DPH,R4 MOVX DPTR,A CJNE R3,#0FFH,LO42INC R2LO42: INC R3 CJNE R5,#0FFH,LO43INC R4LO43: INC R5 CJNE R7,#00H,LO44CJNE R6,#00H,LO45 SJMP $NOPLO44: DEC R7SJMP SE22LO45: DEC R7DEC R6SJMP SE22 END程序五:数据排序实验ORG 09B0HQUE: MOV R3,#50HQUE1: MOV A,R3 。
6、使用方法。
2. 复习单片机指令系统。
3. 复习利用 Keil 集成编译环境查看单片机存储器状态的方法。
4.3.3 实验原理本实验需完成数据块的移动,用循环和分支程序完成,循环次数控制可用DJNZ 指令,分支可用条件判断指令。
4.3.4 预作实验任务1. 补全程序以完成程序功能。
程序功能:根据 R6 的值给 R7 赋值:06107RMOV A,R6 ;取出 R6COMP ;R6=0 则转移到 COMPACC.7,POSI ;R60 则转移到 POSIMOV A, ;R60 则 R7=1COMP:MOV R7, ;保存结果2. 补全程序以完成程序功能。
程序功能:求 110 的累加和,结果存放到 R7:MOV A, ;A 清零MOV R0,#01H ;R0 清零MOV R7, ;设置循环次数NEXT:ADD A, INC DJNZ NEXTMOV R7, ;保存结果3. 编写程序,将内部数据存储器 20H3FH 这 32 个字节奇数地址的数据全部设为 55H;偶数地址的数据全部设为 0AAH。
4。
7、结束转移。
2、 在主程序中调用子程序。
三实验流程图及源程序:ORG 0000HSJMP MAINORG 0030HMAIN: MOV SP,#60HACALL HASCSJMP $HASC: PUSH PSW PUSH ACCPUSH 00HPUSH DPLPUSH DPHMOV DPTR,#7000HMOV R0,#20HLOOP: MOVX A,DPTRJZ NEXTMOV R0,AINC R0INC DPTRSJMP LOOPNEXT: POP DPHPOP DPLPOP 00HPOP ACCPOP PSW RETEND开始H A S C结束H A S C保护现场D P T R # 7 0 0 HR 0 # 2 0 HA D P T RA = 0 0 H ?R E TYN R 0 A , R O + 1D P T R + 1四心得体会:1.学会了使用 ACALL addre11 指令,了解了子程序的调用。
2.通过参照课本上的例子,加深了对课本上程序的理解。
3.实验时总有些不理解的部分,还要多多看。