ygfdtcky

download ygfdtcky

of 2

description

fsdjhkfhlkyuflf

Transcript of ygfdtcky

# Prctica 1 Introduccion a MIPS (Uso de la memoria y llamadas al sistema).datadato1: .word 40dato2: .word -2array: .word -4,21,37,50,70,-7,77,56,200,-1,5,8,25,3920,-1000,0string: .asciiz "Esto es una cadena y lo siguiente es un nmero\n"string1: .asciizinvitanum: .asciiz "\nIntroduce un nmero\n"invitacad: .asciiz "\nIntroduce una cadena de carcteres\n"nulo: .asciiz "\n"char: .byte 'B' charB: .byte 66.globl main.textmain: la $a0,string # Mostramos por consola una cadena li $v0,4syscalllw $a0,dato1 #Cargamos un entero desde el segmento de datosli $v0,1 # Y lo mostramos por consola syscallla $a0,invitanum # Invitamos a introducir un entero li $v0,4syscallli $v0,5 # leemos un entero introducido por teclado syscallmove $a0,$v0li $v0,1 # y lo mostramos por consola syscallli $t1,0 # Muestra un elemento desde un array de enteroslw $a0,array($t1)li $v0,1syscalllb $a0,char # Mostramos un carcter desde el segmento de datos li $v0,11syscalllb $a0,charB # Mostramos un carcter desde el segmento de datosli $v0,11syscallli $t2,2 # Mostramos un carcter de una cadena de datoslb $a0,string($t2)li $v0,11syscallla $a0,invitacad #Invitamos a introducir una cadena li $v0,4syscallli $v0,8 #Leemos una cadena de caracteresla $a0,string1li $a1,9syscallli $v0,4 # La mostramos por consolasyscall la $t2,string1 #$t2=direccin de vector a partir de t2 se carga todo el vector es decir t2 sera v[0] en t2+1(contamos de 1 en 1) sera v[1]...) li $t3,0 # un li 0 para ponerlo directamente a 0 t3; t3=0 ponemos a 0 t3 donde iremos guardando la cuenta de 'a' li $t0,0 #$t0=0 el contador de veces que se repite el bucle li $t1,7 #$t1=7 el numero de veces que se repetir el bucle=7 porque quitamos la primera iteracin del bucle y el caracter nulo li $t5,'a' li $t7,0 #moverse por el string quehemos puesto nosotros string1 i++ li $t4,50 #le damos un valor inicial en el cargaremos ms tarde los valores de string1 compararemos para: beq $t4,$zero,finpara #compara t4(caracteres de string1) con el valor cero que en ASCII es el representante de null o "salto de linea" la primera vez que se compara t4 tiene un valor inicial auxiliar, saltar al final en los siguientes iteras del bucle cuando encuentre el null value es decir cuando puldsamos enter (mete el null o salto de linea) o el string1 se menor que la las iter max del bucle es decir meter menos de 8 caracteres=6iteras (modifivsar y simplificar para solo el beq y quitar las 6 iteras bgt $t0,$t1,finpara #si $t0>$t1 saltar finpara compara t0 cuantas veces repetimos el bucle con el numero de veces que queremos repetirlo(t1) lb $t4,0($t2) #carga elemento vector string1 que nosotros hemos introducido previamente en $t4---> v[i] t4 es el numero iesimo del vector e i es t2 se usa 0(t2) poruqe no vamos mas all de t2 lb $a0,string1($t7)li $v0,11syscalllb $a0,nulo($0) #muestra el caracter nulo para hacer salto de linea y mostrarlo en columnali $v0,11syscall bne $t4, $t5, fin_if #si el valor es distinto de 'a' salta y no aumenta el contador de 'a's addi $t3,$t3,1 #suma cuantas 'a' hay fin_if: addi $t2,$t2, 1 #$t2=$t2+1 sumamos 1 a i para moverse por el array se usa addi para sumar un numero y no una variable addi $t7,$t7,1 #nos movemos por el string introducido por nosotros addi $t0,$t0, 1 #$t0=$t0+1 cuenta el numero de veces que se hace la operacin en este caso tiene que ser =7- por una vez que repite el bucle menos el caracter nulo (en c++ es el mismo que i pero aqui no vale ya que se cuenta de 4 en 4) j para #saltar a bucle salta a "para" como si hiciese un buclefinpara: li $v0,10 # Fin del programasyscall