עבור לתוכן

MIPS- הלואי ומשהו יעזור

Featured Replies

פורסם

האמת היא שאני לא מכיר את התוכנה שאת מנסה להריץ איתה (למען האמת אין לי מושג מה זה mips), אבל זה נראה שהקובץ שלך (targil.s) שמור בקידודunicode, שהתוכנה לא יודעת להתמודד איתו.

באיזו עורך את משתמשת? אם את יכולה, נסי לשמור את הקובץ בקידוד ANSI.

פורסם
  • מחבר

תודה הסתדר.

שאלה חדשה:

כתבתי תכנית שמדפיסה שלשות פתגוריות עד ערך N, איך אני הופכת את התכנית לפרוצדורה שתקבל את N ב$a0, ומחזירה את max ב$v0, ואת count ב $v1?


.data

str: .asciiz ","
str1: .asciiz "\n"

count: .word 0
max: .word 0
valN: .word 15


.text
main:

lw $s1, valN
lw $s2, count
lw $s3, max
la $s4, str
la $s5, str1

li $t1, 0 # x
li $t2, 0 # y
li $t3, 0 # z

mult $s1, $s1
mflo $t7
add $t7, $t7, $t7 # 2*N^2

Loopx:
addi $t1, $t1, 1 # x++
li $t2, 0 # y=0
slt $t0, $t1, $s1
beq $t0, $zero, Exit

Loopy:
addi $t2, $t2, 1 # y++
li $t3, 0 # z=0
slt $t0, $t2, $s1
beq $t0, $zero, Loopx

Loopz:
addi $t3, $t3, 1 # z++
slt $t0, $t3, $t7
beq $t0, $zero, Loopy

mult $t1, $t1 # x^2
mflo $t4

mult $t2, $t2 # y^2
mflo $t5

mult $t3, $t3 # z^2
mflo $t6

add $t0, $t4, $t5
bne $t0, $t6 , Loopz # if(x^2+y^2==z^2)

print:

li $v0, 1
move $a0, $t1
syscall

li $v0, 4
la $a0, str
syscall

li $v0, 1
move $a0, $t2
syscall

li $v0, 4
la $a0, str
syscall

li $v0, 1
move $a0, $t3
syscall

li $v0, 4
la $a0, str1
syscall

addi $s2, $s2, 1 # count++
slt $t0, $s3, $t3 # if(z<max)
beq $t0, $zero, Loopz
add $s3, $t3, $s0 # max =z

j Loopz


Exit:
li $v0, 4
la $a0, str1
syscall

li $v0, 1 # print max
move $a0, $s3
syscall

li $v0, 4
la $a0, str1
syscall

li $v0, 1 # print count
move $a0, $s2
syscall


li $v0, 10
syscall # end of program

פורסם
  • מחבר

אף אחד לא מכיר???? ?

צריכה עזרה דחוף!! :nixweiss:

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים