/ / MIPS Program z liczbą całkowitą i przykładem argumentów - argumenty, mips

Program MIPS z liczbą całkowitą i argumentem - argumenty, mips

Utknąłem na ćwiczeniu i nie jestem pewien, jak kontynuować. Oto ćwiczenie:

Napisz procedurę języka asemblera MIPS, test,który przyjmuje 2 liczby całkowite jako argumenty i zwraca 0, jeśli liczby całkowite są równe, 1, jeśli pierwsza jest mniejsza niż druga, i 2, jeśli pierwsza jest większa niż drugi. Napisz program w języku asemblera MIPS, który wczyta 2 liczby całkowite, a następnie wywoła procedurę Test wyświetla jeden z następujących komunikatów: Liczby całkowite są równe Pierwsza liczba całkowita jest mniejsza niż druga Pierwsza liczba całkowita jest większa niż druga

Jaki byłby tego przykład? Mips jest dla mnie bardzo mylący, ponieważ jestem przyzwyczajony do Javy. Dziękuję.

EDYCJA: Oto program, którego używam jako podstawy, ponieważ nie jestem pewien, od czego zacząć:

.data
str1: .asciiz "Please Enter Integer 1: "  # a
str2: .asciiz "Please Enter Integer 2: "  # a
str3: .asciiz "The sum is "  # a
newline: .asciiz "n"  # g

.text
main: addi $v0, $zero, 4
la $a0, str1
syscall

addi $v0, $zero, 5
syscall

add $s0, $zero, $v0

addi $v0, $zero, 4
la $a0, str2
syscall

addi $v0, $zero, 5
syscall

add $s1, $zero, $v0

L1: beq $s1, $zero, cont
addi $v0, $zero, 1
add $a0, $s0, $zero
addi $s1, $s1, -1
syscall
j L1

cont: addi $v0, $zero, 4
la $a0, newline
syscall

addi $v0, $zero, 10
syscall

jr $ra

Odpowiedzi:

-1 dla odpowiedzi nr 1

Aby sprawdzić, czy wartość jednego rejestru jest mniejsza niż wartość innego rejestru, możemy użyć instrukcja set-on-less-than, która również ma odpowiednik set-on-than-natychmiastowy.

slt $ r0, $ r3, $ r4 () jeśli r3 <r4, r0 jest ustawione na 1 w przeciwnym razie r0 jest ustawione na 0 slti $ r0, $ r3, 10 () jeśli r3 <10, r0 jest ustawione na 1 w przeciwnym razie r0 jest ustawione na 0

jednak slt i slti są podobne do beq lub bne,są dwie różnice. Najpierw testują czy jedna wartość jest mniejsza od innej wartości, a po drugie, nie rozgałęziają się na niektóre adres, ale zamiast tego ustaw flagę zapisaną w pierwszym operandzie.