이것은 MIPS에서의 첫 번째 시도이며 가능한 알고리즘에 대한 의사 코드 설명을 디자인했습니다. 다음과 같이 코드의 개요는 다음과 같습니다1에서 N까지의 정수를 찾는 프로그램을 어떻게 디자인 할 것입니까? N은 키보드에서 읽은 값입니까?
main: Print: "Please input a value for N ="
read v0
If(v0 >0)
{
t0 = 0
while(v0 > 0) do
{
t0 = t0 + v0
v0 = v0 +v0 -1
}
print: The sum of integers from 1 to N is = ", t0
go to main
}
else
print: "Honest Abe"
때문에,이 개요와 함께, 내가 MIPS에이 번역을 시도하지만, 전체 저장 변수의 다소 만든 나를 혼란에서 그들을 읽고. 실제 코드의 내 시도는 여기에서
.data
Prompt: .asciiz "\n Please input a value for N="
Result: .asciiz "\n The sum of integers from 1 to N is "
Bye: .asciiz "\n ***Honest Abe***"
.text
main:
li $v0,4 #load $v0 with print_string code
la $a0, Prompt #load $a0 with the message to be displayed
syscall
bgz $v0, else
li $t0, 0
while:
bgz $v0
add $t0,$t0,$v0
addi $v0,$vo -1
, 나는 루프에 대한이 MIPS에서 어떻게 작동하는지 이해하지 못하는이도 올바른 접근 방식의 경우 이해가 안 돼요. 숫자로 읽은 다음 정수를 저장한다는 아이디어는 내 머리 속에 처리되지 않습니다. 또한 루프에 적절한 명령을 사용하고 있는지 확신 할 수 없습니다. 이 질문에 도움이 될 것입니다!
한 가지 방법은 조건 (J있는 동안)없이 레이블로 점프를하고있다. 다른 하나는'slt'와'beq' 명령을 사용하여 조건으로 반복하거나'while (v0> 0)'에 대해 단순히'bgt'입니다. – Coursal
우선, (n/2) * (n min + n max)이므로 귀하의 경우 (1에서부터 계산할 때) 산술 계열에 대한 방정식은 (n/2)이므로 루프를 필요로하지 않습니다. * (1 + n) –