Registrarse

[RH - ASM] [Cerrada] Escuela ASM básico de NaDran

Estado
Cerrado para nuevas respuestas.
ESCUELA DE ASM BÁSICO
El objetivo de la escuela es que sus alumnos aprendan lo básico de ensamblador
(no orientado a RH), pero que les ayudará mucho a entender cualquier código ensamblador.



Contenidos / temario que se va a enseñar.

TEÓRICOS

1-Sistemas de numeración.
DECIMAL

Primero nos fijaremos en el sistema decimal que usamos
siempre, es decir en base 10, esto es.
130
1*10^2 + 3*10^1 + 0*10^0 <==== OJO(siempre se empieza a elevar desde la derecha y empezando por 0).

100+30 = 130

Este es muy sencillo, es el que usamos siempre en matemáticas
o en cualquier actividad en la que intervengan números.


BINARIO

Este junto con el hexadecimal se usa mucho en informática.
Primero tenemos que aprender que es un bit, un bit es sencillamente la unidad más pequeña,
y puede tomar un valor
1=a , 0=b
es decir como ejemplo 1=si,0=no /1=blanco,0=negro
De algo tan insignificante se conforma practicamente toda la
arquitectura del ordenador.
---------------------
1 byte = 8 bits
4 bytes = 32 bits

---------------------
La segunda resulta evidente una vez enunciada la primera, pero creedme os hará falta, ya que en el
lenguaje ensamblador MIPS todas las sentencias estan compuestas por PALABRAS que se componen de 32 bits
es decir 4 bytes, pero no me enrollo, eso se verá más adelante con la práctica.
Me centro en el sistema de numeración binario:
Todo número binario se puede expresar con 1 y 0, esto significa
que es base 2, el decimal es con 10 (0,1,2,3,4,5,6,7,8,9)
Lo mejor es un ejemplo
decimal binario
2 ===> 10
Esto es así porque 10 = 1*2^1 + 0*2^0 = 2 (FIJAOS QUE AHORA ES EN BASE 2)
Otros ejemplos
3 ===> 11 ====>1*2^1 + 1*2^0 = 3
10 ==> 1010 ===> 1*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 10

Y para pasar un número de decimal a binario se divide entre 2 sucesivamente.
3|2
1 1 Y los coges del último al primero es decir al revés.
Con otro ejemplo se ve mejor.
10|2
0 5|2
1 2|2
0 1 <=== de aquí hacia arriba 1010


HEXADECIMAL

Bueno esto es casi lo mismo, pero en base 16, todos los números
en hexadecimal se pueden expresar con:
hex decimal
0 0
1 1
2 2
3 .
4 .
5
6
7
8
9 .
A 10
B 11
C 12
D 13
E 14
F 15

#Los puntos significa que son iguales cambia a partir
del 10 que es A....

#Para pasar de decimal a hex se divide entre 16
ej:
18|16
2 1
entonces 18(decimal) = 12 ( hexa)
#Para pasar un número en hexadecimal a decimal:
3C(hexa) = 3*16^1 + C*16^0 = 3*16+12 = 60


Esta es la parte más rollo, porque aún no se programa, pero es
esencial, os recomiendo practicar con la calculadora de windows
en modo programador y os ponéis cualquier número y lo pasáis a hex o bin o de bin/hex a decimal.
Saludos, y cualquier pregunta estaré encantado de resolverla.
2-Aspectos esenciales
Todo el rollazo de antes de los sistemas de numeración se aplica a la práctica, y a eso vamos.

Dos cosas que tenemos que grabarnos en la cabezota y que son esenciales
1 BYTE = 8 BITS
4 BYTES = 32 BITS


