如何解决在汇编中编写一个子例程,将绝对值大于正值 X
我必须在汇编中编写一个子例程,将绝对值大于正值 X 的序列元素替换为 0,返回修改元素的数量,但我不知道如何开始。有人可以帮忙吗?
所以我实际上开发了一个代码,我们有一个输入来测试它是否工作正常。输入是 {7,-8,-23,56,20,-10,40},因为输出应该是修改了 3 个元素,但是当我运行它时,我的输出说只有 2 个被修改了当我读取结果向量时,我得到 {7,0},这意味着实际上修改了 3 个。
这是我开发的汇编代码:
CheckABS:
MOV W4,#0
CBZ W1,FIM
Ciclo: LDR W3,[X2],4
CMP W3,W0 //bigger than superior limit?
B.GT NOK
CMN W3,W0 //lower than inferior limit?
B.LT NOK
B OK
NOK:
STR XZR,[X2,-4]
ADD W4,W4,1
OK:
SUBS W1,W1,1
B.NE Ciclo
FIM: MOV W0,W4
ret
解决方法
您的数据显然是一个 32 位字数组 (int
),但 STR XZR,[X2,-4]
是 64 位存储,因为您使用的是 64 位寄存器 XZR
。因此,它不仅会覆盖您想用 0 替换的 32 位字,还会覆盖下一个。我想你更想要STR WZR,-4]
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。