Guía de assembler
ÍNDICE
1. SISTEMAS DE NUMERACIÓN
1.1. Decimal
1.2. Binario
1.3. Hexadecimal
1.4. Octal
1.5. Conversión
1.6. Identificación
2. SISTEMAS DE REPRESENTACIÓN
2.1. Números negativos
2.2. Coma (o punto) Flotante
2.3. Formato BCD
2.4. Caracteres ASCII - ANSI
3. OPERACIONES LÓGICAS
3.1. And
3.2. Or
3.3. Xor
3.4. Not4. ESTRUCTURA DE LA MEMORIA
5. LA PILA
6. LOS REGISTROS
6.1. Generales
6.2. De base
6.3. De índice
6.4. De puntero
6.5. De segmento
6.6. Flags
7. INSTRUCCIONES
7.1. Modos de direccionamiento
7.2. La reina de las instrucciones :-)
7.3. Instrucciones de la pila
7.4. Instrucciones de transferencia de datos
7.5. Instrucciones aritméticas
7.6. Instrucciones lógicas
7.7.Instrucciones de comprobación y verificación
7.8. Instrucciones de salto
7.9. Instrucciones de subrutinas
7.10. Instrucciones de bucle
7.11. Instrucciones de cadenas
7.12. Instrucciones de Entrada / Salida
7.13. Instrucciones de rotación y desplazamiento
7.14. Instrucciones de conversión
7.15. Instrucciones de flags
7.16. Instrucciones de interrupción
7.17. Instrucciones delprocesador
8. ÍNDICE DE INSTRUCCIONES
APÉNDICE A - Instrucciones de coma flotante
APÉNDICE B - Rutinas de interés
APÉNDICE C - MASM32
APÉNDICE D - APIs
1. SISTEMAS DE NUMERACIÓN
1.1. Decimal
Este es el sistema que conocemos todos y no parece necesario explicar gran cosa sobre él :-) Se le llama decimal o en base diez porque cada posición de las cifras que forman un número,representa el múltiplo de esa cifra por una potencia de diez dependiente de su posición en dicho número:
104 103 102 101 100
| | | | |
4 5 1 8 3 = 4 x 10000 = 40000
5 x 1000 = 5000
1 x 100 = 100
8 x 10 = 80
3 x 1 = 3
45183
1.2. Binario
Desde el diseño de los primeros ordenadores se emplearon circuitos biestables con la posibilidad de reconocer sólo dos estados: con tensióny sin tensión, es decir: 1 y 0. Lógicamente, para representar cualquier número binario sólo necesitamos dos caracteres: el "1" y el "0". El valor de un número binario se obtiene igual que el de uno decimal, sólo que se emplea la base dos en vez de diez:
25 24 23 22 21 20
| | | | | |
1 1 1 0 0 1 = 1 x 32 (25) = 32
1 x 16 (24) = 16
1 x 8 (23) = 8
0 x 4 (22) = 0
0 x 2 (21) = 0
1 x1 (20) = 1
57
1.3. Hexadecimal
La representación de un número binario requiere una gran cantidad de cifras. Para escribir 65536 (216) se necesitan 17 cifras: un uno y dieciséis ceros detrás. Por esta razón se buscó un sistema que fuera más o menos manejable por seres humanos y que fuera también fácilmente convertible a binario. La solución está en el sistema hexadecimal. El primerproblema con que nos encontramos es el de que nos faltan cifras. En el sistema decimal tenemos las cifras del 0 al 9, y en binario, el 0 y el 1, pero en un sistema hexadecimal debemos utilizar otros caracteres para las cifras del "10" al "15" ya que en hexadecimal el 10 equivale al 16 decimal. Estos caracteres son las letras mayúsculas de la A a la F. Veamos ahora el valor en decimal de un númerohexadecimal:
163 162 161 160
| | | |
7 A 2 E = 7 x 4096(163)= 28672
A(10)x 256(162)= 2560
2 x 16(161)= 32
E(14)x 1(160)= 14
31278
He dicho que era fácil la conversión entre números en binario y hexadecimal. En efecto, podemos convertir este número hexadecimal en binario sin necesidad de calculadora y ni siquiera de lápiz y papel:
8421 8421 8421 8421
|||| |||| |||| ||||
7A2E =0111 1010 0010 1110
(4+2+1)(8+2)(2) (8+4+2)
o a la inversa:
8421 8421 8421 8421
|||| |||| |||| ||||
1111 0011 1001 1100 = F39C
(8+4+2+1)(2+1)(8+1)(8+4)
Fijáos que cada grupo de cuatro cifras en binario equivale a una cifra hexadecimal. Así: 0111=7 (4+2+1), 1010=A (8+2) etc. Esto es debido a que una cifra hexadecimal puede representar un valor decimal comprendido entre 0 (0)...
Regístrate para leer el documento completo.