程序功能:实现一8位LED灯由左到右循环闪烁 itle"bubble. asm' 将存储映像寄存器导入列表 STACK sect" STACK",5h;给堆栈段分配空间 bss def start set start: STM #7000.SWWSR 设等待位 STM 将辅助寄存器AR3设为2(乘2,实现左移) STM #6.AR 将辅助寄存器AR1设为6(左移7次) STM #3.AR2 将辅助寄存器AR2设为3(循环执行4次) AR3. 将T(乘法寄存器)设为2 loop1: LD #l,A A寄存器值为1 STL y=1 PORTW @y, PAO 输出y地址内的值到输出口 STM #10000.AR4 将辅助寄存器AR4设为1000 oop3: RPT #10000 重复执行下一指令10000+1次 等待 BANZ loop, 'AR4- 循环AR4值10000+1次 loop2: MPY 将y×T,其值存入A寄存器 IL 将A的值存入y地址中 PORTW @y, PAO 输出y地址值到输出口 STM #10000AR5 将辅助寄存器AR5设为10000 loop4: RPT #10000 实现第8个灯跳转到第1个灯时的时间延迟 NOP BANz loop*AR5 BaNz loop2, * ARI end: B 数据寻址方式 C54x共有7种数据寻址方式,如表所示: 寻址方式 用途 举例 指令含义程序功能:实现一 8 位 LED 灯由左到右循环闪烁 .title"bubble.asm" .mmregs ;将存储映像寄存器导入列表 STACK .usect "STACK",5h ;给堆栈段分配空间 .bss y,1 .def start .data PA0 .set 0 .text start: STM #7000,SWWSR ;设等待位 STM #2,AR3 ;将辅助寄存器 AR3 设为 2 (乘 2,实现左移) STM #6,AR1 ;将辅助寄存器 AR1 设为 6 (左移 7 次) STM #3,AR2 ;将辅助寄存器 AR2 设为 3 (循环执行 4 次) LD AR3,T ;将 T(乘法寄存器)设为 2 loop1: LD #1,A ;A 寄存器值为 1 STL A,@y ;y=1 PORTW @y,PA0 ;输出 y 地址内的值到输出口 STM #10000,AR4 ;将辅助寄存器 AR4 设为 10000 loop3: RPT #10000 ;重复执行下一指令 10000+1 次 NOP ;等待 BANZ loop3,*AR4- ;循环 AR4 值 10000+1 次 loop2: MPY @y,A ;将 y×T,其值存入 A 寄存器 STL A,@y ;将 A 的值存入 y 地址中 PORTW @y,PA0 ;输出 y 地址值到输出口 STM #10000,AR5 ;将辅助寄存器 AR5 设为 10000 loop4: RPT #10000 ;实现第 8 个灯跳转到第 1 个灯时的时间延迟 NOP BANZ loop4,*AR5- BANZ loop2,*AR1- BANZ loop1,*AR2- end: B end .end 数据寻址方式: C54x 共有 7 种数据寻址方式,如表所示: 寻址方式 用途 举例 指令含义