ARM指令写 R2=R1/3 各位老大帮下忙这题咋做啊 4号就考了

发布于2022-03-21 15:17:20
2个回答
admin
网友回答2022-03-21
MOV R1,#0 ;寄存器R1=0 REPEAT SUB R2,R2,#3 ;R2=R2-3 CMP R2,#3 ;比较R2和3的大小 ADDHS R1,#1 ;如果R2>3,则R1=R1+1 BHS REPEAT ;如果R2>3,则跳转到REPEAT重复进行减法运算
admin
网友回答2022-03-21
因为arm指令的操作数只能为寄存器,所以要实现r1=r2*33,需要做一下变换: r1=r2*33=r2*(32+1)=32*r2+r2=(r2所以只要用一个加法指令就可以了: add r1, r2, r2,lsl#5 ;表示r1=r2+r2 像类似的运算,现在的编译器都可以自动转换成带移位的加法,这样可以生成更快的代码.

回到
顶部