Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    185

    Problema con esercizio vettore di caratteri assembly

    Ciao a tutti,
    per un esercizio universitario devo fare un vettore contenente massimo 20 caratteri e poi stampare quelli che compaiono un numero dispari di volte.
    Il codice, che ho fatto e che riporto sotto, mi chiede quanti elementi voglio inserire e me li fa inserire e poi fa il conteggio di quante volte i caratteri che ho inserito compaiono nel vettore, il problema è che mi fa il conteggio di ogni carattere del vettore, nel senso che se ad esempio inserico il vettore "qqqqa" l'output è:
    codice:
    Carattere che sto controllando --> q le volte che compare il carattere sono: 4
    Carattere che sto controllando --> q le volte che compare il carattere sono: 4
    Carattere che sto controllando --> q le volte che compare il carattere sono: 4
    Carattere che sto controllando --> q le volte che compare il carattere sono: 4
    Carattere che sto controllando --> a le volte che compare il carattere sono: 1
    codice:
    ################# Data segment #####################
    .data
    	input:	.asciiz "\nInserire un carattere --> "
    	end:	.asciiz "\nFine del programma!"
    	output:	.asciiz "\n\nI caratteri inseriti sono --> "
    	howMany:	.asciiz "\nQuanti elementi vuoi inserire? --> "
    	check:	.asciiz "\nCarattere che sto controllando --> "
    	compare: .asciiz " le volte che compare il carattere sono: "
    	array:	.space 20	#alloca 20 byte (ogni carattere vale 1 byte)
    	
    ################# Code segment #####################
    .text
    .globl main 
    
    main:
    	li $s0, 0	#uso $s0 come indice dell'array
    	li $s1, 19	#max elementi memorizzabili
    numEl:
    	la $a0, howMany
    	li $v0, 4
    	syscall
    	
    	li $v0, 5
    	syscall
    	
    	move $s2, $v0
    	bge $s2, 21, numEl
    	
    inserimento:
    	la $a0, input	#stampa della stringa input	
    	li $v0, 4 		
    	syscall
    	
    	la $t0, array	#$t0 prende l'indirizzo dell'array
    	li $v0, 12
    	syscall
    	
    	move $t1, $v0
    	sb $t1, array($s0)
    	addi $t0,$t0, 1
    	addi $s0, $s0, 1
    	bne $s0, $s2, inserimento
    
    	#la $a0, output	#stampa della stringa output	
    	#li $v0, 4 		
    	#syscall
    print:	
    	#addi $s0, $s0, -1
    	#lb $a0, array($s0)
    	
    	#li $v0, 11
    	#syscall
    	
    	#bne $s0, $zero, print
    	la $s0, 0
    conteggio:	
    	lb $a0, array($s0)
    	beq $a0, $zero, exit
    	la $t2, 0
    	la $a0, check
    	li $v0, 4
    	syscall
    	
    	lb $a0, array($s0)
    	li $v0, 11
    	syscall
    	move $s1, $a0 #contiene il carattere che sto controllando
    	
    conto:
    	lb $a0, array($s3)
    	move $t0, $a0
    	beq $t0, $zero, carattereSuccessivo
    	beq $s1, $t0, incremento
    	addi $s3, $s3, 1
    	j conto
    incremento:
    	addi $t2, $t2, 1
    	addi $s3, $s3, 1
    	j conto
    carattereSuccessivo:
    	addi $s0, $s0, 1
    	
    fine:
    	la $a0, compare
    	li $v0, 4
    	syscall
    	move $a0, $t2
    	li $v0, 1
    	syscall
    	la $s3, 0
    	j conteggio
    exit:	
    	la $a0, end	#stampa della stringa fine	
    	li $v0, 4 		
    	syscall
    
    	li $v0, 10	#uscita dal programma
    	syscall
    Come posso fare a dirgli di non ricontare i caratteri che ho gia inserito?
    Grazie a tutti in anticipo

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    185
    nessuno che può aiutarmi? Ma in questo mondo nessuno fa assembler? avrò scritto in millemila forum

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Sì, ma l'assembly non è un unico linguaggio ... dipende tutto dal processore usato.

    Se vuoi, possiamo parlare di assembly 6502, Z80, 8080, 80x86, PIC16/18/32 ma non SPIM ... mi dispiace.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    185
    Stiamo usando il MIPS

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da dennis87
    Stiamo usando il MIPS
    Sì ... per il MIPS ... (lo SPIM è il simulatore ...).

    Il MIPS è usato in ambito universitario ... potrai trovare aiuti più facilmente sui forum degli studenti ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.