UNIVERSIDAD AUTONOMA GABRIEL RENE MORENO
MATERIA: PROGRAMACION ENSAMBLADOR
SIGLA: INF-221
ING. VALENTIN VICTOR FLORES GUZMAN
CORREO : valentinfloresguzman@gmail.com
CELULAR : 721- 14611
TEMA 1: INTRODUCCION
INTRODUCCIÓN
Codigo Binario:
Es el lenguaje básico, sólo admite positivo (1) o negativo (0).
Todo sistema informático está basado en este código, ya
que el positivo quiere decir que se permite el paso de la
electricidad y el negativo no lo permite.
Präsentati
on
2 Programacion
INTRODUCCIÓN Corriente Alterna:
Se denomina corriente alterna (abreviada CA en español
y AC en inglés, de alternatingcurrent) a la corriente eléctrica en
la que la magnitud y el sentido varían cíclicamente. La forma de
oscilación de la corriente alterna más comúnmente utilizada es
la de una oscilación sinusoidal (figura 1), puesto que se
consigue una transmisión más eficiente de la energía. Sin
embargo, en ciertas aplicaciones se utilizan otras formas de
oscilación periódicas, tales como la triangular o la cuadrada.
Präsentati
on
3 Programacion
INTRODUCCIÓN
La Corriente Continua:
La corriente continua (c.c.) es el flujo continuo de
electricidad a través de un conductor entre dos puntos de
distinto potencial. A diferencia de la corriente alterna (c.a.), en
este caso, las cargas eléctricas circulan siempre en la misma
dirección del punto de mayor potencial al de menor potencial.
Aunque comúnmente se identifica la corriente continua con la
corriente constante (por ejemplo la suministrada por una
batería), es continua toda corriente que mantenga siempre la
misma polaridad.
Präsentati
on
4 Programacion
TEMA #1
INTRODUCCIÓN
Este proceso, denominado rectificación, consta de tres
etapas. En una primera etapa, se rectifica la señal convirtiendo
la entrada negativa en positiva al tiempo que se disminuye la
diferencia de potencial empleando un transformador.
Posteriormente se realiza un filtrado que disminuye el rizado de
la señal pulsante rectificada obteniendo una señal triangular.
Finalmente la señal se nivela obteniendo una salida continua
constante.
Präsentati
on
5 Programacion
INTRODUCCIÓN
Lenguaje Máquina - Las invocaciones a memoria, como
los procesos aritmético lógicos son posiciones literales de
conmutadores físicos del hardware en su
representación booleana. Estos lenguajes son literales de
tareas.
Präsentati
on
6 Programacion
INTRODUCCIÓN
Lenguajes de bajo nivel - Son
instrucciones que ensamblan los grupos
de conmutadores necesarios para expresar
una mínima lógica aritmética.
Están íntimamente vinculados al hardware.
Por norma general están disponibles a nivel
firmware, cmos o chip set.
Estos lenguajes están orientados a
procesos. Los procesos se componen de
tareas. Contienen tantas instrucciones como
la arquitectura del hardware así haya sido
diseñada. Por ejemplo: La arquitectura
CISC contiene muchas más instrucciones a
este nivel, que la RISC.
Son denominados como ensambladores de
un hardware concreto, o kernel.
Präsentati
on
7 Programacion
INTRODUCCIÓN
Lenguajes de medio nivel -
Son aquellos que, basándose en los
juegos de instrucciones disponibles (chip
set), permiten el uso de funciones a nivel
aritmético, pero a nivel lógico dependen
de literales en ensamblador. Estos
lenguajes están orientados a
procedimientos. Los procedimientos se
componen de procesos.
Suelen ser clasificados de alto nivel, pero
permiten ciertos
manejosde bajo nivel, son precisos para
la creacion de sistemas
operativos, ya que permiten un manejo
abstracto(independiente de la
maquina, a diferencia del lenguaje
ensamblador).
Ejemplos: C, Basic.
Präsentati
on
8 Programacion
INTRODUCCIÓN
Lenguajes de alto nivel - Son
aquellos que permiten una máxima
flexibilidad al programador a la hora de
abstraerse o de ser literal. Permiten un
camino bidireccional entre el lenguaje
máquina y una expresión casi oral entre
la escritura del programa y su posterior
compilación. Estos lenguajes están
orientados a objetos. Los objetos se
componen de propiedades cuya
naturaleza emerge de procedimientos.
Ejemplos: C++, Delphi , Visual basic etc.
Präsentati
on
9 Programacion
INTRODUCCIÓN
Procesador: El procesador es el
cerebro del sistema, encargado de
procesar toda la información.
Básicamente, es el "cerebro" de la
computadora. Prácticamente, todo
pasa por él, ya que es el responsable
de ejecutar todas las instrucciones
existentes. Mientras más rápido vaya el
procesador, más rápido serán ejecutadas
las instrucciones.
informático o simplemente procesador,
un circuito integrado que contiene todos
los elementos de la CPU.
Präsentati
on
10 Programacion
INTRODUCCIÓN
DEFINICION DE PROGRAMADOR ENSAMBLADOR : El lenguaje ensamblador,
o assembler (assemblylanguage en inglés), es un lenguaje de programación de bajo nivelpara los
computadores, microprocesadores, microcontroladores y otros circuitos integrados programables.
Implementa una representación simbólica de los códigos de máquina binarios y otras constantes
necesarias para programar una arquitectura dada de CPU y constituye la representación más directa
del código máquina específico para cada arquitectura legible por un programador. Esta representación
es usualmente definida por el fabricante de hardware, y está basada en los mnemónicos que
simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posiciones
de memoria y otras características del lenguaje. Un lenguaje ensamblador es por lo tanto específico de
cierta arquitectura de computador física (o virtual). Esto está en contraste con la mayoría de los
lenguajes de programación de alto nivel, que idealmente son portátiles.
Präsentati
on
11 Programacion
TEMA #1
INTRODUCCIÓN
DEFINICION DE PROGRAMADOR ENSAMBLADOR :
El lenguaje ensamblador, o assembler (assemblylanguage en inglés), es un lenguaje de programación de
bajo nivelpara los computadores, microprocesadores, microcontroladores y otros circuitos integrados
programables. Implementa una representación simbólica de los códigos de máquina binarios y otras
constantes necesarias para programar una arquitectura dada de CPU y constituye la representación más
directa del código máquina específico para cada arquitectura legible por un programador. Esta
representación es usualmente definida por el fabricante de hardware, y está basada en los mnemónicos
que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las
posiciones de memoria y otras características del lenguaje. Un lenguaje ensamblador es por lo tanto
específico de cierta arquitectura de computador física (o virtual). Esto está en contraste con la mayoría de
los lenguajes de programación de alto nivel, que idealmente son portátiles.
Präsentati
on
12 Programacion
1.1. Sistemas Numéricos:
DEC, BIN, HEX
Un sistema de numeración es un conjunto de símbolos
y reglas que permiten representar datos numéricos.
La principal regla es que un mismo símbolo tiene
distinto valor según la posición que ocupe.
1.1. Sistema de Numeración
Decimal
Es el más utilizado y está aceptado universalmente.
Utiliza diez símbolos o dígitos(0, 1, 2, 3, 4, 5, 6, 7, 8, 9).
El valor de cada dígito está asociado a una potencia de base 10
(número que coincide con la cantidad de símbolos utilizados por
el sistema) y un exponente igual a la posición que ocupa el dígito
(contado desde la derecha) menos uno.
1.1. Sistema de Numeración
Decimal
En el sistema decimal el número 6259, por ejemplo, significa:
6 millares + 2 centenas + 5 decenas + 9 unidades
Es decir: 6 x 103 + 2 x 102 + 5 x 101 + 9 x 100
En el caso de números con decimales, algunos exponentes de las
potencias serán negativos (los de los dígitos colocados a la
derecha del separador decimal)
El número 8245,97 se calcularía como:
8 millares + 2 centenas + 4 decenas + 5 unidades + 9 décimas
+ 7 centésimas
8 x 103 + 2 x 102 + 4 x 101 + 5 x 100 + 9 x 10-1 + 7 x 10-2
1.1. Sistema de Numeración
Binario
Utiliza dos dígitos (0 y 1).
El valor del dígito viene determinado por
una potencia de base 2 y un exponente igual
a su posición (desde la derecha) menos uno.
Así, el número binario 10011 tendría un
valor:
1 x 24 + 0 x 23 + 0 x 22 + 1 x 21 + 1 x 20 =
=16 + 2 + 1 = 19
1.1. Sistema de Numeración
Hexadecimal
Los números hexadecimales (igual que los octales) sirven para
representar ciertos números binarios de forma abreviada.
El sistema hexadecimal utiliza dieciséis símbolos (0, 1, 2, 3, 4, 5,
6, 7, 8, 9, A, B, C, D, E, F); los caracteres A, B,…, F representan
las cantidades comprendidas entre 10 y 15. Estos símbolos,
dependiendo del lugar que ocupen, tienen un valor
determinado por potencias de base 16.
1.1. Sistema de Numeración Octal
Los números octales sirven para representar ciertos números binarios
de forma abreviada.
El sistema octal utiliza ocho dígitos diferentes (0, 1, 2, 3, 4, 5, 6, 7) que,
dependiendo del lugar que ocupen, tienen un valor determinado por
potencias de base 8.
1.2. Conversiones entre Sistemas
Numéricos de Bases Diferentes
1.2. Conversión de Números Decimales a
Binarios, y viceversa
Para convertir un número
Para convertir un número
expresado en sistema decimal al
expresado en sistema binario al
binario realizamos divisiones por
2 y colocamos los restos
decimal, basta con desarrollar el
obtenidos y el último cociente. número.
1001011(2) =
1 x 26 + 0 x 2 5 + 0 x 24 + 1 x 23 + 0
x 22 + 1 x 2 1 + 1 x 2 0 =
1 x 64 + 1 x 8 + 1 x 2 + 1 =
64 + 8 + 2 + 1 = 75
El total de números que se pueden
representar con n dígitos binarios
es 2n, mientras que el número más
Así, 75(10 = 1001011(2 grande que se puede representar es
2n - 1
1.2. Conversión de números Binarios a
Hexadecimales, y viceversa
Se realiza “expandiendo” cada dígito hexadecimal a cuatro
dígitos binarios o “contrayendo” cada grupo de cuatro dígitos
binarios a su correspondiente dígito hexadecimal.
En el caso de no poder formar grupos de cuatro dígitos (o tres,
como en el sistema octal), se deben añadir ceros a la izquierda
hasta completar el último grupo.
1.2. Conversión de Números Binarios a
Octales, y viceversa
Cada dígito de un
número octal equivale a
tres dígitos en el sistema
binario; por tanto, el
modo de convertir un
número entre estos
sistemas equivale a
“expandir” cada dígito
octal a tres binarios o en
“contraer” grupos de tres
dígitos binarios a su
correspondiente dígito
octal.
1.3. Operaciones Aritméticas entre Sistemas
Numéricos de Diferentes Bases
1.3. Suma Binaria
Se efectúa exactamente en la misma forma que la suma de
números decimales, siguiendo los mismos pasos generales.
En la suma binaria solamente pueden ocurrir cuatro casos,
los cuales se muestran en la siguiente tabla:
1.3. Suma Binaria
1.3. Resta Binaria
1.3. Multiplicación Binaria
1.4. Códigos BCD, ASCII, UNICODE
1.4. Decimal Codificado en
Binario (BCD)
Binary-Coded Decimal (BCD) o Decimal codificado en binario es
un estándar para representar números decimales en el sistema
binario , en donde cada dígito decimal es codificado con una
secuencia de 4 bits. Con esta codificación especial de los dígitos
decimales en el sistema binario, se pueden realizar operaciones
aritméticas como suma, resta, multiplicación y división de
números en representación decimal, sin perder en los cálculos la
precisión ni tener las inexactitudes en que normalmente se incurre
con las conversiones de decimal a binario puro y de binario puro a
decimal. La conversión de los números decimales a BCD y viceversa
es muy sencilla, pero los cálculos en BCD se llevan más tiempo y
son algo más complicados que con números binarios puros.
1.4. Decimal Codificado en Binario
(BCD)
Decimal:
0 1 2 3 4 5 6 7 8 9
BCD: 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001
1.4. Código ASCII
Para poder comunicarse el hombre y la computadora,
existen Códigos.
La computadora, como hemos visto solamente interpreta
los códigos basado en los dos estados.
De esta forma, se ha convenido asociar esa secuencia
de “0” y “1” con un carácter.
Por ejemplo la letra “A” le corresponde:
01000001
Esta secuencia, traducida al sistema decimal,
corresponde al número 65.
1.4. Código ASCII
A cada secuencia de ocho números en Código Binario le corresponde
un carácter. Dicha correspondencia se llama Codificación ASCII
ASCII = American Standard Code for Information Interchange
Significa: Estándar Americano de Codificación para el Intercambio
de Información
ASCII es un estándar para representar caracteres y símbolos en
forma electrónica. Usar estándares aumenta la eficiencia y elimina
errores. Es muy útil para la comunicación entre usuarios.
1.4. Código ASCII
Para representar la siguiente palabra, nos basamos en el Tablero
de Napier y la Tabla ASCII
PALABRA P A Z
Correspondencia en la 80 65 90
Tabla ASCII
Equivalente según 01010000 01000001 01011010
tablero de Napier
1.4. Tabla Código ASCII
Byte carácter Byte carácter Byte carácter
0010 0000 Espacio 0011 0000 0 0100 0000 @
0010 0001 ! 0011 0001 1 0100 0001 A
0010 0010 “ 0011 0010 2 0100 0010 B
0010 0011 # 0011 0011 3 0100 0011 C
0010 0100 $ 0011 0100 4 0100 0100 D
0010 0101 % 0011 0101 5 0100 0101 E
0010 0110 & 0011 0110 6 0100 0110 F
0010 0111 ‘ 0011 0111 7 0100 0111 G
0010 1000 ( 0011 1000 8 0100 1000 H
0010 1001 ) 0011 1001 9 0100 1001 I
0010 1010 * 0011 1010 : 0100 1010 J
0010 1011 + 0011 1011 ; 0100 1011 K
0010 1100 , 0011 1100 < 0100 1100 L
0010 1101 - 0011 1101 = 0100 1101 M
0010 1110 . 0011 1110 > 0100 1110 N
0010 1111 / 0011 1111 ? 0100 1111 O
1.4. Tabla Código ASCII
Byte carácter Byte carácter Byte carácter
0101 0000 P 0110 0000 ` 0111 0000 p
0101 0001 Q 0110 0001 a 0111 0001 q
0101 0010 R 0110 0010 b 0111 0010 r
0101 0011 S 0110 0011 c 0111 0011 s
0101 0100 T 0110 0100 d 0111 0100 t
0101 0101 U 0110 0101 e 0111 0101 u
0101 0110 V 0110 0110 f 0111 0110 v
0101 0111 W 0110 0111 g 0111 0111 w
0101 1000 X 0110 1000 h 0111 1000 x
0101 1001 Y 0110 1001 i 0111 1001 y
0101 1010 Z 0110 1010 j 0111 1010 z
0101 1011 [ 0110 1011 k 0111 1011 {
0101 1100 \ 0110 1100 l 0111 1100 |
0101 1101 ] 0110 1101 m 0111 1101 }
0101 1110 ^ 0110 1110 n 0111 1110 ~
0101 1111 _ 0110 1111 o 0111 1111
1.4. Código Unicode
Unicode es un estándar de codificación de caracteres diseñado
para facilitar el tratamiento informático, transmisión y
visualización de textos de múltiples lenguajes y disciplinas
técnicas, además de textos clásicos de lenguas muertas. El término
Unicode proviene de los tres objetivos perseguidos: universalidad,
uniformidad y unicidad.
Este estándar es mantenido por el Unicode Technical
Committee(UTC), integrado en el Consorcio Unicode, del que
forman parte con distinto grado de implicación empresas
como: Microsoft, Apple, Adobe, IBM, Oracle, SAP, Google o Yahoo
, instituciones como la Universidad de Berkeley, y profesionales y
académicos a título individual. El Unicode Consortium mantiene
estrecha relación con ISO/IEC, con la que mantiene desde 1991 el
acuerdo de sincronizar sus estándares que contienen los mismos
caracteres y puntos de código.
1.4. Código Unicode
1.5. Aritmética BCD y ASCII
Multiplicación de 8 bits
En la multiplicación de 8 bits el multiplicando deberá siempre
estar en AL y el multiplicador en cualquier registro o localidad
de memoria de8 bits. NO se permite la multiplicación
inmediata. Ej. El siguiente programa ejecuta la multiplicación
de AL por BL y el producto aparecen AX, el cual es transferido a
BX.
MOV BL, 5H
MOV CL, 10H
MOV AL, CL
MUL BL
MOV BX, AX
1.5. Aritmética BCD y ASCII
Multiplicación de 16 bits
Es semejante al de 8 bits, la diferencia está en que el multiplicando se
debe cargar en AX en vez de AL, y el producto se aparece en DX-AX, parte
alta y parte baja respectivamente (en lugar de AX solamente).
La división
al igual que la multiplicación se realiza con números de 8 o de 16 bits.
Estos números son enteros con sigo (IDIV) o sin signo (DIV). El
dividendo siempre será uno de doble de ancho. O sea, en una división de
8 bits siempre se divide un número de 16 bits entre uno de 8 bits.
División de 8 bits
Una división de 8 bits utiliza el registro AX para almacenar el dividendo,
el divisor se coloca en cualquier registro o memoria de 8 bits. El cociente
aparecerá en AL después de la división y el AH contiene el residuo
1.6. Tipo de Datos
1.6. Manejo Interno de Datos
Enteros
Parte alta Parte baja
(bits o cifras más (bits o cifras
significativos) menos
significativos)
1.6. Manejo Interno de Datos
Enteros
Sin Signo (magnitud
no signada)
Con signo
(magnitud signada)
¿Cuántos posibles s = bit de signo
valores tendrá c/u?
1.7. Representación Números Sin
Signo (SS)
El valor del número en binario natural (sin signo)
n-1 0
n bits
Rango de representación con n dígitos [0, 2^n-1]
Ej: n=8 : B´ 00100100 = 36
1.8. Representación Números Con
Signo (CS)
Representar un número entero (con signo) de distintas
formas
Signo magnitud
Complemento a 1
Complemento a 2
Realizar operaciones básicas con números enteros
1.9. Complementos
No es necesario distinguir entre la suma y la
resta
Dos tipos
Complemento a la base 2 - 1 (complemento a
1)
Complemento a la base 2 (complemento a 2)
1.9.1. Complemento a 1
Producto
• Como en signo-magnitud
Extensión del signo
• positivos: 3 -> 0112 = 0...0112
• negativos: -3 -> 1002 = 1...1002
1.9.1. Complemento a 1
Suma y resta
Siempre se suma, y se suma TAMBIÉN el bit de acarreo
(RECIRCULAR)
Signo resultante en la suma de números enteros:
• El de los operando si son del mismo signo. Si el signo sale
distinto que el de los operando: overflow.
• El del mayor de los dos, si son de distinto signo
1.9.2. Complemento a 2
Cuando tenemos un número en binario en complemento
a 2 y necesitamos saber su valor en decimal basta con
aplicarle complemento a 2 de nuevo para obtener el
correspondiente valor.
Por ejemplo para saber qué número representa 1110 (en
complemento a 2), invertimos los bits: 0001 y sumamos 1:
0001 + 1 = 0010 lo cual es 2, por lo tanto la combinación
1110 representa -2.
1.9.2. Complemento a 2
Para calcular el
complemento a 2 de un
número, se invierten los "0"s
por "1"s y los "1"s por "0"s y
luego se le suma 1 al número.
Ejemplo de representación
sin signo para enteros
representados en 4 bits:
1.9.2. Complemento a 2
1.9.2. Complemento a 2
Ej: Ca2(-90)=Ca1(-90)+1=10100101=10100110
1.10. Representación en S/M, C1,
C2
1.10. Signo-Magnitud
1.10. Signo-Magnitud
1.10. Signo-Magnitud
Producto
1. Se multiplican ambos operando. Si son del
mismo signo el resultado es positivo. Si
no, es negativo.
El tamaño del resultado es la suma de los
tamaños de los operando
1. n bits * m bits = n+m bits
No hay overflow (desbordamiento)
1.10. Signo-Magnitud
1.10. Representación de
Complemento a 1
1.10. Representación de
Complemento a 2
1.11. Aritmética (suma y resta) en
C2
1.11. Suma de Números en
Complemento a 2
Cuando se realiza la suma entre dos números representados en
complemento a 2 se siguen usando las reglas de la suma binaria
pero si hay acarreo este se descarta. El desbordamiento ocurre
cuando al sumar dos números del mismo signo el resultado es
del signo opuesto.
Ejemplos de sumas con números en complemento a 2 para
representación de 4 bits:
a) 4+3:
b) 5 + (-7) :
c) 5+4:
d) (-4) + 4 :
1.11. Suma de números en
complemento a 2
1.11. Resta de números en
complemento a 2
-1 +0
-2 1111 0000 +1
1110 0001
-3 +2 +
1101 0010
-4 1100 0011 +3 0 100 = + 4
-5 1011 0100 +4 1 100 = - 4
1010 0101
-6 +5 -
1001 0110
-7 1000 0111 +6
-8 +7
Hay una única representación para el cero (bueno)
Hay un número negativo más
Es menos intuitivo el obtener el negativo de un número
1.11. Resta de números en
complemento a 2
Para realizar la resta se obtiene el complemento a 2 del
substraendo y se le suma al minuendo. Por ejemplo para realizar
la resta de 7 – 3 se suma 7 + (-3), es decir, se calcula el
complemento a 2 de 3 y se la suma al 7.
Ejemplos para números de 4 bits:
1.11. Suma y resta de números en complemento a dos
4 00100 -4 11100
+3 00011 + (-3) 11101
7 00111 -7 111001
Se desprecia el bit
de acarreo
Ca2 del
4 00100 -4 11100 resultado
-3 11101 +3 00011
1 100001 -1 11111
La simplicidad de las operaciones aritméticas en la notación de
complemento a dos hace que esta notación sea la más utilizada en
sistemas digitales
Comparación
1.12. Desbordamiento (Overflow)
Condición de desbordamiento
Sumar dos números positivos y obtener uno negativo o viceversa
-1 +0 -1 +0
-2 1111 0000 +1 -2 1111 0000 +1
1110 0001 1110 0001
-3 +2 -3
1101 1101 +2
0010 0010
-4 -4
1100 0011 +3 1100 0011 +3
-5 1011 -5 1011
0100 +4 0100 +4
1010 1010
-6 0101 -6 0101
1001
+5 +5
0110 1001 0110
-7 1000 0111 +6 -7 1000 +6
0111
-8 +7 -8 +7
5 + 3 = -8 ??? -7 - 2 = +7 ???
1.12. Desbordamiento (Overflow)
Más casos de OVERFLOW
Como se puede ver en los dos casos de
OVERFLOW, el número que se interpreta como
complemento a 1 es erróneo. En estos casos, se
necesita 1 bit más
1.13. Representación de Números
en un Punto Flotante
La representación de coma flotante (en inglés floating
point, ‘punto flotante’) es una forma de notación
científica usada en las CPU con la cual se pueden
representar números racionales extremadamente
grandes y pequeños de una manera muy eficiente y
compacta, y con la que se pueden realizar operaciones
aritméticas.
1.13. Representación de Números
en un Punto Flotante
Numero Reales Punto Flotante
Notación: N=
Donde: m=mantiza; e=exponente; B=base
Ejm.
10.75=10.75=10.75=……..
Forma Normalizada
S M S.EXP EXP
Punto Flotante
Notación
N=
1.14. Extensión con Cero y
Extensión con Signo
CPU Instrucción Significado Traducción
8086/88 MOV Move Mueve
Mueve con
80386 MOVZX Move with zero- extensión de
extend cero
Mueve con
80386 MOVSX Move with sign- extensión de
extend signo
1.15. Operaciónes lógicas: AND,
OR, XOR, NOT
La lógica binaria es la que trabaja con variables binarias y
operaciones lógicas del Algebra de Boole. Así, las variables sólo toman dos valores
discretos: V (verdadero) y F(falso); aunque también se pueden denotar como sí y no,
ó 1 y 0 respectivamente.
Los operadores lógicos son:
1. AND (el resultado es verdadero si ambas expresiones son verdaderas)
2. OR (el resultado es verdadero si alguna expresión es verdadera)
3. NOT (el resultado invierte la condición de la expresión)
4. OR-exclusiva (XOR) signo más "+" inscrito en un círculo
AND y OR trabajan con dos operando y retornan un valor lógico basadas en las
denominadas tablas de verdad. El operador NOT actúa sobre un operando. Estas
tablas de verdad son conocidas y usadas en el contexto de la vida diaria, por ejemplo:
"si hace sol Y tengo tiempo, iré a la playa", "si NO hace sol, me quedaré en casa", "si
llueve O hace viento, iré al cine". Las tablas de verdad de los operadores AND, OR y
NOT
1.15. Operaciónes lógicas: AND,
OR, XOR, NOT
1.15. Operaciónes lógicas: AND,
OR, XOR, NOT
1.15. El Operador Lógico AND
La puerta lógica Y, más conocida por su nombre en inglés AND (),
realiza la función booleana de producto lógico. Su símbolo es un
punto (·), aunque se suele omitir. Así, el producto lógico de las
variables A y B se indica como AB, y se lee A y B o simplemente A
por B.
A B x= A∙B x y resultado
0 0 0 true true true
0 1 0 true false false
1 0 0 false true false
1 1 1 false false false
1.15. El Operador Lógico OR
La operación OR es básicamente una suma, pero la expresión del
signo + no representa la adición ordinaria; en su lugar denota la
operación OR
A B x= A+B x y resultado
0 0 0 true true true
0 1 1 true false true
false true true
1 0 1
false false false
1 1 1
1.15. El Operador Lógico NOT
La puerta lógica NO (NOT en inglés) realiza la función booleana de
inversión o negación de una variable lógica. Una variable lógica A a la
cual se le aplica la negación se pronuncia como "no A" o "A negada".
A x= A
0 1 x resultado
true false
1 0 false true
1.15. El Operador Lógico XOR
La puerta lógica OR-exclusiva, más conocida por su nombre en
inglés XOR, realiza la función booleana A'B+AB'. Su símbolo
es (signo más "+" inscrito en un círculo).
Entrada Entrada Salida
0 0 0
0 1 1
1 0 1
1 1 0
1.16. Operaciones de Desplazamiento
Lógicas, Aritméticas y de Rotación
http://atc2.aut.uah.es/~avicente/asignaturas/ects/
pdf/lects_t3.pdf
1.16. Instrucciones de
Desplazamiento Lógicas
Todas las instrucciones de desplazamiento, ya sean de desplazamiento
aritmético, lógico, rotaciones o desplazamientos concatenadas
presentan el mismo formato y presentan las mismas características:
Formato: Nemónico Destino, veces
Donde
Nemónico es el nombre de la instrucción
Destino es el operando que actúa como fuente y destino de la
instrucción
Veces es el número de desplazamientos (a nivel de bit) que se realiza
la instrucción. Puede ser 1, o varios, en este último caso, el número
de veces solicitado debe indicarse en el registro CL previamente
Todas ellas modifican el Flag de acarreo
1.16. Instrucciones de
Desplazamiento Lógicas
Nombre: SAL
Formato: SAL destino, contador
Descripción:
Desplazará a la izquierda el operando destino tantos bits como indique el valor
del contador, rellenando con ceros los bits que quedan libres por la derecha
Si el valor de contador es mayor que uno, obligatoriamente deberemos
especificarlo en el registro CL
Si especifico un desplazamiento sobre un registro de ocho bits, la parte alta o la
parte baja de los registros AX, BX, CX o DX, el desplazamiento será local a esos
ocho bits. Copia el contenido del bit más significativo en el flag de acarreo
1.16. Instrucciones de Desplazamiento
Lógicas
Nombre: SAR
Formato: SAR destino, contador
Descripción:
El formato de la instrucción es SAR destino, contador
Desplazará a la derecha el operando destino tantos bits como indique el valor
del contador, rellenando con el bit de signo los bits que quedan libres por la
izquierda
Si el valor de contador es mayor que uno, obligatoriamente deberemos
especificarlo en el registro CL
Si especifico un desplazamiento sobre un registro de ocho bits, la parte alta o la
parte baja de los registros AX, BX, CX o DX, el desplazamiento será local a esos
ocho bits. Copia el contenido del bit menos significativo en el flag de acarreo
1.16. Instrucciones de
Desplazamiento Lógicas
Nombre: SHL
Formato: SHL destino, contador
Descripción:
Desplazará a la izquierda el operando destino tantos bits como indique el
valor del contador, rellenando con ceros los bits que quedan libres por la
derecha. Es un desplazamiento lógico. El comportamiento es igual que el de
la instrucción SAL
Si el valor de contador es mayor que uno, obligatoriamente deberemos
especificarlo en el registro CL
Si especifico un desplazamiento sobre un registro de ocho bits, la parte alta o
la parte baja de los registros AX, BX, CX o DX, el desplazamiento será local a
esos ocho bits. Copia el contenido del bit más significativo en el flag de
acarreo
1.16. Instrucciones de
Desplazamiento Lógicas
Nombre: SHR
Formato: SHR destino, contador
Descripción:
Desplazará a la derecha el operando destino tantos bits como indique el
valor del contador, rellenando con ceros los bits que quedan libres por la
izquierda. Es un desplazamiento lógico
Si el valor de contador es mayor que uno, obligatoriamente deberemos
especificarlo en el registro CL
Si especifico un desplazamiento sobre un registro de ocho bits, la parte
alta o la parte baja de los registros AX, BX, CX o DX, el desplazamiento
será local a esos ocho bits. Copia el contenido del bit menos significativo
en el flag de acarreo
1.16. Instrucciones de
Desplazamiento Lógicas
Nombre: ROL
Formato: ROL destino, contador
Descripción:
Rota los bits del operando destino hacia la izquierda tantos
bits como indique el valor del contador, rellenando con los bits
que saldrían por la izquierda los bits que quedan libres por la
derecha
Si especifico una rotación sobre un registro de ocho bits, la
parte alta o la parte baja de los registros AX, BX, CX o DX, la
rotación será local a esos ocho bits. Copia el contenido del bit
más significativo en el flag de acarreo
1.16. Instrucciones de
Desplazamiento Lógicas
Nombre: ROR
Formato: ROR destino, contador
Descripción:
Rota los bits del operando destino hacia la derecha tantos bits como indique
el valor del contador, rellenando con los bits que saldrían por la derecha los
bits que quedan libres por la izquierda
Si deseamos rotar el operando una única vez a la derecha, se puede
especificar directamente
Si el valor de contador es mayor que uno, obligatoriamente deberemos
especificarlo en el registro CL Si especifico una rotación sobre un registro de
ocho bits, la parte alta o la parte baja de los registros AX, BX, CX o DX, la
rotación será local a esos ocho bits. Copia el contenido del bit menos
significativo en el flag de acarreo
1.16. Instrucciones de
Desplazamiento Lógicas
Nombre: RCL
Formato: RCL destino, contador
Descripción:
Rota los bits del operando destino hacia la izquierda a través del flag
de acarreo tantos bits como indique el valor del contador
Si deseamos rotar el operando una única vez a la izquierda, se puede
especificar directamente. Si el valor de contador es mayor que uno,
obligatoriamente deberemos especificarlo en el registro CL
Si especifico una rotación sobre un registro de ocho bits, la parte alta
o la parte baja de los registros AX, BX, CX o DX, la rotación será
local a esos ocho bits
1.16. Instrucciones de
Desplazamiento Lógicas
Nombre: RCR
Formato: RCR destino, contador
Descripción:
Rota los bits del operando destino hacia la derecha tantos bits
como indique el valor del contador a través del flag de acarreo
Si deseamos rotar el operando una única vez a la derecha, se puede
especificar directamente. Si el valor de contador es mayor que uno,
obligatoriamente deberemos especificarlo en el registro CL
Si especifico una rotación sobre un registro de ocho bits, la parte
alta o la parte baja de los registros AX, BX, CX o DX, la rotación
será local a esos ocho bits
1.17. Modelo de Von Neumann
La arquitectura Von Neumann, también conocida como modelo de Von
Neumann o arquitectura Princeton, es una arquitectura de computadoras basada en la
descrita en 1945 por el matemático y físico John von Neumann
Este describe una arquitectura de diseño para un computador digital electrónico con partes
que constan de una unidad de procesamiento que contiene una unidad aritmético lógica y
registro del procesador, una unidad de control que contiene un registro de instrucciones y
un contador de programa, una memoria para almacenar tanto datos como
instrucciones, almacenamiento masivo externo, y mecanismos de entrada y salida.
El significado ha evolucionado hasta ser cualquier computador de programa almacenado en
el cual no pueden ocurrir una extracción de instrucción y una operación de datos al mismo
tiempo, ya que comparten un bus en común. Esto se conoce como el cuello de botella Von
Neumann y muchas veces limita el rendimiento del sistema.
El diseño de una arquitectura Von Neumann es más simple que la arquitectura
Harvard más moderna, que también es un sistema de programa almacenado, pero tiene un
conjunto dedicado de direcciones y buses de datos para leer datos desde memoria y escribir
datos en la misma, y otro conjunto de direcciones y buses de datos para ir a buscar
instrucciones.
1.17. Modelo de Von Neumann
Un computador digital de programa almacenado es una que mantiene
sus instrucciones de programa, así como sus datos, en memoria de
acceso aleatorio (RAM) de lectura-escritura.
Las computadoras de programa almacenado representaron un avance
sobre los ordenadores controlados por programas de la década de
1940, como la Colossus y la ENIAC, que fueron programadas por
ajustando interruptores e insertando parches, conduciendo datos de
la ruta y para controlar las señales entre las distintas unidades
funcionales.
En la gran mayoría de las computadoras modernas, se utiliza la
misma memoria tanto para datos como para instrucciones de
programa, y la distinción entre Von Neumann vs. Harvard se aplica a
la arquitectura de memoria cache, pero no a la memoria principal.
1.17. Modelo de Von Neumann
1.18. El Procesador
El microprocesador (o simplemente procesador) es el circuito integrado
central y más complejo de un sistema informático; a modo de ilustración, se
le suele llamar por analogía el «cerebro» de un computador.
Es el encargado de ejecutar los programas, desde el sistema operativo hasta
las aplicaciones de usuario; sólo ejecuta instrucciones programadas en
lenguaje de bajo nivel, realizando operaciones aritméticas y lógicas simples,
tales como sumar, restar, multiplicar, dividir, las lógicas binarias y accesos a
memoria.
Esta unidad central de procesamiento está constituida, esencialmente, por
registros, una unidad de control, una unidad aritmético lógica (ALU) y una
unidad de cálculo en coma flotante(conocida antiguamente como
«coprocesador matemático»).
1.18. El Procesador
Es el elemento fundamental de la computadora. El
microprocesador va a ocuparse de la ejecución de las
órdenes de comandos, los cálculos matemáticos
solicitados por las referidas órdenes y el manejo de los
datos asociados a los cálculos.
1.18.2 La Unidad de Control
Maneja y coordina todas las operaciones del sistema informático
dando prioridades y solicitando los servicios de los diferentes
componentes para dar soporte a la unidad aritmética-lógica en
sus operaciones elementales. Sus funciones básicas son:
1. Manejar todas las operaciones de acceso, lectura y escritura a
cada una de las posiciones de la memoria principal
2. Interpretar la instrucción en proceso
3. Realizar las tareas que se indican
1.19. Memoria Principal
Es la zona de trabajo donde la computadora va a
almacenar temporalmente las órdenes a ejecutar
y los datos que deberán manipular esas órdenes.
1.20. Las Unidades de Entrada y Salida
Los periféricos pueden clasificarse en las siguientes categorías principales:
Periféricos de entrada: Captan y digitalizan los datos de ser necesario, introducidos
por el usuario o por otro dispositivo y los envían al ordenador para ser procesados.
Periféricos de salida: Son dispositivos que muestran o proyectan información hacia el
exterior del ordenador. La mayoría son para informar, alertar, comunicar, proyectar o dar
al usuario cierta información, de la misma forma se encargan de convertir los impulsos
eléctricos en información legible para el usuario. Sin embargo, no todos de este tipo de
periféricos es información para el usuario. Un ejemplo: Impresora.
Periféricos de entrada/salida (E/S): Sirven básicamente para la comunicación de la
computadora con el medio externo.
Periféricos de almacenamiento: Son los dispositivos que almacenan datos
e información por bastante tiempo. La memoria de acceso aleatorio no puede ser
considerada un periférico de almacenamiento, ya que su memoria es volátil y temporal.
Ejemplos: Disco duro, Memoria flash, Cinta magnética, Memoria portátil, Disquete,
Grabadora o lectora de: CD; DVD; Blu-ray; HD-DVD.
1.21. Buses de Dirección, Datos y
Control
Bus de direcciones.- Es un canal de comunicación
constituido por líneas que apuntan a la dirección
de memoria a tratar.
Bus de datos.- El bus de datos es el medio por el
que se transmite la instrucción o dato apuntado
por el bus de direcciones.
Bus de control.- Es un número variable de líneas a
través de la que se controlan las unidades
complementarias.
1.22. Instrucciones del Procesador
Instrucciones Transferencia de Datos
Instrucciones Aritméticas
Instrucciones de Comparación
Instrucciones Lógicas
Instrucciones de Desplazamiento
Instrucciones de Bits
Instrucciones de Control
Instrucciones de Control y Misceláneas
http://es.wikipedia.org/wiki/
Conjunto_de_instrucciones
1.23. Lenguajes de Programación
1.23.1. Lenguajes de Maquina
SQL
Java
HTML
JavaScript
C++
XML
C#
C
Perl
Python
PHP
Objetive C
AJAX
ASP.net
Ruby
1.23.2. Lenguajes Ensamblador
Ensamblador se refiere a un tipo de programa,
informático que se encarga de traducir un fichero
fuente escrito en un lenguaje ensamblador, a un
fichero objeto que contiene código maquina
ejecutable directamente por la maquina para la
que se ha generado.
Ejemplo: MASM
1.23.3. Lenguajes de Alto Nivel
VB.NET
Ada
ALGOL
BASIC
C Sharp
FORTRAN
Java
Lisp
Modula-2
Pascal
Perl
PHP
PL/1
PL/SQL
Python
Ruby
Matlab
C++
Paginas Web
http://www.monografias.com/trabajos103/panorama-
general-lenguajes-programacion-aplicaciones-
mecatronicas/panorama-general-lenguajes-programacion-
aplicaciones-mecatronicas.shtml
http://es.wikibooks.org/wiki/Programaci
%C3%B3n_en_lenguaje_ensamblador/Primeros_conceptos
http://es.slideshare.net/luisrudeboy/14-ensambladores-y-
compiladores
http://es.wikipedia.org/wiki/Anexo:Instrucciones_x86