01 Introduccion Al Lenguaje Ensamblador

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 45

Introducción a Lenguaje Ensamblador

Conceptos básicos
John Von Neumann
Concepto de “Programa Almacenado”
Introducción a Lenguaje Ensamblador
Conceptos básicos
Lenguaje de Máquina:
“lista de códigos que la máquina interpreta como
instrucciones, describe las capacidades de
programación que tenemos de ella; es el lenguaje más
primitivo”

Lenguaje Ensamblador:
“es la primera abstracción del Lenguaje de Máquina,
consistente en asociar a los códigos de operación
(opcodes) palabras clave que faciliten su uso por parte
del programador”
Introducción a Lenguaje Ensamblador
Niveles Jerárquicos del Computador
Introducción a Lenguaje Ensamblador
Evolución de los lenguajes computacionales

Ventajas y desventajas del Lenguaje Ensamblador

Ventajas: Desventajas
1. Velocidad 1. Tiempo de programación
2. Eficiencia de tamaño 2. Programas fuente grandes
3. Flexibilidad 3. Peligro de afectar recursos
inesperadamente
4. Falta de portabilidad
Introducción a Lenguaje Ensamblador
Comparación entre el Lenguaje Ensamblador y los Lenguajes de Alto Nivel
Representación y Tipos de Datos
Cómo el CPU ve la información en los distintos tipos de datos

1.Caracteres
2.Cadenas
3.Arreglos
4.Números enteros sin signo
5.Números enteros con signo
6.Punto flotante
Representación y Tipos de Datos

1. Caracteres
El CPU solamente puede procesar números, por lo que todos
los otros datos deben representarse en términos numéricos, por
lo que los caracteres son una abstracción de datos,

Los cálculos no son útiles hasta que sus resultados se pueden


mostrar de una manera significativa para las personas.

También necesitamos almacenar los resultados de los cálculos..

Por lo tanto, los caracteres deben convertirse en patrones de bits


comprensibles por computadora utilizando algún tipo de
esquema de codificación de caracteres.
Representación y Tipos de Datos
1. Caracteres
Representación Binaria.

Un bit es la unidad básica de información de una computadora.


- Es un estado de "encendido" o "apagado" en un circuito
digital.
- A veces, estos estados son de voltaje alto o bajo en lugar de on
u off.
Representación y Tipos de Datos
1. Caracteres
A medida que la computadora ha evolucionado, los códigos de
caracteres han evolucionado.

Los primeros sistemas de codificación por computadora usaban


seis bits.

El decimal codificado en binario (BCD) fue uno de estos


primeros códigos.

La memoria de la computadora y dispositivos de


almacenamiento más grandes permiten códigos de caracteres
más diversos.
Representación y Tipos de Datos
1. Caracteres
BCD se amplió a un código de 8 bits, Código de intercambio
decimal codificado en binario ampliado (Extended Binary
Coded Decimal Interchange Code EBCDIC).

EBCDIC fue de los primeros códigos informáticos de uso


generalizado que admitía caracteres alfabéticos en mayúsculas
y minúsculas, así como signos de puntuación y de control.

EBCDIC fue utilizado en mainframes de IBM.


Representación y Tipos de Datos
1. Caracteres
Representación y Tipos de Datos
1. Caracteres
Otros fabricantes de computadoras eligieron el ASCII de 7 bits
(Código estándar americano para el intercambio de información)
como reemplazo de los códigos de 6 bits.

Mientras que BCD y EBCDIC se basaron en códigos de tarjetas


perforados, ASCII se basó en códigos de telecomunicaciones
(télex).

Los Microcomputadores utilizan el código de caracteres ASCII

ASCII es un código de 7 bits, normalmente almacenado en bytes


de 8 bits.
Representación y Tipos de Datos
1. Caracteres TABLA ASCII
Para convertir
mayúsculas a
minúsculas
sume 20 hex.
Al código de
la mayúscula

“A” es 41h
20h
“a” es 61h
Representación y Tipos de Datos
1. Caracteres
Muchos de los sistemas actuales adoptan códigos Unicode, un
sistema de 16 bits que puede codificar los caracteres de todos los
idiomas del mundo.

El lenguaje de programación Java usa Unicode como su código


