arm 汇编 指令看不太懂,高手解释下
举例说明一下:LDRr0,=|Image$$RO$$Limit|LDRr1,=|Image$$RW$$Base|LDRr3,=|Image$$ZI$$Base|CMPr0...
举例说明一下:
LDR r0,=|Image $ $ RO $ $ Limit|
LDR r1,=|Image $ $ RW $ $ Base|
LDR r3,=|Image $ $ ZI $ $ Base|
CMP r0,r1
BEQ %F1
CMP r1,r3
LDRCC r2,[r0],#4
STRCC r2,[r1],#4
BCC %B0
LDR r1,|Image $ $ ZI $ $Limit|
MOV r2,#0
CMP r3,r1
STRCC r2,[r3],#4
BCC %B2
才刚学,这些代码看不大懂,希望高手指点一下
BEQ %F1
LDRCC r2,[r0],#4
STRCC r2,[r1],#4
BCC %B0
这些是什么意思?要是都能说说那就更好了。 展开
LDR r0,=|Image $ $ RO $ $ Limit|
LDR r1,=|Image $ $ RW $ $ Base|
LDR r3,=|Image $ $ ZI $ $ Base|
CMP r0,r1
BEQ %F1
CMP r1,r3
LDRCC r2,[r0],#4
STRCC r2,[r1],#4
BCC %B0
LDR r1,|Image $ $ ZI $ $Limit|
MOV r2,#0
CMP r3,r1
STRCC r2,[r3],#4
BCC %B2
才刚学,这些代码看不大懂,希望高手指点一下
BEQ %F1
LDRCC r2,[r0],#4
STRCC r2,[r1],#4
BCC %B0
这些是什么意思?要是都能说说那就更好了。 展开
3个回答
展开全部
的确,书本上都有!
BEQ 相等则跳转,B跳转,EQ相等(,前面有CMP)
LDRCC 小于则装载内存数据到寄存器,LDR装载,CC小于
STRCC BCC类似
<助记符>{<执行条件>}{S} <Rd>,<Rn>{,第2操作数}
有S则表示影响CPSR寄存器的值
条件码助记符:
EQ 相等
NE 不相等
CS/HS 无符号数大于或等于
CC/LO 无符号数小于
MI 负数
PL 正数或零
VS 溢出
VC 没有溢出
HI 无符号数大于
LS 无符号数小于或等于
GE 有符号数大于或等于
LT 有符号数小于
GT 有符号数大于
LE 有符号数小于或等于
AL 无条件执行,跟不写一样
|Image$$RO$$Limit|:表示RO区末地址后面的地址,即RW数据源的起始地址
|Image$$RW$$Base|:RW区在RAM里的执行区起始地址,也就是编译器选项RW_Base指定的地址。
|Image$$ZI$$Base|:ZI区在RAM里面的起始地址
|Image$$ZI$$Limit|:ZI区在RAM里面的结束地址后面的一个地址
BEQ 相等则跳转,B跳转,EQ相等(,前面有CMP)
LDRCC 小于则装载内存数据到寄存器,LDR装载,CC小于
STRCC BCC类似
<助记符>{<执行条件>}{S} <Rd>,<Rn>{,第2操作数}
有S则表示影响CPSR寄存器的值
条件码助记符:
EQ 相等
NE 不相等
CS/HS 无符号数大于或等于
CC/LO 无符号数小于
MI 负数
PL 正数或零
VS 溢出
VC 没有溢出
HI 无符号数大于
LS 无符号数小于或等于
GE 有符号数大于或等于
LT 有符号数小于
GT 有符号数大于
LE 有符号数小于或等于
AL 无条件执行,跟不写一样
|Image$$RO$$Limit|:表示RO区末地址后面的地址,即RW数据源的起始地址
|Image$$RW$$Base|:RW区在RAM里的执行区起始地址,也就是编译器选项RW_Base指定的地址。
|Image$$ZI$$Base|:ZI区在RAM里面的起始地址
|Image$$ZI$$Limit|:ZI区在RAM里面的结束地址后面的一个地址
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
单片机汇编程序是用汇编语言编写的程序,用于控制单片机的操作。汇编语言是一种比较接近计算机硬件语言的低级语言,相对于高级语言来说更容易理解和实现。下面是单片机汇编程序的基本步骤:1. 将代码和数据汇编到规定的段中。2. 在存储器中用未初始化的...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
展开全部
大哥。。。这些书本基本都有。。好好看书。。常翻书才学到东西
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
带进位位加法指令,这个不好理解吗?给你举个例子吧:
cpsr寄存器中的c位表示程序上文中产生的进位值,也就是是否有进位位存在。有则c位为1,没有则c位为0。假设现在r0的值为0x00001234,r1的值为0x00001212,那么执行以下语句:
adc
r0,
r0,
r1,则表示将r0与r1求和,结果再加上以前产生的进位,存进r0寄存器,也就是说如果之前计算时产生了进位,则求和结果为0x00002447,若之前没有进位,则求和结果为0x00002446。
cpsr寄存器中的c位表示程序上文中产生的进位值,也就是是否有进位位存在。有则c位为1,没有则c位为0。假设现在r0的值为0x00001234,r1的值为0x00001212,那么执行以下语句:
adc
r0,
r0,
r1,则表示将r0与r1求和,结果再加上以前产生的进位,存进r0寄存器,也就是说如果之前计算时产生了进位,则求和结果为0x00002447,若之前没有进位,则求和结果为0x00002446。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询