Вы находитесь на странице: 1из 9

6-3-2018 UNIDAD 2:

PROGRAMACION
BASICA
LENGAUJES DE INTERFAZ

Josue Evangelista Cruz


UNIDAD 2: PROGRAMACION BASICA

2.1 ENSAMBLADOR Y LIGADOR

Ensamblado

Un ensamblador es el programa que convierte un listado de código fuente, escrito en


un fichero de texto, en código objeto, es decir, lenguaje máquina (el que finalmente
interpretará el procesador) en el que sólo le faltan las referencias a rutinas externas. El
código fuente es un fichero que contiene la secuencia de instrucciones en lenguaje
ensamblador que forma el programa, así como ciertas directivas o comandos para el
propio ensamblador, que ha sido creado utilizando un editor de texto. El código objeto
consta del código en lenguaje máquina y de la información necesaria para enlazarlo
con otros módulos objeto.

Linkado y montado

Al construir un programa algunos de sus módulos pueden colocarse en el mismo


módulo fuente y ensamblarse juntos, otros pueden estar en módulos diferentes y ser
ensamblados separadamente. En cualquier caso, los módulos objeto resultantes,
algunos de los cuales pueden estar agrupados en librerías, deben ser enlazados para
formar el módulo de carga, antes de que se pueda ejecutar el programa. Además de
dar como salida el módulo de carga, el linker o enlazador imprime un mapa de
memoria que indica donde serán cargados los módulos objeto en la memoria.

2.2 CICLOS NUMERICOS

La arquitectura de los procesadores x86 obliga al uso de segmentos de memoria para


manejar la información, el tamaño de estos segmentos es de 64kb.

La razón de ser de estos segmentos es que, considerando que el tamaño máximo de un


número que puede manejar el procesador está dado por una palabra de 16 bits o registro,
no sería posible accesar a más de 65536 localidades de memoria utilizando uno solo de
estos registros, ahora, si se divide la memoria de la pc en grupos o segmentos, cada uno
de 65536 localidades, y utilizamos una dirección en un registro exclusivo para localizar
cada segmento, y entonces cada dirección de una casilla específica la formamos con dos
registros, nos es posible accesar a una cantidad de 4294967296 bytes de memoria, lo
cual es, en la actualidad, más memoria de la que veremos instalada en una PC.

Para que el ensamblador pueda manejar los datos es necesario que cada dato o
instrucción se encuentren localizados en el área que corresponde a sus respectivos
segmentos. El ensamblador accesa a esta información tomando en cuenta la localización
del segmento, dada por los registros DS, ES, SS y CS, y dentro de dicho registró la
dirección del dato específico.
2.3 CAPTURA BASICA DE CADENAS

Criptografía simétrica
La criptografía simétrica solo utiliza una clave para cifrar y descifrar el mensaje, que tiene
que conocer el emisor y el receptor previamente y este es el punto débil del sistema, la
comunicación de las claves entre ambos sujetos, ya que resulta más fácil interceptar una
clave que se ha transmitido sin seguridad (diciéndola en alto, mandándola por correo
electrónico u ordinario o haciendo una llamada telefónica).
Teóricamente debería de ser más fácil conocer la clave interceptándola que probándola
una por una por fuerza bruta, teniendo en cuenta que la seguridad de un mensaje cifrado
debe recaer sobre la clave y nunca sobre el algoritmo (por lo que sería una tarea eterna
reventar la clave, como comenté en un ejemplo de ataque por fuerza bruta).
Para poner un ejemplo la máquina Enigma (que era una máquina de cifrado
electromecánica que generaba abecedarios según la posición de unos rodillos que
podrían tener distintas órdenes y posiciones) usaba un método simétrico con un algoritmo
que dependía de una clave (que más que clave parece un ritual) que está formada por:
los rotores o rodillos que usaba, su orden y la posición de cada anillo, siendo esto lo más
básico.
La máquina Enigma contaba también con un libro de claves que contenía la clave del día
y hacia un poco más difícil encontrar la clave, pero no es una clave lo suficientemente
segura como para que no se pudiese reventar, sobre todo cuando los ingleses gracias a
los polacos consiguieron el algoritmo, por este motivo la mayoría de los días conseguían
la clave.
Y otro inconveniente que tiene este sistema es que si quieres tener un contenido
totalmente confidencial con 10 personas tienes que aprenderte o apuntarte (siendo esta
forma menos segura) las 10 claves para cada persona.

Criptografía asimétrica
La criptografía asimétrica se basa en el uso de dos claves: la pública (que se podrá
difundir sin ningún problema a todas las personas que necesiten mandarte algo cifrado) y
la privada (que no debe de ser revelada nunca).
Sabiendo lo anterior, si queremos que tres compañeros de trabajo nos manden un archivo
cifrado debemos de mandarle nuestra clave pública (que está vinculada a la privada) y
nos podrán mandar de forma confidencial ese archivo que solo nosotros podremos
descifrar con la clave privada.

Puede parecer a simple vista un sistema un poco cojo ya que podríamos pensar que
sabiendo la clave pública podríamos deducir la privada, pero este tipo de sistemas
criptográficos usa algoritmos bastante complejos que generan a partir de la frase de paso
(la contraseña) la clave privada y pública que pueden tener perfectamente un tamaño de
2048bits (probablemente imposible de reventar).
Como nos hemos dado cuenta solo cifra una persona (con la clave pública) y la otra se
limita a mirar el contenido, por lo que la forma correcta de tener una comunicación
bidireccional sería realizando este mismo proceso con dos pares de claves, o una por
cada comunicador. Otro propósito de este sistema es también el de poder firmar
documentos, certificando que el emisor es quien dice ser, firmando con la clave privada y
verificando la identidad con la pública.

