Tuo IP: 107.22.156.205  
Cerca nel sito:
Home Ansi C ASP HTML Java JavaScript Visual Basic C++ JSP VB.Net
Altri linguaggi
* AppleScript
* Assembler MIPS
* Fortran
* Lisp
* Pascal
* Perl
* Python
* SQL
* VBScript
* VBA

Servizi
* Tips
* Tools
* Webmasters
* Domini e Posta

Articoli tecnici
* Oracle Sequence
* Java Servlet
* Compressione File
* Le Socket di Berkeley
* Immagini x PC
* Errori di Email
* Flash del BIOS
* No Banner
* Codici a barre
* Codici Colori
* Estensione domini
* Connessione ODBC
* Tabella Codici ASCII
* Tabella ISO-8859-1
Altro su Tips
La macchina del caffè
Versione Stampabile
Stampa
Torna Indietro
Linguaggio: Assembler MIPS Autore: Alby Raghi Data Archiviazione: 19/05/2007


.data
vettore: .word 10,5,10,20,50,100,200,5000 # tipo di monete ,sono 6: 5 cent,10 cent ecc....
msg1: .asciiz " > "
msg2: .asciiz " > coin reijected"
msg3: .asciiz " > coin accepted: "
msg4: .asciiz " > inserito: "
msg5: .asciiz " >posizione: "
msg6: .asciiz " [ OK ] seleziona caffè: "


.text

main:

li $v0,4
la $a0,msg1
syscall

li $v0,5
syscall
li $s1,0 # metto di defoult la posizone del vettore=0






move $s0,$v0
move $t5,$s0 #salvo in t5 il valore
la $s2,vettore
lw $s1,0($s2)
beqz $s1,no #se nn esiste un vettore si ferma

li $s1,1 #metto uguale a 1


loop:
li $t4,6
addi $s2,4

lw $s3,0($s2)
beq $s0,$s3,fine
addi $s1,1


beq $s1,$t4,no
b loop

no:
li $v0,4
la $a0,msg2
syscall
b out

out:


j main


fine:
li $t8,90 #assegno costo caffè
li $t7,91 # limite da nn superare
add $t9,$t9,$t5 #do il valore del credito a t9
beq $t9,$t8,bibita # 90c giusti vai alla consegna
bgt $t9,$t7,troppo #+ di 90 dai il resto



li $v0,4
la $a0,msg3
syscall
li $v0,4
la $a0,msg5
syscall
li $v0,1
move $a0,$s1
syscall
li $v0,4
la $a0,msg4
syscall
li $v0,1
move $a0,$t9
syscall
b out

bibita:
li $v0,4
la $a0,msg6
syscall
li $v0,4
la $a0,msg3
syscall
li $v0,4
la $a0,msg5
syscall
li $v0,1
move $a0,$s1
syscall
li $v0,4
la $a0,msg4
syscall
li $v0,1
move $a0,$t9
syscall

li $t9,0 #reseto i valori
li $t5,0
b out



troppo: # superando i 90 cents la macchina terra il resto in memoria...





sub $t9,$t9,$t8 #togli 90 al valore ,poi torna a capo col resto
li $v0,4
la $a0,msg6
syscall
li $v0,4
la $a0,msg3
syscall
li $v0,4
la $a0,msg5
syscall
li $v0,1
move $a0,$s1
syscall
li $v0,4
la $a0,msg4
syscall
li $v0,1
move $a0,$t9
syscall

j main

#by Raghi#





Note: chiede di inserire interi che appartengono all'array :10,20,50,100,200,500

(come se fossero i centesimi)

li somma, quando arriva a novanta fa valore inserito - 90 = resto + caffè

se il resto > 0 lo accredita per la successiva chiamata…
Codice testato con: Spim per Windows Versione: 1.0
Sito Produttore: http://www.assembler.com/
--------
Guide
PDF
* Hardware
* Guida all'MS DOS
* Storia di Internet
* Usabilità siti Web
* Programmazione Linux (6.852 KB)
* PHP
* Scripting Shell Bash
* HTML
* MySQL
* Ansi C
* Java 2

Ordinamenti
* Bubble Sort
* Insertion Sort
* Merge Sort
* Quick Sort
* Selection Sort
* Shell Sort
(La visualizzazione degli esempi richiede Virtual Java Machine)



Miscellanea
* Download
* Conversioni misure
* Glossario
* Siti lavoro

Chi c'è online
In questo momento ci sono 10 Visitatori