지금 PCSpim 을 이용하여 n값을 콘솔창에 입력시키면
n! = (결과)
sum = (결과)
이렇게 결과가 나와야 하는 어셈블리 코드를 짜고있는데..
하나씩은 하는 방법을 알겠는데 두 개가 동시에 실행되는 방법은 어떻게 해야하는지 모르겠어요 ㅠ
도움 부탁드립니다,
아래는 제가 짠 코드입니다..
.data
str1: .asciiz "input n (수를 넣고 Enter치시오) = "
str2: .asciiz " ! = "
str3: .asciiz " sum = "
newline: .asciiz "\n"
.text
main: li $v0, 4 # load immed. (pseudo)
la $a0, str1 # load address (pseudo)
syscall
li $v0, 5
syscall
move $a0, $v0 # move (pseudo)
addi $sp, $sp, -4
sw $ra, 0($sp)
jal fact
add $s0, $zero, $v0
j Exit
fact: slti $t0, $a0, 1
beq $t0, $zero, L1
addi $v0, $zero, 1
jr $ra
sum: slti $t0, $a0, 2
beq $t0, $zero, L2
addi $v0, $zero, 1
jr $ra
L1: addi $sp, $sp, -8
sw $ra, 4($sp)
sw $a0, 0($sp)
addi $a0, $a0, -1
jal fact
lw $a0, 0($sp)
lw $ra, 4($sp)
addi $sp, $sp, 8
mul $v0, $a0, $v0 # multiply (pseudo)
jr $ra
L2: addi $sp, $sp, -8
sw $ra, 4($sp)
sw $a0, 0($sp)
addi $a0, $a0, -1
jal sum
lw $a0, 0($sp)
lw $ra, 4($sp)
addi $sp, $sp, 8
add $v0, $a0, $v0 # addition (pseudo)
jr $ra
Exit: addi $v0, $zero, 1
add $a0, $a0, $zero
syscall
addi $v0, $zero, 4
la $a0, str2
syscall
addi $v0, $zero, 1
add $a0, $s0, $zero
syscall
addi $v0, $zero, 4
la $a0, newline
syscall
lw $ra, 0($sp)
addi $sp, $sp, 4
jr $ra
n! = (결과)
sum = (결과)
이렇게 결과가 나와야 하는 어셈블리 코드를 짜고있는데..
하나씩은 하는 방법을 알겠는데 두 개가 동시에 실행되는 방법은 어떻게 해야하는지 모르겠어요 ㅠ
도움 부탁드립니다,
아래는 제가 짠 코드입니다..
.data
str1: .asciiz "input n (수를 넣고 Enter치시오) = "
str2: .asciiz " ! = "
str3: .asciiz " sum = "
newline: .asciiz "\n"
.text
main: li $v0, 4 # load immed. (pseudo)
la $a0, str1 # load address (pseudo)
syscall
li $v0, 5
syscall
move $a0, $v0 # move (pseudo)
addi $sp, $sp, -4
sw $ra, 0($sp)
jal fact
add $s0, $zero, $v0
j Exit
fact: slti $t0, $a0, 1
beq $t0, $zero, L1
addi $v0, $zero, 1
jr $ra
sum: slti $t0, $a0, 2
beq $t0, $zero, L2
addi $v0, $zero, 1
jr $ra
L1: addi $sp, $sp, -8
sw $ra, 4($sp)
sw $a0, 0($sp)
addi $a0, $a0, -1
jal fact
lw $a0, 0($sp)
lw $ra, 4($sp)
addi $sp, $sp, 8
mul $v0, $a0, $v0 # multiply (pseudo)
jr $ra
L2: addi $sp, $sp, -8
sw $ra, 4($sp)
sw $a0, 0($sp)
addi $a0, $a0, -1
jal sum
lw $a0, 0($sp)
lw $ra, 4($sp)
addi $sp, $sp, 8
add $v0, $a0, $v0 # addition (pseudo)
jr $ra
Exit: addi $v0, $zero, 1
add $a0, $a0, $zero
syscall
addi $v0, $zero, 4
la $a0, str2
syscall
addi $v0, $zero, 1
add $a0, $s0, $zero
syscall
addi $v0, $zero, 4
la $a0, newline
syscall
lw $ra, 0($sp)
addi $sp, $sp, 4
jr $ra
좋은조임아니코드네요설레세요