Diferencias entre criptografía simétrica y asimétrica


Para empezar, la criptografía simétrica es más insegura ya que el hecho de pasar la clave
es una gran vulnerabilidad, pero se puede cifrar y descifrar en menor tiempo del que tarda
la criptografía asimétrica, que es el principal inconveniente y es la razón por la que existe
la criptografía híbrida.
Criptografía híbrida
Este sistema es la unión de las ventajas de los dos anteriores, debemos de partir que el
problema de ambos sistemas criptográficos es que el simétrico es inseguro y el asimétrico
es lento.
El proceso para usar un sistema criptográfico híbrido es el siguiente (para enviar un
archivo):

 Generar una clave pública y otra privada (en el receptor).


 Cifrar un archivo de forma síncrona.
 El receptor nos envía su clave pública.
 Ciframos la clave que hemos usado para encriptar el archivo con la clave pública
del receptor.
 Enviamos el archivo cifrado (síncronamente) y la clave del archivo cifrada
(asíncronamente y solo puede ver el receptor).

2.4 COMPARACION Y PRUEBA

Este grupo es una continuación del anterior, incluye las siguientes instrucciones:

• TEST verifica
• CMP compara

2.5 SALTOS

• JMP salta
• JE, JZ salta si es igual a cero
• JNE, JNZ salta si no igual a cero
• JS salta si signo negativo
• JNS salta si signo no negativo
• JP, JPE salta si paridad par
• JNP, JOP salta si paridad impar
• JO salta si hay capacidad excedida
• JNO salta si no hay capacidad excedida
• JB, JNAE salta si por abajo (no encima o igual)
• JNB, JAE salta si no está por abajo (encima o igual)
• JBE, JNA salta si por abajo o igual (no encima)
• JNBE, JA salta si no por abajo o igual (encima)
• JL, JNGE salta si menor que (no mayor o igual)
• JNL, JGE salta si no menor que (mayor o igual)
• JLE, JNG salta si menor que o igual (no mayor)
• JNLE, JG salta si no menor que o igual (mayor)
2.6 CICLOS DE CONDICIONALES

Ciclo For

La Sintaxis empleada por el ciclo for es la siguiente:

for (valores de entrada; condición de terminación; iteración por ciclo)


Las tres partes del ciclo se encuentran separadas por; (punto y coma)

La primer parte del ciclo especifica valores previos a su inicio.

La segunda parte indica la condición de terminación para el ciclo, la cual está


directamente relacionada con los valores iniciales.

Finalmente, la última parte especifica cómo serán manipulados los valores iniciales en
cada iteración del ciclo.

Ciclo IF

Una característica del ciclo if/else es el uso de llaves { }, en el ejemplo anterior pudo notar
que no fueron utilizadas llaves { } para delimitar las condicionales, al no emplearse este
mecanismo, se asume que el ciclo o condicional tendrá efecto únicamente en la línea
contigua a su inicio. Aunque es recomendable utilizar llaves ({ }) para incrementar la
legibilidad del código, es importante señalar que esta sintaxis de no utilizar llaves ({ }) es
válida y muy común (lamentablemente).

Existe otra variación de if/else que agrupa las condicionales en una sola expresión:

If (expresión Boolean? operación verdadera: operación falsa)

Ciclo While

En este ciclo el cuerpo de instrucciones se ejecuta mientras una condición permanezca


como verdadera, en el momento en que la condición se convierte en falsa el ciclo termina.

Su formato general es:

Cargar o inicializar variable de condición;


While (condición){

Grupo cierto de instrucciones;

Instrucción(es) para salir del ciclo;


};

*Disculpe esta línea profe, por más que intente quitarla, no pude.*
2.7 INCREMENTO Y DECREMENTO

Las instrucciones del ensamblador

Instrucciones de transferencia Son utilizadas para mover los contenidos de los 8


operandos. Cada instrucción se puede usar con diferentes modos de direccionamiento.

MOV

MOVS (MOVSB) (MOVSW)

Instrucción MOV

Propósito: Transferencia de datos entre celdas de memoria, registros y acumulador.

Sintaxis:

MOV Destino, Fuente

Donde Destino es el lugar a donde se moverán los datos y fuente es el lugar donde se
encuentran dichos datos.

2.8 CAPTURA DE CADENAS CON FORMATO

Permiten el movimiento, comparación o búsqueda rápida en bloques de datos:

• MOVC transferir carácter de una cadena

• MOVW transferir palabra de una cadena

• CMPC comparar carácter de una cadena

• CMPW comparar palabra de una cadena

• SCAC buscar carácter de una cadena

• SCAW buscar palabra de una cadena

• LODC cargar carácter de una cadena

• LODW cargar palabra de una cadena

• STOC guardar carácter de una cadena


• STOW guardar palabra de una cadena

• REP repetir

• CLD poner a 0 el indicador de dirección

• STD poner a 1 el indicador de dirección

2.9 INSTRUCCIONES ARITMÉTICAS

Instrucciones Aritméticas.

Estas instrucciones son las que realiza directamente el 8086/8088

• Grupo de adición:

• ADD suma

• ADC suma con acarreo

• AAA ajuste ASCII para la suma

• DAA ajuste decimal para la suma

• Grupo de sustracción:

• SUB resta

• SBB resta con acarreo negativo

• AAS ajuste ASCII para la resta

• DAS ajuste decimal para la resta

• Grupo de multiplicación:

• MUL multiplicación

• IMUL multiplicación entera

• AAM ajuste ASCII para la multiplicación

• Grupo de división:

• DIV división

• IDIV división entera

• AAD ajuste ASCII para la división


• Conversiones:

• CBW pasar octeto a palabra

• CWD pasar palabra a doble palabra

• NEG negación

Вам также может понравиться