Anda di halaman 1dari 4

Tarea 1: Cadena Asccii

.data
usuario: .space 0x0000001e
letras: .space 0x0000001e
str1: .asciiz "Ingrese la cadena de texto: "

.text
.globl main
main:

addi $v0, $zero, 4


la $a0, str1
syscall

li $v0,8
la $a0, usuario
li $a1, 0x0000001e
syscall

la $s0, usuario

li $t0, 0
li $t4, 4
li $t5, 0

jal impr

li $v0, 10
syscall

impr:

addi $t5, $t5, 1


addi $sp, $sp, -4
sw $fp, 0($sp)

L1:
add $t1, $t0, $t0
add $t1, $t1, $t1
add $t2, $t1, $s0
lw $s1, 0($t2)

beq $s1, $zero, end


move $s2, $s1

li $t3, 0

L2:
andi $s3, $s2, 0x000000ff

beq $s3, $zero, end

addi $t5, $t5, 1


addi $sp, $sp, -4
sw $s3, 0($sp)

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

ror $s2, $s2, 8

addi $t3, $t3, 1

blt $t3, $t4, L2

addi $t0, $t0, 1

j L1

end:

jr $ra

CDIGO EN C++

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <cmath>
using namespace std;
void Convertir(const char*);

int main(void)
{
cout << "\t\t\t CONVERTIR ASCII a BINARIO" << endl;
cout << "\t\t\t ########################### \n " << endl;

char cadena[200];
cout << " Ingrese la cadena de texto: ";
cin >> cadena;

Convertir(cadena);

return 0;
}

void Convertir(const char* input)


{
int ascii; // usado para almacenar el nmero ASCII de un caracter
int length = strlen(input); // encuentra la longitud de la entrada del caracter

cout << " ";

for(int x = 0; x < length; x++) // repite hasta que la entrada del caracter haya sido leda
/ / x < length porque el ltimo carcter es "\ 0"
{
ascii = input[x]; // almacena un caracter en su nmero ASCII

char* binario_inverso = new char [9]; // asignacin de memoria dinmica


char* binario = new char [9];

int y = 0; // contador utilizado para arreglos

while(ascii != 1) // continuar hasta ascii == 1


{
if(ascii % 2 == 0) // si ascii es divisible por 2
{
binario_inverso[y] = '0'; // luego pon un cero
}
else if(ascii % 2 == 1) // si no es divisible por 2
{
binario_inverso[y] = '1'; // luego pongo un 1
}
ascii /= 2; // encuentra el cociente de ascii / 2
y++; //add 1 to y for next loop
}

if(ascii == 1) // cuando ascii es 1, tenemos que agregar 1 al comienzo


{
binario_inverso[y] = '1';
y++;
}

if(y < 8) // agregue ceros al final de la cadena si no son 8 caracteres (1 byte)


{
for(; y < 8; y++) // aadir hasta binario_inverso [7] (octavo elemento)

{
binario_inverso[y] = '0';
}
}

for(int z = 0; z < 8; z++) // nuestro arreglo est invertida, poner los nmeros en el orden
correcto (el ltimo viene primero)
{
binario[z] = binario_inverso[7 - z];
}

cout << binario<<" "; // muestra el nmero binario de 8 dgitos

delete [] binario_inverso; // liberar la memoria creada por la memoria dinmica asignada


delete [] binario;
}

cout << endl;


}