Vamos a ver esto bien.
Recordamos que es un bit, es o un 1 o un 0, básicamente.
Pues bien si tenemos el siguiente byte
0000 0011
Es un byte porque contiene 8 bits, si señor, puedes contarlos.
Bien pues eso es en BINARIO, nosotros cuando estemos programando lo queremos en HEXADECIMAL, que es una forma de simplificar el código.
A cada 4 bits en binario se le asigna un valor en hexadecimal esto es porque
hexadecimal es en base 16 y 2^4 = 16.

¿Pero que co....???, tranquilo realmente no hace falta saberlo, en la práctica no nos vamos a poner a pensar en eso, tu simplemente sabes que 4 en binario son 1 en hexa.

Bien una vez sabemos eso volvamos a nuestro problema
0000 0011
0000 ===> 0 (porque 0000 en binario es 0 en hexadecimal =P)
0011 ===> 3 [porque 11 (binario) = 3(decimal) los otros dos 0 nos importan un pito]
entonces nos quedaría así en hexadecimal
03 <==Ahora ya deberíamos saber lo que es 1 BYTE

Bien pues vamos a otro caso:
10FF
ey ey!!! esto no es un BYTE, buen chico, te has dado cuenta, ahora (por pura lógica) vemos que se trata de 2 bytes = 16 bits.
Lo pasamos a binario (al contrario que en el anterior ejemplo)
teniendo en cuenta que F(hex) = 15(dec) = 1111(bin)
0001 0000 1111 1111

EJERCICIOS

-Pasar de hexadecimal a binario
1) FFFF
2) ABCF
3) 17FF00AF =====> Fijate que es una PALABRA lo máximo que puede llevar una instrucción, es decir 4 bytes = 32 bits
4) AAAAFFFF

-Pasar de binario a hexadecimal
1) 1111 0111 0011 0001
2) 1010 1100 1111 1001
3) 0001 0001 0010 1100 1010 1110 1011 0100




Contándolos vemos que son 16 bits.

Y de momento eso que es demasiada información y nos puede estallar la cocorota.


2-Decodificación de instrucciones


PRÁCTICOS


1-Conociendo el QTspim
Descargamos el QTspim.
spim mips simulator - Browse Files at SourceForge.net

Como usarlo

Primero haremos nuestro primer programa en asm

.data
dato1: .word 12,15
dato2: .byte 12,12,12,12
La instrucción .data informa al simulador que vamos a trabajar en la zona de datos, es decir en esta parte del QTspim (img1) que es donde se guardan los datos en memoria.



La otra parte donde pone text, es la zona de instrucciones que aun no tenemos que saber usarla.

La instrucción dato1: .word 12,15 lo que hace es asignar a la etiqueta dato1 las palabras 12 y 15.
Recordemos que una palabra esta compuesta por 4 bytes, con el dibujo lo vemos mejor.



Bueno ya sabemos lo que hace nuestro primer programa, pero ¿cómo lo usamos en el QTspim?, pues siguendo los pasos:
1-Copiamos el código en un bloc de notas y lo guardamos como nombre.s
es decir acabado en .s, para ello tenemos que cambiar cuando vamos a guardar, en vez de documento de texto,ponemos todos los archivos, no creo que sea necesario una imagen para esto.

2-Abrimos nuestro bloc de notas con QTspim


Ahora nos fijamos en que ha cambiado la zona de datos:



Bien ahora lo más importante, las direcciones de memoria

2-Definición de datos
3-Carga y almacenamiento de datos
4-Interactuar, interfaz de usuario
5-Estructuras de control(bucles y if)


ALUMNOS Y CALIFICACIONES
Chamber
Iηмortał Kakŧus
BLAx
Sayer D. Flow!
Foxz.
Doctor Juanjo
Dafting
RedMort
Metas
Zeta
Braxpok
Septum
Franco Kuchiki
Albertodesu
MasterBlack
Sceptile_girl
WiZaRD
Virdi22
Kurama
MonsterCat!
Łoux
kadsuki
JV Works
Sokhriz
PabloGTD
Zola
Loony Boo♪
Hunter Digi Ace
ahr_98





