历史上的今天
今天是:2024年09月13日(星期五)
2021年09月13日 | jz2440裸机开发与分析: 点亮LED灯之汇编语言
2021-09-13 来源:eefocus
LED原理图及2440寄存器说明



汇编语言编写控制LED灯
.text /*.text部分是处理器开始执行代码的地方,指定了后续编译出来的内容放在代码段*/
.global _start; /*.global关键字用来让一个符号对链接器可见,可以供其他链接对象模块使用;*/
/* 告诉编译器后续跟的是一个全局可见的名字*/
/*.global _start让_start符号成为可见的标识符,*/
/*这样链接器就知道跳转到程序中的什么地方并开始执行程序*/
_start: /*_start是一个函数的起始地址,也是编译、链接后程序的起始地址*/
ldr r0, =0x56000050 /*GPFCON 地址*/
ldr r1, =0x0100
str r1, [r0]
ldr r0, =0x56000054 /*GPFDAT 地址*/
ldr r1, =0
ldr r1, [r0]
halt:
b halt
① .text
.text部分是处理器开始执行代码的地方,指定了后续编译出来的内容放在代码段【可执行】
arm-linux-gcc编译器的关键词
② .global
.global关键字用来让一个符号对链接器可见,可以供其他链接对象模块使用;告诉编译器后续跟的是一个全局可见的名字【变量/函数名】
.global _start让_start符号成为可见的标识符,这样链接器就知道跳转到程序中的什么地方并开始执行程序。
③ _start
_start是一个函数的起始地址,也是编译、链接后程序的起始地址。
由于程序是通过加载器来加载的,必然要找到_start名字的函数,因此_start必须定义成全局的,以便存在于编译后的全局符号表中,供其他程序【如:加载器】寻找到。
ARM指令集–ldr、mov与str的用法与区别
mov的用法
在ARM体系中,mov只能用于数据在寄存器之间的移动或者往寄存器中写入立即数。格式如下:mov{条件}{s} 目的寄存器,源操作数
MOV R1,R2 ;R1=R2
ldr的用法
LDR是将内存中的数载入到寄存器,LDR可以载入立即数。格式如下:LDR 目的寄存器,源
LDR R1,=0xE0000000 ;R1=0xE0000000
LDR R1,0xE0000000 ;将内存中地址为0xE0000000的内容载入到R1
LDR R1,[R0] ;将R0中的数所指定的地址的内容传输到R1
str的用法
STR是将寄存器中的数字载入内存。格式如下:STR{条件} 源寄存器,<存储器地址>
STR R1,[R0] ;将R1中的内容传输到R0中的数所指定的地址的内存中去
他们之间的区别
mov 只能用于寄存器之间的传输,传输立即数时有条件限制,只能装载通过偶数次移位能得到的立即数。
str/ldr 可以用于寄存器与内存之间的数据交换,STR是将寄存器中的数载入内存,LDR是将内存中的数载入到寄存器,LDR可以载入立即数。
并且LDR在往寄存器中载入立即数时,不受立即数的限制,而mov受其限制。
史海拾趣
|
(五)偶遇一好东东,不忘与大家分享: 分析笔记本电池及节能技术 个性化的电源管理技术和软件 ■ IBM PM Device和Battery MaxiMiser 图7 此外,该软件还能显示出电池的详细情况,如电压、容量、充电次数等参数。为了更有效地节电,除了CPU之外,Battery MaxiMiser还提供了PCI总线及CD-ROM的运行 ...… 查看全部问答> |
|
目前在调一款rtc的芯片,通过iic进行读写的,目前采用的是模拟的方式。 现在的问题是,我用普通的io口进行模拟的话,读写都没有问题,但是如果换成了接了上拉电阻的io口的话,读写都不正常了 个人感觉不可理解 希望各位帮忙分析查找原因… 查看全部问答> |
|
最近公司让我用isp1581和一个stc单片机开发一个驱动,现在一点头绪都没有,忘高手指教一下。 最近公司让我用isp1581和一个stc单片机开发一个驱动,现在一点头绪都没有,忘高手指教一下。… 查看全部问答> |
|
大家好,本人初学VHDL,不能理解为什么需要用ModelSim进行仿真,因为我看在Quartus II中有“Processing->Start Simulation”功能,然后自己设计输入.vwf文件,运行以后就可以看输出的波形了。希望有知道的朋友可以告诉我,谢谢了。… 查看全部问答> |
|
我的配置如下,但是我用信号发生器产生信号输入,根本就不进中断,但是我要是直接用导线给输入引脚引入高电平(相当于一个脉冲信号),就可以进中断,下面是我的程序,实在不明白原因!int void void ICapture_Configuration(void) ...… 查看全部问答> |
|
我用2407,想跟多个带SPI接口的器件通信。打算用过CS信号来控制与不同的器件来通信,请问这样可以吗?有没有哪位高人试过?谢谢… 查看全部问答> |




