主题 : (汇编)编译后只有84字节的Tiny6410裸机程序:LED跑马灯 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 45773
精华: 2
发帖: 56
金钱: 415 两
威望: 83 点
贡献值: 2 点
综合积分: 152 分
注册时间: 2011-05-07
最后登录: 2012-01-21
楼主  发表于: 2011-06-19 11:54

 (汇编)编译后只有84字节的Tiny6410裸机程序:LED跑马灯

管理提醒: 本帖被 xoom 执行加亮操作(2011-06-19)
rGPKCON0     EQU 0x7F008800;S3C6410GPK端口配置寄存器0(GPK0-GPK7)                        
                        AREA    LED1,CODE,READONLY    ; 声明代码段LED1
                        ENTRY                ; 标识程序入口
                        CODE32                ; 声明32位ARM指令            
START
                        ldr r0,=rGPKCON0;给寄存器R0赋值GPK端口配置寄存器0的地址
loop
                        ldr r1,=0x00010000;打开GPK4针脚.GPKCON0寄存器,从左到右第一位是7第二位是6第三位是5第四位是4.
                        str r1,[r0];由于寄存器R0中储存内容为GPK端口配置寄存器0的地址,所以寄存器R1的内容会写入GPK端口配置寄存器0
                        bl delay;跳转到延迟函数位置执行程序,并且记下当前PC指针数据到r14(lr)寄存器以备返回
                        ldr r1,=0x00100000;打开GPK5针脚指令
                        str r1,[r0];写指令
                        bl delay;延迟
                        ldr r1,=0x01000000;打开GPK6针脚指令
                        str r1,[r0];写指令
                        bl delay;延迟
                        ldr r1,=0x10000000;打开GPK7针脚指令
                        str r1,[r0];些指令
                        bl delay;延迟
                        b loop;跳转到loop标签,达到程序无限循环
delay
                        ldr r3,=0x4ffff;将要延迟的时间(循环次数)写入
tag
                        sub r3,r3,#1;可以理解为r3=r3-1
                        cmp r3,#0x0;判断寄存器r3是否等于0
                        bne tag;b为arm跳转指令ne为条件码(不相等)即:寄存器r3不等于0则跳转到tag标记
                        mov pc,lr;将bl指令处储存的地址写入pc程序指针寄存器达到跳转的效果        
                        END
[ 此帖被ici2cc在2011-06-21 16:14重新编辑 ]
级别: 新手上路
UID: 40264
精华: 0
发帖: 16
金钱: 80 两
威望: 16 点
贡献值: 0 点
综合积分: 32 分
注册时间: 2011-03-17
最后登录: 2012-07-29
1楼  发表于: 2011-07-05 22:12
牛人  对芯片好熟悉的人啊
级别: 侠客
UID: 41066
精华: 0
发帖: 52
金钱: 260 两
威望: 52 点
贡献值: 0 点
综合积分: 104 分
注册时间: 2011-03-25
最后登录: 2016-02-22
2楼  发表于: 2011-07-28 09:58
感谢分享! 注释很详细!
级别: 新手上路
UID: 55067
精华: 0
发帖: 18
金钱: 90 两
威望: 18 点
贡献值: 0 点
综合积分: 36 分
注册时间: 2011-09-11
最后登录: 2013-07-01
3楼  发表于: 2011-10-13 16:41
鹅肉皮u寓言因永吟
级别: 新手上路
UID: 74127
精华: 0
发帖: 7
金钱: 35 两
威望: 7 点
贡献值: 0 点
综合积分: 14 分
注册时间: 2012-07-19
最后登录: 2015-06-25
4楼  发表于: 2012-07-19 23:54
一个个列出来不是很好吧,可以采用移位的方法
级别: 新手上路
UID: 126500
精华: 0
发帖: 5
金钱: 25 两
威望: 5 点
贡献值: 0 点
综合积分: 10 分
注册时间: 2016-07-08
最后登录: 2016-07-12
5楼  发表于: 2016-07-09 09:58

 回 楼主(ici2cc) 的帖子

好东西好东西好东西好东西好东西好东西好东西好东西好东西好东西
级别: 新手上路
UID: 125580
精华: 0
发帖: 9
金钱: 45 两
威望: 9 点
贡献值: 0 点
综合积分: 18 分
注册时间: 2016-05-28
最后登录: 2017-05-27
6楼  发表于: 2016-10-04 09:50
wolainale