新的开始——LED灯汇编机器码的点亮方式
在几个月前看2440视频的时候,发现太多知识欠缺,购买开发板期间补习makefile,linux,arm汇编和arm构架之后,现在重新开始学习。 先看板子LED硬件连接图: 可以看到LED 1,2,4连接GPF4,5,6。故,查看芯片手册GPF IO口: 有寄存器地址,有对应位的功能,剩下的就是我们的编程了。 写在前面:基本汇编拾遗 Load/Store 内存访问指令: LDR:字 数据读取指令 LDRB:字节读取指令 LDR R0,[R1];把内存单元R1中的数据读取到R0寄存器中 。。。LDR,STR还有很多后缀的指令不详举例了,以后用到再说明 STR:字数据写入指令 STRB:字节数据写入指令 STR R0,[R1,#0X100];把R0中的数据保存到内存单元(R1+0X100)中 B:跳转 MOV:移动 MOV R1,R0;把R0的值赋值给R1 伪指令:LDR(上面一个LDR的用法是汇编指令,但是LDR也可以是伪指令) LDR R0,=0X1234;表示把0x1234赋值给R0,你可能会想,MOV不就可以达到效果了吗? 但是,MOV只能处理立即数,当我们不能保证一个数是否是立即数的时候,请使用LDR伪指令。 关于什么样的数才能算是立即数,可以参考ARM体系结构 P24对立即数的叙述。 简单介绍一下: 每个立即数由一个8位的常数循环右移偶数位得到