实验二 汇编语言算法实现实验
一、实验目的
(1)掌握汇编语言工程的编写。
(2)对单片机 I/O 接口汇编控制有初步认识。
(3)掌握IO口原理接法及控制原理。
二、实验内容
(1)学习汇编语言,掌握MCS-51的基本汇编语句,并实现简单排序等基础算法的编写
(2)学习汇编语言,并实现外设接口的控制,结合算法输出使用P3.2口输出控制LED灯亮灭,实现LED灯亮灭延时
三、实验结果
1、排序部分
排序部分采用的冒泡排序
冒泡排序的代码如下,首先我采用将数据放到40H为起始的部分,存放八个单元,并设置一个负责计数的寄存器R0来控制循环
两层循环控制冒泡进行排序,每一次比较,最终将最大的数放在最后
调试阶段:
首先看到开始40H单元为0
单步执行,将数据先送入内存单元
运行排序部分的代码,循环两次后可以看到,2与10的位置发生变换
继续执行,执行循环若干次可以看到10到达最终的位置
其余以此类推,得到最终的排序结果
2、LED灯亮暗延时
主要的实现思想就是采用调用一个子程序,实现延时
进入调试阶段
执行完排序操作以后,在外围设备处找到P3口,观察到P3.2口不但变化
ORG 0000h
LJMP MAIN
ORG 0030H
MAIN:
MOV 40H,#10H
MOV 41H,#2H
MOV 42H,#4H
MOV 43H,#5H
MOV 44H,#3H
MOV 45H,#1H
MOV 46H,#3H
MOV 47H,#6H
MOV R0,#8
LOOP1:
MOV R2, #7;
MOV R1, #40H;
LOOP2:
MOV A, @R1;
INC R1;
CLR C;
SUBB A, @R1;
JNC NEXT; cy=0跳转升序,降序JC
DJNZ R2, LOOP2;
DJNZ R0, LOOP1;
;SJMP $;
DELAY:
CLR P3.2 ;清零位指令CLR
LCALL YS ;调用延时子程序
SETB P3.2 ;置1位指令SETB,即让P3.2恒定输出1
LCALL YS ;调用延时子程序
LJMP DELAY
YS:
MOV R7,#10
DJNZ R7,$
RET
NEXT:
MOV A, @R1;
DEC R1;
XCH A, @R1 ;字节交换
INC R1;
XCH A, @R1;
DJNZ R2, LOOP2;
DJNZ R0, LOOP1;
SJMP $;
END
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)