ARM汇编求正数负数个数

用ARM代码啊

这里没人回答的,别人上班的哪有功夫回答问题。


ARM汇编分很多种的,首先ARM公司的编译器就和GNU的开源编译器不一样,如果你搞移动平台当然要选GNU的了,IOS和安卓的底层汇编都是这个风格。 

ARM还分 ARM汇编、thumb 汇编

现在cortex -a 都是thumb-2

ARMV6和ARMV7的指令集都不一样,最新的ARMv8更不一样。


我这个是ARMV7-M指令集,手机上A8、A9是ARMV7指令集,

虽然差了各-M但是一不一样,-M有除法指令


fushu: .int 2,3,5,3,-1,-2,-4,-7,-8,-133,-444


shiyan:

ldr r0, = fushu

mov r2, # 11

bl fushugeshu

sub r7, # 8

ldr r0, [r7] @ r0 = 负数个数

ldr r1, [r7, # 4] @ r1 = 正数个数

b tiaochushiyan


fushugeshu: @ 入口r0=数组地址 r2=数据个数 

push {r0-r6,lr}

mov r5, # 0

mov r6, r5

mov r7, sp

sub sp, sp, # 8

ldr r3, = 0x8000000

chongfu:

ldr r4, [r0], # 4

tst r4, r3

ite ne

addne r5, # 1

addeq r6, # 1

subs r2, # 1

bne chongfu

str r5, [sp]

str r6, [sp, # 4]

add sp, # 8

pop {r0-r6,pc}


tiaochushiyan:

b tiaochushiyan

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-04-12
it怎么写复数

ARM汇编求正数负数个数
我这个是ARMV7-M指令集,手机上A8、A9是ARMV7指令集,虽然差了各-M但是一不一样,-M有除法指令 fushu: .int 2,3,5,3,-1,-2,-4,-7,-8,-133,-444 shiyan:ldr r0, = fushu mov r2, # 11 bl fushugeshu sub r7, # 8 ldr r0, [r7] @ r0 = 负数个数 ldr r1, [r7, # ...

arm 汇编 指令看不太懂,高手解释下
<助记符>{<执行条件>}{S} <Rd>,<Rn>{,第2操作数} 有S则表示影响CPSR寄存器的值 条件码助记符:EQ 相等 NE 不相等 CS\/HS 无符号数大于或等于 CC\/LO 无符号数小于 MI 负数 PL 正数或零 VS 溢出 VC 没有溢出 HI 无符号数大于 LS 无符号数小于或等于 GE 有符号数大于或等于 LT 有符...

一条arm 指令如何判断其操作数是有符号数还是无符号数?
也就是你可以用一个最多只有连续两位不等于0的16进制数.如0xff00000,,0x00ff00 0xF100是对的,这样的立即数是会抱错的-->0xabc,0x0b010 也就是你用mov付值的时候 可以这样做,MOV R1,#-1 但你不能这样MOV R1,#0xFFFFFFFFFFFFFFFF 可能是编译器在发现一个负数与正数相加的时候就做了改动 ...

高分悬赏:有关ARM汇编的一点疑问。下面的代码是什么意思?
是先将r1寄存器的值左移2位,然后与r1相加,得到一个地址addr,然后将r3的内容保存到addr所指定的内存地址。SUBS r1,r1,#1 是将r1减1操作,由于SUB后面有个S,该指令将根据结果设置标志位。BPL loop 上面已经说过,当标志位为+,也就是前一条指令r1=r1-1的结果不是负数的话,那么就跳到l...

CMN R1,R2 为什么ARM中汇编CMN完成两个寄存器相加
当第二个操作数为0或者为0x80000000时二者结果不同。比如下面两条指令。CMP Rn,#0;CMN Rn,#0;第一条指令使标志位C值为1,第二条指令使标志位C值为0。下面的指令使R0值加1,判断R0是否为1的补码,若是,则Z置位。CMN R0,#1;

汇编语言程序实现求补码数的绝对值。
回答:如果一个数是X:用8086汇编: not x inc x如果X是正数 X还是X;如果X是负数 X是-x;

汇编语言程序实现求补码数的绝对值。
如果一个数是X:用8086汇编: not x inc x如果X是正数 X还是X;如果X是负数 X是-x;

要求汇编:用“与”运算判断某8位二进制数是奇数还是偶数个1。 (单片机...
BE LOOP_NEXT \/\/若相等则跳转到LOOP_NEXT,否则计数器加1再跳转INC R1,B LOOP_NEXT\/\/到这里结束了,R1如果等于1那么有奇数个“1”,否则偶数个“1”。由于共有8位数,最多0b1000个"1",只有R1最低位为1时才是奇数个“1”,单片机中似乎没有三个操作数的指令。

数学里所有名词的翻译
数字 digit 数 number 自然数 natural number 整数 integer 小数 decimal 小数点 decimal point 分数 fraction 分子 numerator 分母 denominator 比 ratio 正 positive 负 negative 零 null, zero, nought, nil 十进制 decimal system 二进制 binary system 十六进制 hexadecimal system 权 weight, ...

程序状态寄存器CPSR每个位分别代表什么
1、N:当用两个补码表示的带符号数进行运算时,N=1表示运算的结果为负数;N=0表示运算的结果为正数或零 2、Z :Z=1表示运算的结果为零,Z=0表示运算的结果非零。3、C:可以有4种方法设置C的值: -加法运算(包括CMP):当运算结果产生了进位时(无符号数溢出),C=1,否则C=0。-减法运算...

相似回答