de caracteres predeterminado.

El espacio de código Unicode se divide en seis partes. La primera


parte es para códigos alfabéticos occidentales, incluidos inglés,
griego y ruso.
Representación y Tipos de Datos
1. Caracteres

Los caracteres Unicode


con el número más
bajo comprenden el
código ASCII.

Los números mas altos


son reservados para
códigos definidos por
el usuario.
Representación y Tipos de Datos
1. Caracteres CÓDIGOS UNICODE
Representación y Tipos de Datos
1. Caracteres CÓDIGOS UNICODE
Representación y Tipos de Datos
1. Caracteres
En resumen podemos decir que un simple byte en memoria
puede ser:

un caractér
un número sin signo
un número con signo
parte de un entero de varios bytes
parte de un número de punto flotante de varios bytes
Representación y Tipos de Datos
2. Cadenas
Una cadena es una secuencia de caracteres. Se utiliza para guardar
textos. Dado que la longitud es dinámica, se usan algunos bits extras
con información sobre la longitud máxima, la longitud real de la
cadena o un indicador de fin de cadena.

Por ejemplo, El Lenguaje Pascal almacena en el primer byte, el


número de caracteres que contiene la cadena. Por ello, la longitud
máxima que permite es de 255 caracteres.

En otras versiones esa limitación es eliminada y permite tamaños por


encima de 32.000 caracteres, como es el caso de GNU Pascal.

El Lenguaje C permite cadenas de longitud indefinida, pues codifica


la información desde el primer byte, hasta encontrar un caracter nulo
(código ASCII 0), que funciona como el marcador de fin de cadena.
Representación y Tipos de Datos
3. Arreglos
El arreglo es un tipo de datos estructurado formado por una
colección finita de elementos, todos del mismo tipo.

El acceso se realiza mediante un índice que permite especificar


cuál es el elemento requerido dando su posición en la
colección.

Un byte es la unidad de memoria que se asigna para almacenar


un valor.

En el caso de un arreglo las sentencias de declaración le dicen


al compilador cuántos bytes se necesitan para representar el
arreglo.
Representación y Tipos de Datos
3. Arreglos
el nombre del arreglo se asocia con sus características, estas son:

-El límite superior del rango.


-El límite inferior del rango
-La posición en memoria del primer byte del arreglo, llamada la
dirección base.
-Cantidad de posiciones de memoria necesarias para cada
elemento del arreglo.

La función de acceso utiliza esta información para determinar la


posición del elemento deseado, usando una simple multiplicación
y una suma:

Posición Elemento[i] = Dirección Base + (i - Limite Inferior) * Tamaño Elemento


Representación y Tipos de Datos
4. Números enteros sin signo
Introducción
• Un bit es la unidad básica de Información en un computador
• Un byte es un grupo de ocho bits.
• La memoria del computador la medimos en byte.
• El byte es la unidad mínima direccionable en la memoria.
• Direccionable significa que un byte en particular puede ser
leído o escrito según su posición en memoria.
• Cuatro bits forman un nibble, por lo que el byte está
compuesto de dos nibbles uno de mayor orden y otro de
menor orden.
• Una palabra (Word) es un grupo contiguo de bytes.
Representación y Tipos de Datos
4. Números enteros sin signo
Introducción
Bit 0

Nibble 0110

Byte 11110000

16-bit word 11001001 01000110

32-bit double word 10110100 00110101 10011001 01011000

64-bit quad word 01011000 01010101 10110000 11110011


11001110 11101110 01111000 00110101

01011000 01010101 10110000 11110011


128-bit eight word 11001110 11101110 01111000 00110101
00001011 10100110 11110010 11100110
10100100 01000100 10100101 01010001
Representación y Tipos de Datos
4. Números enteros sin signo
Sistemas de numeración posicional
Los bytes almacenan números usando la posición de cada bit
para representar una potencia de 2.

El sistema binario se denomina sistema base 2.

El sistema decimal es el sistema de base 10, utiliza potencias


de 10 para cada posición en un número.

Cualquier cantidad entera se puede representar exactamente


usando cualquier base.
Representación y Tipos de Datos
4. Números enteros sin signo
Sistemas de numeración posicional
El número decimal 947 en potencias de 10 es:

