2017-06-21 5 views
0

Also das ist was ich bisher habe Ich bin mir nicht sicher, wo ich von hier abzweigen oder einfach die Antwort ausdrucken soll. Ich habe versucht, die Nachricht auszudrucken, aber ohne Erfolg. Gibt es eine Möglichkeit, sowohl SLT als auch Branching zu verwenden?checking Wenn eine Zahl dann größer oder kleiner ist dann benutze slt und verzweige mit mars

.data 
    message1: .asciiz "The number is less than. :" 
    message2: .asciiz "/nThe number is greater than. :" 

.text 
    main: 
    addi $t0, $zero, 20 
    addi $t1, $zero, 5 

slt $s0, $t0, $t1 
beq $s0, $zero, printmessage1 

sge $s0, $t0, $t1 
beq $s0, $zero, printmessage2 


li $v0, 10 
syscall 

printmessage1: 
li $v0 4  #print out message1 
la $a0 message1 
syscall 

printmessage2: 
li $v0 4  #print out message1 
la $a0 message2 
syscall 
+0

@ Adam Sie Hast du irgendwelche Ideen? – Smitty

Antwort

0

slt $t1,$t2,$t3 Weniger als: Wenn $t2 weniger als $t3 ist, dann setzen Sie $t1 auf 1 sonst $t1 auf 0 gesetzt

Eine Lösung, die sehr einfacher ist, und die Verwendung von Befehls reduzieren ist blt oder bgt

zu verwenden

bgt $t1,$t2,label Verzweigung, falls Größer als: Zweig an Label-Anweisung, wenn $t1 größer als $t2 ist

blt $t1,$t2,label Zweig, wenn weniger: Zweig Aussage auf Etikett, wenn $t1 weniger als $t2 ist, würde

.data 
    message1: .asciiz "The number is less than. :" 
    message2: .asciiz "/nThe number is greater than. :" 

    .text 
    main: 
    addi $t0, $zero, 20 
    addi $t1, $zero, 5 

    blt $t0, $t1,printmessage1 
    b printmessage2 


    li $v0, 10 
    syscall 

    printmessage1: 
    li $v0 4  #print out message1 
    la $a0 message1 
    syscall 

    printmessage2: 
    li $v0 4  #print out message1 
    la $a0 message2 
    syscall 
Verwandte Themen