Documentos de Académico
Documentos de Profesional
Documentos de Cultura
UNIDAD II
Lenguaje de Interfaz
Contents
2.1. ENSAMBLADOR Y LIGADOR A UTILIZAR.......................................................................................................3
2.2. CICLOS NUMERICOS.....................................................................................................................................4
2.3. CAPTURA BÁSICA DE CADENAS....................................................................................................................5
2.4. COMPARACION Y PRUEBA...........................................................................................................................5
2.5. SALTOS.........................................................................................................................................................5
2.6. CICLOS DE CONDICIONALES.........................................................................................................................6
2.7. INCREMENTO Y DECREMENTO....................................................................................................................7
2.8. CAPTURA DE CADENAS CON FORMATO......................................................................................................8
2.9. INSTRUCCIONES ARITMÉTICAS....................................................................................................................8
2.10. MANIPULACIÓN DE PILA............................................................................................................................9
2.11. OBTENCION DE CADENA CON REPRESENTACION HEXADECIMAL............................................................10
2.12. CAPTURA Y ALMACENAMIENTO DE DATOS NUMERICOS........................................................................12
2.13. OPERACIONES BASICAS SOBRE ARCHIVOS DE DISCO...............................................................................14
2.14. OBTENCIÓN DE UNA CADENA CON LA REPRESENTACIÓN HEXADECIMAL...............................................16
2.15 CAPTURA Y ALMACENAMIENTO DE DATOS NUMÉRICOS.........................................................................16
2.16 OPERACIONES BÁSICAS SOBRE ARCHIVOS DE DISCO................................................................................17
CONCLUSIÓN....................................................................................................................................................18
BIBLIOGRAFÍA...................................................................................................................................................19
2
- Lenguaje de Interfaz
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. Con TASM el proceso de
ensamblado se realiza escribiendo lo siguiente en la ventana de comandos:
tasm /zi /l nombre donde nombre es el nombre del fichero .asm con el código fuente. La
extensión no es necesaria ponerla y los parámetros /zi y /l sólo son útiles si queremos hacer un
proceso de depuración (debug) con el Turbo Debugger. Tras la ejecución de esta línea se nos
creará un fichero “nombre.obj
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.
Después de crearse el módulo de carga, éste es cargado por el cargador en la memoria del
ordenador y comienza la ejecución. Para linkar con TASM escribimos:
tlink /v nombre Tras esto se nos creará el fichero ejecutable (.exe o .com) que el sistema
operativo se encargará de cargar en memoria cuando lo ejecutemos. De nuevo, la extensión no es
necesaria ponerla y el parámetro /v sólo es útil para el Turbo Debugger.
3
- Lenguaje de Interfaz
4
- Lenguaje de Interfaz
Una cadena es una secuencia de bytes contiguos. Las operaciones que se pueden realizar sobre
las cadenas son las siguientes:
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)
5
- Lenguaje de Interfaz
• 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)
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)
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.
6
- Lenguaje de Interfaz
While (condición)
Efectivamente, sirve para mover. Lo que hace es copiar lo que haya en "origen" en "destino". Lo
de que primero vaya el destino y luego el origen es común a todas las instrucciones del 8086 que
tengan dos operandos, lo cual creará más de un quebradero de cabeza al principio.
MOV AX,BL
MOV AX, BX sin embargo hace que el procesador coja el contenido de BX y lo copiara en AX;
lo que había anteriormente en AX se pierde (puesto que un registro al fin y al cabo es un
número, en este caso de 16 bits, y ahora le hemos asignado un nuevo valor), mientras que BX no
se ve afectado. Cuando decimos "mover" en realidad sería más apropiado "copiar", porque no
alteramos en absoluto el operando origen.
7
- Lenguaje de Interfaz
• REP repetir
Instrucciones Aritméticas.
a. Grupo de adición:
• ADD suma
8
- Lenguaje de Interfaz
• DAA ajuste decimal para la suma
b. Grupo de sustracción:
• SUB resta
c. Grupo de multiplicación:
• MUL multiplicación
d. Grupo de división:
• DIV división
e. Conversiones:
• NEG negación
Una de las funciones de la pila del sistema es la de salvaguardar (conservar) datos (la otra es la
de salvaguardar las direcciones de retorno de las llamadas a subrutinas):
• PUSH introducir
• POP extraer
9
- Lenguaje de Interfaz
• PUSHF introducir indicadores
O D IF TF SF ZF AF P CF
F F F
- - - - - - - - -
• Realiza una operación nula, es decir, el microprocesador decodifica la instrucción y pasa
• a la siguiente. Realmente se trata de la instrucción XCHG AX,AX.
• ESC (Salida a un coprocesador).
• Sintaxis:
• ESC código_operación, origen
• Indicadores:
• Indicadores:
O D IF TF SF ZF AF P CF
F F F
- - - - - - - - -
O D IF TF SF ZF AF P CF
F F F
- - - - - - - - -
• El procesador se detiene hasta que se restaura el sistema o se recibe una interrupción. Como
en los PC se producen normalmente 18,2 interrupciones de tipo 8 por segundo (del
temporizador) algunos programadores utilizan HLT para hacer pausas y bucles de retardo.
Sin embargo, el método no es preciso y puede fallar con ciertos controladores de memoria.
• LOCK (Bloquea los buses).
10
- Lenguaje de Interfaz
• Sintaxis:
• LOCK
• Indicadores:
O D IF TF SF ZF AF P CF
F F F
- - - - - - - - -
• Es una instrucción que se utiliza en aplicaciones de recursos compartidos para asegurar que
no accede simultáneamente a la memoria más de un procesador. Cuando una instrucción va
precedida por LOCK, el procesador bloquea inmediatamente el bus, introduciendo una señal
por la patilla LOCK.
• WAIT (Espera).
• Sintaxis:
• WAIT
• Indicadores:
O D IF TF SF ZF AF P CF
F F F
- - - - - - - - -
• Provoca la espera del procesador hasta que se detecta una señal en la patilla TEST. Ocurre,
por ejemplo, cuando el coprocesador ha terminado una operación e indica su finalización.
Suele preceder a ESC para sincronizar las acciones del procesador y coprocesador.
• XLAT (traducción).
• Sintaxis:
• XLAT tabla
• Indicadores:
O D IF TF SF ZF AF P CF
F F F
- - - - - - - - -
11
- Lenguaje de Interfaz
• Hace que al final el contenido de AL sea 16 ya que es el quinto elemento de la tabla y AL
antes de XLAT TABLA contenía el valor 5.
• Otro ejemplo:
• MOV BX, OFFSET TABLA
• MOV AL, 4
• XLAT TABLA
• Para finalizar con las instrucciones de transferencia veremos un grupo de tres instrucciones:
• LEA o cargar dirección efectiva
• LDS o cargar el puntero en DS
• LES o cargar el puntero en ES denominadas de transferencia de direcciones.
• LEA (carga dirección efectiva).
• Sintaxis:
• LEA destino, origen Indicadores:
O D IF TF SF ZF AF P CF
F F F
- - - - - - - - -
O D IF TF SF ZF AF P CF
F F F
- - - - - - - - -
12
- Lenguaje de Interfaz
• Como resultado de esta instrucción, en DS: SI se hace referencia a la posición de memoria
1234h: 5678h; 'DD' sirve para definir una variable larga de 4 bytes (denominada PUNT en
el ejemplo).
• LES (carga un puntero utilizando ES).
• Sintaxis:
• LES destino, origen
• Esta instrucción es análoga a LDS, pero utilizando ES en lugar de D
MODELOS DE MEMORIA.
Los modelos de memoria constituyen las diversas maneras de acceder a la memoria por parte
de los compiladores de C. En el caso del Turbo C se pueden distinguir los siguientes:
TINY: Se emplea en los programas donde es preciso apurar el consumo de memoria hasta el
último byte. Los 4 registros de segmento (CS, DS, ES, SS) están asignados a la misma
dirección, por lo que existe un total de 64 Kb donde se mezclan código, datos y pila. Los
programas de este tipo pueden convertirse a formato COM.
SMALL: Se utiliza en aplicaciones pequeñas. Los segmentos de código y datos son diferentes
y no se solapan. Por ello, hay 64 kb para código y otros 64 Kb a repartir entre datos y pila.
Segmentos Punteros
Huge 1 Mb 1 Mb
13
- Lenguaje de Interfaz
MEDIUM: Este modelo es ideal para programas largos que no manejan demasiados datos. Se
utilizan punteros largos para el código (que puede extenderse hasta 1 Mb) y cortos para los
datos: la pila y los datos juntos no pueden exceder de 64 Kb.
COMPACT: Al contrario que el anterior, este modelo es el apropiado para los programas
pequeños que emplean muchos datos. Por ello, el programa no puede exceder de 64 Kb aunque
los datos que controla pueden alcanzar el Mb, ya que los punteros de datos son de tipo far por
defecto.
LARGE: Empleado en las aplicaciones grandes y también por los programadores de sistemas
que no tienen paciencia para andar forzando continuamente el tipo de los punteros (para
rebasar el límite de 64 Kb). Tanto los datos como el código pueden alcanzar el Mb, aunque no
se admite que los datos estáticos ocupen más de 64 Kb. Este modo es el que menos problemas
da para manejar la memoria, no siendo quizá tan lento y pesado como indica el fabricante.
HUGE: Similar al anterior, pero con algunas ventajas: por un lado, todos los punteros son
normalizados automáticamente y se admiten datos estáticos de más de 64 Kb. Por otro, y
gracias a esto último, es factible manipular bloques de datos de más de 64 Kb cada uno, ya que
los segmentos de los punteros se actualizan correctamente. Sin embargo, este modelo es el más
costoso en tiempo de ejecución de los programas.
ENTRADA Y SALIDA
Vamos a señalar las funciones que debe realizar un computador para ejecutar trabajos de
entrada/salida:
Transferencia de los datos entre el procesador y el dispositivo (en uno u otro sentido).
14
- Lenguaje de Interfaz
Esta última función es necesaria debido a la deferencia de velocidades entre los dispositivos y
la CPU y a la independencia que debe existir entre los periféricos y la CPU (por ejemplo,
suelen tener relojes diferentes).
Se define una transferencia elemental de información como la transmisión de una sola unidad
de información (normalmente un byte) entre el procesador y el periférico o viceversa. Para
efectuar una transferencia elemental de información son precisas las siguientes funciones:
Dispositivos externos
Una de las funciones básicas del ordenador es comunicarse con los dispositivos exteriores, es
decir, el ordenador debe ser capaz de enviar y recibir datos desde estos dispositivo. Sin esta
15
- Lenguaje de Interfaz
función, el ordenador no sería operativo porque sus cálculos no serían visibles desde el
exterior.
Existe una gran variedad de dispositivos que pueden comunicarse con un ordenador, desde los
dispositivos clásicos (terminales, impresoras, discos, cintas, etc.) hasta convertidores A/D y
D/A para aplicaciones de medida y control de procesos, De todos los posibles periféricos,
algunos son de lectura, otros de escritura y otros de lectura y escritura (es importante resaltar
que este hecho siempre se mira desde el punto de vista del proceso). Por otra parte, existen
periféricos de almacenamiento también llamados memorias auxiliares o masivas.
La mayoría de los periféricos están compuestos por una parte mecánica y otra parte electrónica.
Estas partes suelen separarse claramente para dar una mayor modularidad. A la componente
electrónica del periférico se le suele denominar controlador del dispositivo o, también,
adaptador del dispositivo. Si el dispositivo no tiene parte mecánica (como, por ejemplo, la
pantalla de un terminal), el controlador estará formado por la parte digital del circuito.
Frecuentemente los controladores de los dispositivos están alojados en una placa de circuito
impreso diferenciada del resto del periférico. En este caso es bastante habitual que un mismo
controlador pueda dar servicio a dispositivos de características similares.
El principal problema planteado por los periféricos es su gran variedad que también afecta a las
velocidades de transmisión. Por tanto, el mayor inconveniente que encontramos en los
periféricos es la diferencia entre sus velocidades de transmisión y la diferencia entre éstas y la
velocidad de operación del ordenador.
La conversión entre numeración binaria y hexadecimal es sencilla. Lo primero que se hace para
una conversión de un número binario a hexadecimal es dividirlo en grupos de 4 bits,
empezando de derecha a izquierda. En caso de que el último grupo (el que quede más a la
izquierda) sea menor de 4 bits se rellenan los faltantes con ceros.
Tomando como ejemplo el número binario 101011 lo dividimos en grupos de 4 bits y nos
queda:
16
- Lenguaje de Interfaz
10; 1011 Rellenando con ceros el último grupo (el de la izquierda): 0010; 1011 después
tomamos cada grupo como un número independiente y consideramos su valor en decimal:
0010 = 2; 1011 = 11
Pero como no podemos representar este número hexadecimal como 211 porqué sería un error,
tenemos que sustituir todos los valores mayores a 9 por su respectiva representación en
hexadecimal, con lo que obtenemos: 2BH (Donde la H representa la base hexadecimal) Para
convertir un número de hexadecimal a binario solo es necesario invertir estos pasos: se toma el
primer dígito hexadecimal y se convierte a binario, y luego el segundo, y así sucesivamente
hasta completar el número.
17
- Lenguaje de Interfaz
rastreo si al=0 es una tecla de función extendida. Función 01h. Determina si un carácter está
presente. Función 02h. Regresa el estado actual de las teclas shift. Función 10h. Lectura de un
carácter del teclado. Función 11h. Determina si está presente un carácter. MOVS. Mueve un
byte, palabra o palabra doble desde una localidad en memoria direccionada por SI a otra
localidad direccionada por DI. LODS. Carga desde una localidad de memoria direccionada por
SI un byte en AL, una palabra en AX o una palabra doble en EAX. STOS. Almacena el
contenido de los registros AL, AX, o EAX en la memoria direccionada por SI. CMPS.
Compara localidades de memoria de un byte, palabra o palabra doble direccionadas por SI, DI.
SCAS. Compara el contenido de AL, AX o EAX con el contenido de una localidad de memoria
direccionada por SI.
CONCLUSIÓN
Como conclusión puedo mencionar que el lenguaje de máquina, que es la serie de datos que la parte
física de la computadora o hardware es capaz de poder interpretar instrucciones como los que ya
hemos expuesto en el contenido de esta unidad.
18
- Lenguaje de Interfaz
El usi del lenguaje ensamblador le permite al programador indicar al computador exactamente cómo
llevar a cabo una tarea específica usando la menos cantidad de instrucciones
BIBLIOGRAFÍA.
https://es.scribd.com/doc/134779820/Unidad-2-Lenguajes-de-Interfaz#download
https://sistemasitseldorado.files.wordpress.com/2010/08/lenguaje-ensamblador-
primera-parte.pdf
https://prezi.com/majm12xtx7ds/lenguaje-ensamblador/
19