9 x 102 + 4 x 101 + 7 x 100

El número decimal 9470.47 en potencias de 10 es:

9 x 103 + 4 x 102 + 7 x 101 + 0 x 100 + 4 x 10-1 + 7 x 10-2


Representación y Tipos de Datos
4. Números enteros sin signo
Conversión entre bases
Convirtiendo 190 a base 3

• Primero el número que 190 3 1


deseamos convertir lo 63
dividimos por la base en la 63 3 0
que queremos expresar 21
nuestro resultado.
• En este caso, 190 lo
dividimos entre 3 y anotamos
el cociente y el residuo.
Representación y Tipos de Datos
4. Números enteros sin signo
Conversión entre bases
Convirtiendo 190 a base 3

• Continuamos la división hasta 190 3 1


que el cociente sea cero. 63
• Nuestro resultado lo leemos 63 3 0
de abajo hacia arriba. 21
21 3 0
7
19010 = 210013 7 3 1
2
2 3 2
0
Representación y Tipos de Datos
4. Números enteros sin signo
Conversión entre bases
0.8125
• Usando el método de x 2
multiplicación para convertir 1.6250
el valor decimal 0.8125 a
binario, multiplicamos por la 0.6250
base 2. x 2
• El primer producto se 1.2500
lleva al lugar de las
0.2500
unidades. x 2
0.5000

0.5000
x 2
1.0000
Representación y Tipos de Datos
4. Números enteros sin signo
Conversión entre bases
0.8125
• Ignorando el valor de las x 2
unidades en cada paso, 1.6250
continuamos multiplicando
cada parte fraccionaria por 0.6250
la base. x 2
1.2500

0.2500
x 2
0.5000

0.5000
x 2
1.0000
Representación y Tipos de Datos
4. Números enteros sin signo
Conversión entre bases
0.8125
• Terminamos cuando el x 2
producto es cero o hasta que 1.6250
hemos alcanzado el número
deseado de dígitos binarios. 0.6250
• Nuestro resultado, leyéndolo x 2
de arriba hacia abajo es: 1.2500

0.2500
0.812510 = 0.11012 x 2
0.5000
• Este método también funciona
con cualquier base. 0.5000
Simplemente use la base de x 2
destino como multiplicador. 1.0000
Representación y Tipos de Datos
4. Números enteros sin signo
Conversión entre bases
• Convirtiendo Base 6 a Base 10
123.456 = ????.????10
1236 = 1 x 62 + 2 x 61 + 3 x 60 =

1236 = 1 x 36 + 2 x 6 + 3 x 1 = 51

0.456 = 4 x 6-1 + 5 x 6-2 =

0.456 = 4 x 1 / 6 + 5 x 1 / 36 = 0.805555…

123.456 = 51.80555510
Representación y Tipos de Datos
4. Números enteros sin signo
Conversión entre bases
• Convirtiendo Base 10 a Base 6
754.9410 = ????.????6
75410 = 7 x 100 + 5 x 10 + 4 x 1
75410 = 116 x 2446 + 5 x 146 + 4 x 16 = ???.???6

754 ÷ 6 = 125 residuo 4


125 ÷ 6 = 20 residuo 5
20 ÷ 6 = 3 residuo 2
3 ÷ 6 = 0 residuo 3

75410 = 32546
Representación y Tipos de Datos
4. Números enteros sin signo
Conversión entre bases
• Convirtiendo Base 10 a Base 6
0.9410 = 0.????6 754.9410
0.94 x 6 = 5.64 --- 5
0.64 x 6 = 3.84 --- 3 =
0.84 x 6 = 5.04 --- 5
0.04 x 6 = 0.24 --- 0 3254.5350123501235012..6
0.24 x 6 = 1.44 --- 1
0.44 x 6 = 2.64 --- 2
0.64 x 6 = 3.84 --- 3

0.9410 = 0.5 35012 35012 35012 …6


