Assembly 我正试图做一个程序,找出两个正整数的GCD。我做错了什么?I';我在做覆盆子皮3 你为什么认为这是错误的?是数学问题还是编程问题?我一直认为GCD是0,而我只是让程序工作而已@dannyc30酷!把你找到的答案作为你自己问题的答案吧!如果您用文字解
我正试图做一个程序,找出两个正整数的GCD。我做错了什么?I';我在做覆盆子皮3Assembly 我正试图做一个程序,找出两个正整数的GCD。我做错了什么?I';我在做覆盆子皮3 你为什么认为这是错误的?是数学问题还是编程问题?我一直认为GCD是0,而我只是让程序工作而已@dannyc30酷!把你找到的答案作为你自己问题的答案吧!如果您用文字解,assembly,arm,Assembly,Arm,我正试图做一个程序,找出两个正整数的GCD。我做错了什么?I';我在做覆盆子皮3 你为什么认为这是错误的?是数学问题还是编程问题?我一直认为GCD是0,而我只是让程序工作而已@dannyc30酷!把你找到的答案作为你自己问题的答案吧!如果您用文字解释原始代码中的错误,这将是一个更好的答案。 .cpu cortex-a53 .fpu neon-fp-armv8 .data message1: .asciz "Enter a positive integer: &quo
你为什么认为这是错误的?是数学问题还是编程问题?我一直认为GCD是0,而我只是让程序工作而已@dannyc30酷!把你找到的答案作为你自己问题的答案吧!如果您用文字解释原始代码中的错误,这将是一个更好的答案。
.cpu cortex-a53
.fpu neon-fp-armv8
.data
message1: .asciz "Enter a positive integer: "
message2: .asciz "Enter another positive integer: "
input: .asciz "%d"
output: .asciz "The GCD is: %d\n"
.text
.align 2
.global main
.type main, %function
main:
push {fp,lr}
add fp, sp, #4
@ printing out message
ldr r0, =message1
bl printf
@ getting user input
ldr r0, =input
sub sp, sp, #4
mov r1, sp
bl scanf
ldr r5, [sp]
ldr r0, =message2
bl printf
@ getting user input
ldr r0, =input
sub sp, sp, #4
mov r1, sp
bl scanf
ldr r6, [sp]
compare:
cmp r5, r6
bge loop
b swap
swap:
add r5, r5, r6
sub r6, r5, r6
sub r5, r5, r5
loop:
udiv r4, r5, r6
mul r4, r4, r6
sub r4, r5, r4
cmp r4, #0
beq doneLoop
mov r5, r6
mov r6, r5
b loop
doneLoop:
ldr r0, =output
bl printf
mov r1, r4
bl printf
sub sp, fp, #4
pop {fp, pc}
.cpu cortex-a53
.fpu neon-fp-armv8
.data
message1: .asciz "Enter a positive integer: "
message2: .asciz "Enter another positive integer: "
output: .asciz "The GCD is: %d\n"
input: .asciz "%d"
.text
.align 2
.global main
.type main, %function
main:
push {fp,lr}
add fp, sp, #4
@ printing out message
ldr r0, =message1
bl printf
@ getting user input
ldr r0, =input
sub sp, sp, #4
mov r1, sp
bl scanf
ldr r5, [sp]
ldr r0, =message2
bl printf
@ getting user input
ldr r0, =input
sub sp, sp, #4
mov r1, sp
bl scanf
ldr r6, [sp]
compare:
cmp r5, r6 @ r5 - r6
bge loop
swap:
@ swap r5 and r6
add r5, r5, r6
sub r6, r5, r6
sub r5, r5, r6
loop:
@ calculates the remainder
udiv r4, r5, r6
mul r4, r4, r6
sub r4, r5, r4
cmp r4, #0
beq doneLoop
mov r5, r6
mov r6, r4 @ r6 is the remainder
@b compare
@ re run the loop
b loop
doneLoop:
@ print output message
ldr r0, =output
mov r1, r6 @ moves value of r6 into %d of output message
bl printf
sub sp, fp, #4
pop {fp, pc}