单片机汇编程序:主程序与子程序的交互

需积分: 34 18 下载量 53 浏览量 更新于2024-08-20 收藏 1.77MB PPT 举报
"本文主要探讨了主程序与子程序在单片机汇编程序中的关系,并介绍了常用的单片机汇编语言伪指令以及逻辑及移位类指令的应用。" 在单片机编程中,主程序(MAIN)是程序执行的起点,它负责整个系统的初始化、任务调度以及调用子程序等功能。子程序(SUB)则是在主程序中被调用的独立功能模块,用于实现特定的任务。主程序通过调用指令(如LCALL)来执行子程序,子程序执行完毕后,通过RET指令返回到主程序的下一条指令继续执行。 在汇编语言中,伪指令是不直接影响机器硬件但对汇编过程有用的指令。以下是一些常见的伪指令: 1. 定位伪指令ORG:用于设定程序的起始地址,确保程序在内存中的正确位置。 2. 汇编结束伪指令END:标记程序的结束,告诉汇编器程序的终止点。 3. 符号定义伪指令EQU:允许我们定义符号(label),便于代码的可读性和可维护性。 4. 定义字节数据伪指令DB:用于定义和初始化单个或多个字节的数据。 5. 定义字数据伪指令DW:用于定义和初始化单个或多个字的数据。 6. 数据赋值伪指令DATA:用于给已定义的符号赋值。 7. 位地址赋值伪指令BIT:用于指定并操作位地址。 8. 定义空间伪指令DS:预留指定数量的内存空间,不初始化。 9. 数据地址赋值伪指令XDATA:用于定义外部数据存储区的地址。 逻辑及移位类指令是单片机处理二进制数据时的重要工具,主要包括逻辑与和逻辑或操作: - 逻辑与指令(ANL):将两个操作数按位进行逻辑与运算,结果存放在第一个操作数中。例如,ANLA,#0FH 可以用来清除A寄存器中某些位,保留其他位。 - 逻辑或指令(ORL):将两个操作数按位进行逻辑或运算,结果存放在第一个操作数中。例如,ORLA,#0FH 可以用来设置A寄存器中某些位,保持其他位不变。 这些逻辑操作指令常用于数据的位操作,如设置或清除标志位、数据的位选择和组合等。在实际编程中,我们可以利用它们的特性来实现特定的功能,如数据的掩码操作、位状态的检查等。 通过理解和熟练运用主程序与子程序的关系以及汇编语言的伪指令和逻辑移位指令,开发者可以更有效地编写和优化单片机程序,提高代码的效率和可读性。
2012-08-12 上传
51单片机很全的常用子程序 \ACM-12864汉字液晶显示驱动程序\acm12864.c ........................\.DC0809\0809_1.c ........................\.......\0809_2.c ........................\.......\0809_3.c ........................\.......\0809_4.c ........................\.......\0809_5.c ........................\adc2051\adc2051.c ........................\Ad_da转换\0832波形输出\三角波.asm ........................\.........\............\正弦波.asm ........................\.........\............\锯齿波.ASM ........................\.........\AD5G1443.ASM ........................\.........\AD7701.ASM ........................\.........\ADC0809.ASM ........................\.........\JIANCE.ASM ........................\.........\TLC2543.ASM ........................\.........\TLC548_5.ASM ........................\.........\TLC5615.ASM ........................\.........\文档.doc ........................\.D转换类\ADC0809.ASM ........................\........\DAC0832.txt ........................\........\目前AD-DA常用芯片.txt ........................\AT90S8515打铃程序.ASM ........................\C51_table\1第一章:基本概念\#define\#define.c ........................\.........\.................\.......\#define.Opt ........................\.........\.................\.......\#define.Uv2 ........................\.........\.................\Do_While\dowhile.c ........................\.........\.................\........\dowhile.Opt ........................\.........\.................\........\dowhile.Uv2 ........................\.........\.................\For\for.c ........................\.........\.................\...\For.Opt ........................\.........\.................\...\For.Uv2 ........................\.........\.................\Goto\Goto.c ........................\.........\.................\....\Goto.Opt ........................\.........\.................\....\Goto.Uv2 ........................\.........\.................\IF\if1.c ........................\.........\.................\..\if2.c ........................\.........\.................\..\if3.c ........................\.........\.................\..\if4.c ........................\.........\.................\..\table.Opt ........................\.........\.................\..\table.Uv2 ........................\.........\.................\SWITCH-CASE\switch.c ........................\.........\.................\...........\switch.Opt ........................\.........\.................\...........\switch.Uv2 ........................\.........\.................\typedef\typedef.c ........................\.........\.................\.......\typedef.Opt ........................\.........\.................\.......\typedef.Uv2 ........................\.........\.................\While\While.c ........................\.........\.................\.....\While.Opt ........................\.........\.................\.....\While.Uv2 ........................\.........\3第三章:开机后的启动流程\Poweron_initial.c ........................\.........\.........................\Poweron_initial.Opt ........................\.........\.........................\Poweron_initial.plg ........................\.........\.........................\Poweron_initial.Uv2 ........................\.........\4第四章:延时例程\Delay.c ........................\.........\.................\delay.Opt ........................\.........\.................\delay.plg ........................\.........\.................\delay.Uv2 ........................\.........\.................\pulse.c ........................\DES算法演示\Debug\des.dll ........................\...........\des.c ........................\...........\des.dll ........................\...........\des.dsp ........................\...........\des.dsw ........................\...........\des.h ........................\...........\des.lib ........................\...........\Release\des.dll ........................\hex2bcd.asm ........................\I2c总线\页写.ASM ........................\.IC\IC卡读卡器的C程序\搞定.c ........................\...\周立功IIC\24C02.c ........................\...\.........\test.c ........................\...\.........\VI2C_C51.c ........................\...\网络资料\24c02.c ........................\...\........\93cxx.c ........................\...\........\PC并口模拟IIC.c ........................\LED显示\八位串行LED显示驱动器MAX7219 7211应用程序.ASM ........................\main_last.asm ........................\RTX-51 Real-Time(汉).pdf ........................\RTX-51 实时操作系统.pdf ........................\SOFT_UART.ASM ........................\testpw.asm ........................\test_read.asm ........................\中断应用\intrrupt.c ........................\串行通信\8031单片机通信软件(与PC).asm ........................\........\..51与8051点对点通讯\接收.asm ........................\........\....................\甲机发送.asm ........................\........\......PC机间通讯软的设置\PC机主程序.c ........................\........\........................\PC机发送子程序.c ........................\........\........................\PC机完全程序.c ........................\........\........................\PC机接收子程序.c ........................\........\........................\单片机主程序.asm ........................\........\........................\单片机完全程序.asm ........................\........\........................\单片机接收中断子程序.asm ........................\........\........................\单片机查询发送子程序.asm ........................\........\ch1.asm ........................\........\COMMA28.ASM ........................\........\jtx.asm ........................\........\PC机与51单片机的快速串行通信程序.asm ........................\........\QS_COMMA.ASM ........................\........\SjtxR.asm