一、LED周期性点灯
1.汇编语言
ORG 0 ; 设置起始地址为0。
START: SETB P1.0 ; 设置P1.0端口为高电平,LED亮。
LCALL DELAY_1S ; 调用延时函数DELAY_1S,延时1秒。
CLR P1.0 ; 清除P1.0端口的高电平,LED灭。
LCALL DELAY_1S ; 再次调用延时函数DELAY_1S,延时1秒。
SJMP START ; 无条件跳转回START标签,实现循环执行。
DELAY_1S: ; 延时1秒的函数
MOV R2, #20 ; 将20存入R2,作为外循环计数器。
OUTER_LOOP:
MOV R1, #50 ; 将50存入R1,作为内循环计数器,约为1ms延时。
INNER_LOOP:
NOP ; 空操作,占用一个指令周期。
DJNZ R1, INNER_LOOP ; 内循环,执行50次NOP,约为1ms延时。
DJNZ R2, OUTER_LOOP ; 外循环,执行20次内循环,约为1秒延时。
RET ; 返回主程序。
END ; 程序结束。
2.结果展示
二、查找平方数
1.代码展示
ORG 0000H ;定义下一条的指令放在地址为0000H存储器
LJMP A1 ;长跳转指令至A1
ORG 0080H
A1: NOP
NOP
MOV SP,#60H
MOV DPTR,#2000H
MOV A,#03H ;对应A2的DB中的第3位
MOVC A,@A+DPTR
A2: SJMP A2
ORG 2000H
DB 01h,04h,09h,10h,19h,24h,31h,40h,51h
END
2.结果展示
三、总结
本次实验报告主要呈现了汇编程序实现延时点灯和汇编语言求平方代码,通过本次实验加深了我对汇编语言的理解。本实验或存在错误。