Μηπως μπορει καποιος να μου μεταφρασει τον παρακατω αλγοριθμο σε γλωσσα assembly καθως δεν μου ολοκληρωνεται το compilation με επιτυχια!!
do {
Εμφανισε μηνυμα "Αριθμόσ: ";
Διαβασε αριθμόσ1;
αποτελεσμα= αριθμόσ1;
do {
Εμφανισε μηνυμα "Τελεστης: ";
Διαβασε τελεστη;
if (τελεστης δεν ειναι ‘+’, ‘-’, ‘*’, ‘/’, ‘%’, ‘=’) {
Εμφανισε μηνυμα λαθους ;
Βγεσ από το πρόγραμμα;
}
if (ο τελεστης δεν ειναι ισον) {
Εμφανισεε μηνυμα "Αριθμός: ";
Διαβασε αριθμό2;
if (ο αριθμός2 ειναι μηδεν και ο τελεστης ειναι
διαιρεση η υπόλοιπο) {
Εμφανισε μηνυμα λαθους ;
Βγεσ από το πρόγραμμα;
}
αποτελεσμα = αποτελεσμα «τελεςτης» αριθμός2;
}
} while (ο τελεςτης δεν εύναι ισον)
Εμφανισε την τιμη της αριθμητικης παραστασης;
Ρώτησε το χρηστη αν θελει να συνεχισει με μια νεα παρασταση;
Διαβασε την απαντηση του χρηστη;
} while (Ο χρηστης θελει να συνεχισει με μια νεα παρασταση)
ΕΥΧΑΡΙΣΤΩ ΕΚ ΤΩΝ ΠΡΟΤΕΡΩΝ!!!!!!
Εμφάνιση 1-4 από 4
-
17-11-16, 18:30 Mεταφραση σε γλωσσα assembly #1
-
18-11-16, 02:29 Απάντηση: Mεταφραση σε γλωσσα assembly #2
Αν δεν μας δείξεις τι έχεις κάνει, αν δεν μας γράψεις ποιο πρόγραμμα χρησιμοποιείς, αν δεν μας πεις για ποιόν επεξεργαστή πρόκειται κανείς δεν μπορεί να σε βοηθήσει. Βασική προϋπόθεση είναι να μας δείξεις τι έχεις κάνει.
ουδέν μονιμότερο του προσωρινού
-
18-11-16, 14:30 Απάντηση: Mεταφραση σε γλωσσα assembly #3
Συντασσω τον κωδικα στο mars για επεξεργαστη MIPS!!Το βασικο θεμα μου ειναι οτι δεν καταφερνω να συνταξω σωστα τα if και τα while! Γι αυτο εχω χρησιμοποιησει ελληνικες προτασεις...
.text
main:
li $v0, 4 # system call code for printing string = 4
la $a0, string1 # load address of string to be printed into $a0
syscall
li $v0,5 #read integer
syscall
sw $v0, intvalue # store integer
lw $t0, intvalue # store in register t0 the value of the int
sw $t0, sum # variable called sum has the value of the int
loop: li $v0, 4 # print string
la $a0, string2
syscall
li $v0, 12 # read character
la $a0, opervalue
sw $v0, opervalue
lw $t1, opervalue
prepei na apothikeusw ton telesti 1 kai na kalesw to ison gia na mporesw na ta sugkrinw
syscall
bne $t1, oper6 , getNewNumber
oso o telestis den einai ison
li $v0, 4
la $a0, continue
syscall
li $v0,5
an auto pou eipe einai 0, pame apo tin arxi
-
23-11-16, 12:39 Απάντηση: Mεταφραση σε γλωσσα assembly #4Κώδικας:
.data msg1: .asciiz "Αριθμός: " msg2: .asciiz "Τελεστης: " .text .globl main main: #Print a message. li $v0 4 la $a0 msg1 syscall #Read an integer and store it on $t0. li $v0 5 syscall move $t0 $v0 #Print a message. li $v0 4 la $a0 msg2 syscall #Read an integer and store it on $t1. # 0 = + # 1 = - # 2 = * # 3 = / # 4 = % # 5 = = li $v0 5 syscall move $t1 $v0 bne $t1 0 exit_program bne $t1 1 exit_program bne $t1 2 exit_program bne $t1 3 exit_program bne $t1 4 exit_program bne $t1 5 exit_program exit_program: li $v0 10 syscall
(Δεν το έκανα όλο, πάρε μια ιδέα και προσπαθησέ να το κάνεις.)
Tip:
Φτιάξε το πρόγραμμα πρώτα σε μια γλώσσα υψηλού επιπέδου και μετά πάνε σε assembly μεταφράζοντας το γραμμή προς γραμμή, μην προσπαθείς να το φτιάξεις απευθείας σε assembly.Τελευταία επεξεργασία από το μέλος babaliaris : 23-11-16 στις 12:45.
Παρόμοια Θέματα
-
Μετάφραση C σε assembly mips "μηχανικά".
Από babaliaris στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμούΜηνύματα: 3Τελευταίο Μήνυμα: 19-11-16, 14:36
Bookmarks