NOVEDADES

28/01/2014
-Empezamos con la primera clase de ASM con la primera parte teórica, los sistemas de numeración y aspectos esenciales.
Puedes encontrar la explicación en este mismo post en la parte de Contenidos / temario que se va a enseñar.

Se informa de que se subirán las clases semanalmente, si los integrantes de la escuela prefieren un pdf, decídmelo y lo haré en pdf.
Cualquier duda de la clase de la semana se deberá comentar en este tema es decir nada de MP ya que tu duda puede ser la de muchos otros.
Insisto, si tenéis dudas PREGUNTAD Y PREGUNTAD, responderé probablemente por la noche porque estoy ocupado pero responderé a todas sin falta.
Y debe ser de la siguiente manera ESPECIFICANDO el tema en mayus y en negrita para tener orden, porque cuando estemos más avanzados pueden surgir dudas de temas anteriores. EJ:
1-SISTEMAS DE NUMERACIÓN
y tu duda....
Y lo último que tengo que decir para iniciar la escuela es que os fijéis siempre en esta parte de las novedades, y que estudiéis mucho! esta parte es la más coñazo (la teórica), pero es fundamental para entender la parte práctica (programar en ASM).


3/02/2014
Continuamos con algo un poco más práctico, conociendo el QTspim, la primera clase práctica, esta vez es un video que subí a youtube, creo que está todo muy claro, descargas el QTspim y viendo el video te enteras de como se usa.
PERDON POR EL RETRASO QUE ESTABA MUY LIADO, YA ESTA LA CLASE, PERO NO VIDEO, CON IMAGENES, CREO QUE SE ENTIENDE BASTANTE BIEN.
Los ejercicios los subiré cuando pueda, serán bastante sencillos, pero para que ya empecéis a programar en la zona de datos.
En la próxima clase empezaremos a hacer programas más elaborados que los del ejemplo.
 

H.B.P

Emperador Kaktiácero
Miembro de honor
Respuesta: Escuela ASM básico

1-SISTEMAS DE NUMERACIÓN
¿Los ejercicios que has puesto hay que entregarlos por MP? Si es así, ¿hay un límite de tiempo para entregarlos? Y en el MP, ¿hay que poner el planteamiento o sólo los resultados?
 

Kaktus

Miembro insignia
Miembro insignia
Respuesta: Escuela ASM básico

Respuestas

-Pasar de hexadecimal a binario
1) FFFF = 1111
2) ABCF = 1010 1011 1100 1111
3) 17FF00AF = 1011 1111 1111 1000 0101 0111 (Que conste que me he liado mucho)
4) AAAAFFFF = 1010 1010 1010 1010 1111 1111 1111 1111

-Pasar de binario a hexadecimal
1) 1111 0111 0011 0001 = F731
2) 1010 1100 1111 1001 = ACF8
3) 0001 0001 0010 1100 1010 1110 1011 0100 = 112AEB4


 
Respuesta: Escuela ASM básico

Loony Boo♪;225615 dijo:
1-SISTEMAS DE NUMERACIÓN
¿Los ejercicios que has puesto hay que entregarlos por MP? Si es así, ¿hay un límite de tiempo para entregarlos? Y en el MP, ¿hay que poner el planteamiento o sólo los resultados?
No no hay que entregarlos, subiré aquí las soluciones y cada uno se los corrige, no tengo tiempo para corregir a tanta gente, lo que si haré es resolver cualquier duda que se tenga, si hay problema con un ejercicio por supuesto que lo resloveré.

Lo único que se pondrá nota y eso, será a los dos exámenes finales de parte teórica y práctica, y es sólo para ver si has superado la escuela y tienes conocimientos básicos de ASM, y yo no me voy a preocupar de que se presente cada uno sabrá lo que hace.
Es decir si alguien se ha apuntado y pasa de todo pues ese será su problema jaja


Iηмortał Kakŧus;225673 dijo:
Respuestas

