简单的ARM指令程序分析

发布网友 发布时间:2022-04-23 13:09

我来回答

1个回答

热心网友 时间:2023-09-10 00:30

功能:一个数如果大于0则变成负值,如果已经为负值,则不变。
AREA Example, CODE,READONLY

ENTRY
MAIN
MOV R3,#0 //R3 里面放个0
MOV R0,#1000 //R0 里面放1000,这个1000是当做地址用的。
MOV R4,#2000 //R2 里面放2000, 这个2000是当做地址用的。
LDR R1,[R0] //将地址1000存放的数放到R1里面。
CMP R1,#0 //R1 和 0作比较。
BLLT INVERSE //如果R1里面的数据大于0,则跳转到 INVERSE。小于0则继续执行下一条。
MOV R3,R1 //为小于0的分支,将R1放到R3里面。
STR R3,[R4] //将R3的值放到2000地址指向的空间。
BL ENDPLACE //程序结束。
INVERSE //大于0的分支。
SUB R3,R3,R1 // 0 减去R1,得到一个-R1,并存到R3里面。
STR R3,[R4] //将R3的值,放到地址2000指向的空间。
ENDPLACE BLENDPLACE //程序结束。
END

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com