用ARM汇编语言编写程序实现:求寄存器R0和R1中两个整数的最大公约数并将结果存储在R0中

用ARM汇编语言编写程序实现:求寄存器R0和R1中两个整数的最大公约数并将结果存储在R0中,第1张

原理

辗转相除法

 悄兄尺 当两个数都较大时,采用辗转相除法比较方便.其方法是:

以小数除大数,如果能整除,那么小数就是所求的最大公约数.否则就用余数来除刚才的除数;再用这新除法的余数去除刚才的余数.依此类推,直到一个除法能够整除,这时作为除数启高的数就是所求尘渗的最大公约数.

CMP r0,r1

MOVCC r3,r0

MOVCC r0,r1

MOVCC r1,r3

S0

CMP r1,#0

BEQ S3

S1

CMP r0,r1

BCC S2

SUB r0,r0,r1

B S1

S2 MOV r3,r0

MOV r0,r1

MOV r1,r3

B S0

S3

END

没调试过,不知道程序有什么错误没有。

SBC指令,使竖答用进位标志来表示借位,即可实现大于32位数的减正纤贺法举例:SUB R0,R4,R8

SUB R1,R5,R9

SUB R2,R6,R10

SBC,R3,R7,R11

说明两个128位的数分别放举派在R4-R7和R8-R11中,结果存入R0-R3中

cortex-M0只是个核山裂,你要知道你用的什么型号的芯片比如ST公司的STM32F0XX,一般Keil MDK-ARM,你玩51用的是KEIL C51,你去下个KEIL MDK,都属于在一个KEIL里,建工程的逗穗闭时候选择相应的芯片型号就行了,不过一般都是用官方给的固件库来开发比较快,不用总算寄存器的值了。去找个M0的论坛吧,我之前一种玩M3内核的STM32F1XX,这几天比赛完了就打算玩玩M0,新唐最近出了一个专门用于音乐播放的M0,族御希望我的回答能对你有帮助。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12303259.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存