Representación y Tipos de Datos
4. Números enteros sin signo
Decimal binario Octal Hexadecimal
0 0000 0 0
1 0001 1 1
2 0010 2 2
3 0011 3 3
4 0100 4 4
5 0101 5 5
6 0110 6 6
7 0111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
Representación y Tipos de Datos
4. Números enteros sin signo
Los enteros sin signo representan solamente la magnitud, en forma binaria,
son valores binarios ordinarios que van desde 0 hasta el número positivo
máximo que puede codificarse en el tamaño del operando seleccionado.

números desde 0 hasta (2n) – 1

donde n se refiere al número de bits usados para representarlo.

Números de 1 byte sin signo: 0 a 255: unsigned char


Números de 2 bytes sin signo: 0 a 65,535: unsigned short
Números de 4 bytes sin signo: 0 a 4,294,967,295: unsigned int
Números de 8 bytes sin signo: 0 a 18,446744,073709,551615: unsigned long
Representación y Tipos de Datos
4. Números enteros con signo
Los enteros con signo son valores binarios del
complemento a dos que se pueden usar para
representar valores enteros positivos y negativos.

Un bit (el más significativo) es usado para representar


el signo. Cuando es 0, el número es positivo y cuando
es 1, el número es negativo.
Representación y Tipos de Datos
4. Números enteros con signo

Por lo que permiten almacenar números desde -2(n-1),


hasta +(2(n-1)) – 1.

Byte: -128 a +127

Word: -32768 a 32767

Double word: -2147,483,648 a +2147,483,647

Quad word: -9,223372,036854,775808 a


+9,223372,036854,775807
Representación y Tipos de Datos
4. Números enteros con signo
Los números negativos se almacenan usando el complemento a
dos del número

¿Complemento a dos?

Se obtiene sumándole uno al complemento a uno

¿Complemento a uno?

Consiste en complementar todos los bits de un número binario,


lo que significa restar de un valor de todos 1 el número binario,
es decir Los dígitos 0 se convierten en dígitos 1, y los dígitos 1
se convierten en dígitos 0
Representación y Tipos de Datos
4. Números enteros con signo

37 = 0010 0101

1101 1010
+1
1101 1011 = -37
Representación y Tipos de Datos
4. Números enteros con signo

Ejemplo: Convertir -123

12310 = 64 + 32 + 16 + 8 + 2 + 1 = 0111 10112

Complemento a 1

=> 1000 01002

Complemento a 2

=> 1000 01012


Representación y Tipos de Datos
4. Números de Punto Flotante
La arquitectura IA-32 define y opera en tres tipos de datos de
punto flotante:
punto flotante de precisión simple,
punto flotante de precisión doble y
punto flotante de precisión con doble extensión.

Estándar IEEE 754 para Aritmética de Puntos Flotantes


Binarios.

Para los formatos de precisión simple y precisión doble, solo se


codifica la parte de la fracción del significado.
Representación y Tipos de Datos
4. Números de Punto Flotante

Valores de precisión simple se almacenan en 4 bytes


consecutivos en la memoria;

Valores de doble precisión se almacenan en 8 bytes


consecutivos;

Valores dobles de precisión extendida se almacenan en


10 bytes consecutivos.
Representación y Tipos de Datos
4. Números de Punto Flotante

El formato precisión simple utiliza los 32 bits de la


siguiente manera:

1 bit para signo,


8 bits para el exponente, desplazado en +127
23 bits para la precisión.

El rango de los números a representar,


en los positivos, es desde 1.18 x 10-38 a 3.40 x 10+38).
Y equivalentemente, en los negativos.
Representación y Tipos de Datos
4. Números de Punto Flotante
El formato precisión doble utiliza los 64 bits de la siguiente
manera:

1 bit para signo,


11 bits para el exponente, desplazado en +1023
52 bits para la precisión.

El rango de los números a representar, en los positivos, es


desde 2.23 x 10-308 a 1.79 x 10+308). Y equivalentemente, en los
negativos.
Representación y Tipos de Datos
4. Números de Punto Flotante
El formato doble de precisión extendida utiliza los 80 bits de la
siguiente manera:

1 bit para signo,


15 bits para el exponente, desplazado en +16383
1 bits para el entero
63 bits para la precisión.

El rango de los números a representar, en los positivos, es


desde 3.37 x 10-4932 a 1.18 x 10+4932). Y equivalentemente, en
los negativos.

También podría gustarte