728x90
SMALL
fmt1: .asciz "두 정수를 입력하세요: "
fmts: .asciz "%d"
fmtp: .asciz "최대공약수는 %d입니다.\n"
.align 4
.global main
main: save %sp, -96, %sp
set fmt1, %o0
call printf
nop
set fmts, %o0
call scanf
add %fp, -4, %o1
nop
ld [%fp-4],%l0 ! %l0가 입력받은 첫 수 = a
nop
set fmts, %o0
call scanf
add %fp, -8, %o1
nop
ld [%fp-8],%l1 ! %l0가 입력받은 두번째 수 = b
nop
mov 1, %l2 ! int flag = 1
loop: subcc %l0, %l1, %g0 ! l0 - l1 = l3 = a - b
be flag
nop
subcc %l0, %l1, %g0
bg subab ! a > b
nop
! 밑줄부터 else
sub %l1, %l0, %l3 ! l1 - l0 = r = b - a
mov %l0, %l1 ! b = a
mov %l3, %l0 ! a = r
ba loop
nop
subab: sub %l0, %l1, %l3 ! l0 - l1 = r = a - b
mov %l1, %l0 ! a = b
mov %l3, %l1 ! b = r
mov 0, %l2 ! flag = 0
ba loop
nop
flag: cmp %l2, 1
be print_a
nop
set fmtp, %o0 ! print_b
mov %l1, %o1
call printf
nop
ret
restore
print_a:set fmtp, %o0 ! print_a
mov %l0, %o1
call printf
nop
ret
restore
728x90
LIST
'학교 과제' 카테고리의 다른 글
SPARC 어셈블리 언어- 화씨온도를 섭씨온도로 바꾸기 (3) | 2022.12.02 |
---|---|
SPARC 어셈블리 언어- 윤년과 평년 (0) | 2022.12.02 |
알고리즘 분석 - 트리 (0) | 2021.11.24 |
SPARC 어셈블리 언어- 문자열 출력 (2) | 2021.10.09 |