-Pasar de hexadecimal a binario
1) FFFF = 1111
2) ABCF = 1010 1011 1100 1111
3) 17FF00AF = 1011 1111 1111 1000 0101 0111 (Que conste que me he liado mucho)
4) AAAAFFFF = 1010 1010 1010 1010 1111 1111 1111 1111

-Pasar de binario a hexadecimal
1) 1111 0111 0011 0001 = F731
2) 1010 1100 1111 1001 = ACF8
3) 0001 0001 0010 1100 1010 1110 1011 0100 = 112AEB4



El de pasar de hex a bin el 1)FFFF ===> 1111 1111 1111 1111 y en el último del 2 te comiste una C no se si tienes más fallos.
No pasa nada estamos empezando es normal equivocarse.
Pondré ahora las soluciones editando esta respuesta, para que así veáis lo que no entendéis.

EJERCICIOS
-Pasar de hexadecimal a binario
1) FFFF
2) ABCF
3) 17FF00AF =====> Fijate que es una PALABRA lo máximo que puede llevar una instrucción, es decir 4 bytes = 32 bits
4) AAAAFFFF

-Pasar de binario a hexadecimal
1) 1111 0111 0011 0001
2) 1010 1100 1111 1001
3) 0001 0001 0010 1100 1010 1110 1011 0100

IMPORTANTE: la calculadora de windows y la mayoría de calculadoras se comen los ceros a la izquierda, por si os habéis liado con eso.

SOLUCIÓN
-pasar de hex a bin
1)1111 1111 1111 1111
2)1010 1011 1100 1111
3)0001 0111 1111 1111 0000 0000 1010 1111 (32 bits, 4 bytes)
4)1010 1010 1010 1010 1111 1111 1111 1111
-de bin a hex
1)F731
2)ACF9
3)112CAEB4
 

Hunter Digi Ace

Pokehacker Retirado
Respuesta: Escuela ASM básico

hey ya e echo todo :D tuve algunos fallos con lo de binario a hex pero nada solucionado XD
espero con ansias la siguiente clase ^^
 

Juanjo

Hacker del pasado... Compilador del presente
Miembro insignia
Respuesta: Escuela ASM básico

No supe si había que enviarlo :p Pero las hice mentalmente y fue genial. Tengo ya un cuaderno para esta clase :D
 

Zola

Primeros Pasos
Respuesta: Escuela ASM básico

Disculpa amigo, donde puedo ver el video que mencionaste? no lo encuentro en el post principal :S
 
Respuesta: Escuela ASM básico

PERDON POR EL RETRASO QUE ESTABA MUY LIADO, YA ESTA LA CLASE, PERO NO VIDEO, CON IMAGENES, CREO QUE SE ENTIENDE BASTANTE BIEN.
Los ejercicios los subiré cuando pueda, serán bastante sencillos, pero para que ya empecéis a programar en la zona de datos.
 

Braxpok

Usuario de Platino
Respuesta: Escuela ASM básico

Tengo un problema al abrir QT Spim, cuando lo abro me dice que no es una aplicación win32 valida. Tengo Windows XP SP3, 32 bits. ¿Que hago?
Un saludo!
 
Respuesta: Escuela ASM básico

Mmmm creo que no hay versión del qtspim para ese S0, usa el mars que compila ASM pero te vas a tener que buscar la vida un poco porque no es muy adecuado que digamos y no se parece mucho al QTspim.
 

Keltill

Pinches furros
Respuesta: Escuela ASM básico

Vale de momento no hay ningun problema, mas o menos he entendido el uso del QSpin, espero los ejercicios :)
 

H.B.P

Emperador Kaktiácero
Miembro de honor
Respuesta: Escuela ASM básico

NaDran lleva más de un mes sin conectarse al foro, así que la escuela queda cerrada y movida al archivo~~
 
Estado
Cerrado para nuevas respuestas.
Arriba