Free Essay

Ensamblador

In:

Submitted By cesarortega
Words 7389
Pages 30
Las instrucciones del ensamblador

Instrucciones de transferencia Son utilizadas para mover los contenidos de los operandos. Cada instrucción se puede usar con diferentes modos de direccionamiento.

MOV MOVS (MOVSB) (MOVSW)

Instrucciones de carga Son instrucciones específicas de los registros. Son usadas para cargar en algœn registro bytes o cadenas de bytes.

LODS (LODSB) (LODSW) LAHF LDS LEA LES

Instrucciones de la pila Estas instrucciones permiten el uso de la pila para almacenar y extraer datos.

POP POPF PUSH PUSHF

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.

Los diferentes movimientos de datos permitidos para esta instrucción son:

Destino: memoria. Fuente: acumulador
Destino: acumulador. Fuente: memoria
Destino: registro de segmento. Fuente: memoria/registro
Destino: memoria/registro. Fuente: registro de segmento
Destino: registro. Fuente: registro
Destino: registro. Fuente: memoria
Destino: memoria. Fuente: registro
Destino: registro. Fuente: dato inmediato
Destino: memoria. Fuente: dato inmediato

Ejemplo:

MOV AX,0006h
MOV BX,AX
MOV AX,4C00h
INT 21H

Este pequeño programa mueve el valor 0006H al registro AX, luego mueve el contenido de AX (0006h) al registro BX, por último mueve el valor 4C00h al registro AX para terminar la ejecución con la opción 4C de la interrupción 21h.
Instrucción MOVS (MOVSB) (MOVSW)

Propósito: Mover cadenas de bytes o palabras desde la fuente, direccionada por SI, hasta el destino direccionado por DI.

Sintaxis:

MOVS

Este comando no necesita parametros ya que toma como dirección fuente el contenido del registro SI y como destino el contenido de DI. La secuencia de instrucciones siguiente ilustran esto:

MOV SI, OFFSET VAR1
MOV DI, OFFSET VAR2
MOVS

Primero inicializamos los valores de SI y DI con las direcciones de las variables VAR1 y VAR2 respectivamente, despues al ejecutar MOVS se copia el contenido de VAR1 a VAR2.

Los comandos MOVSB y MOVSW se utilizan de la misma forma que MOVS, el primero mueve un byte y el segundo una palabra.
Instrucción LODS (LODSB) (LODSW)

Propósito: Cargar cadenas de un byte o palabra al acumulador.

Sintaxis:

LODS

Esta instrucción toma la cadena que se encuentre en la dirección especificada por SI, la carga al registro AL (o AX) y suma o resta 1 (segun el estado de DF) a SI si la transferencia es de bytes o 2 si la transferencia es de palabras.

MOV SI, OFFSET VAR1
LODS

La primer linea carga la dirección de VAR1 en SI y la segunda linea lleva el contenido de esa localidad al registro AL.

Los comandos LODSB y LODSW se utilizan de la misma forma, el primero carga un byte y el segundo una palabra (utiliza el registro completo AX).
Instrucción LAHF

Propósito: Transfiere al registro AH el contenido de las banderas

Sintaxis:

LAHF

Esta instrucción es útil para verificar el estado de las banderas durante la ejecución de nuestro programa.

Las banderas quedan en el siguiente orden dentro del registro:

SF ZF ¿? AF ¿? PF ¿? CF

El simbolo "¿?" significa que en esos bits habrá. un valor indefinido.
Instrucción LDS

Propósito: Cargar el registro del segmento de datos

Sintaxis:

LDS destino, fuente

El operando fuente debe ser una palabra doble en memoria. La palabra asociada con la dirección mas grande es transferida a DS, o sea que se toma como la dirección del segmento. La palabra asociada con la dirección menor es la dirección del desplazamiento y se deposita en el registro señalado como destino.
Instrucción LEA

Propósito: Carga la dirección del operando fuente.

Sintaxis:

LEA destino, fuente

El operando fuente debe estar ubicado en memoria, y se coloca su desplazamiento en el registro índice o apuntador especificado en destino.

Para ilustrar una de las facilidades que tenemos con este comando pongamos una equivalencia:

MOV SI, OFFSET VAR1

Equivale a:

LEA SI, VAR1

Es muy probable que para el programador sea mas sencillo crear programas extensos utilizando este último formato.
Instrucción LES

Propósito: Carga el registro del segmento extra

Sintaxis:

LES destino, fuente

El operando fuente debe ser un operando en memoria de palabra doble. El contenido de la palabra con la dirección mayor se interpreta como la dirección del segmento y se coloca en ES. La palabra con la dirección menor es la dirección del desplazamiento y se coloca en el registro especificado en el parámetro destino.
Instrucción POP

Propósito: Recupera un dato de la pila

Sintaxis:

POP destino

Esta instrucción transfiere el último valor almacenado en la pila al operando destino, despues incrementa en dos el registro SP.

Este incremento se debe a que la pila va creciendo desde la dirección mas alta de memoria del segmento hacia la mas baja, y la pila solo trabaja con palabras (2 bytes), entonces al incrementar en dos el registro SP realmente se le esta restando dos al tamaño real de la pila.
Instrucción POPF

Propósito: Extrae las banderas almacenadas en la pila.

Sintaxis:

POPF

Este comando transfiere bits de la palabra almacenada en la parte superior de la pila hacia el registro de banderas.

La forma de transferencia es la siguiente:

BIT BANDERA
0 CF
2 PF
4 AF
6 ZF
7 SF
8 TF
9 IF
10 DF
11 OF

Estas localizaciones son las mismas para el comando PUSHF

Una vez hecha la transferencia se incrementa en 2 el registro SP disminuyendo así el tamaño de la pila.
Instrucción PUSH

Propósito: Coloca una palabra en la pila.

Sintaxis:

PUSH fuente

La instrucción PUSH decrementa en dos el valor de SP y luego transfiere el contenido del operando fuente a la nueva dirección resultante en el registro recién modificado.

El decremento en la dirección se debe a que al agregar valores a la pila ésta crece de la dirección mayor a la dirección menor del segmento, por lo tanto al restarle 2 al valor del registro SP lo que hacemos es aumentar el tamaño de la pila en dos bytes, que es la única cantidad de información que puede manejar la pila en cada entrada y salida de datos.
Instrucción PUSHF

Propósito: Coloca el valor de las banderas en la pila

Sintaxis:

PUSHF

Este comando decrementa en 2 el valor del registro SP y luego se transfiere el contenido del registro de banderas a la pila, en la dirección indicada por SP.

Las banderas quedan almacenadas en memoria en los mismos bits indicados en el comando POPF

Las instrucciones del ensamblador

Instrucciones lógicas. Son utilizadas para realizar operaciones lógicas sobre los operandos.

AND NEG NOT OR TEST XOR

Instrucciones aritméticas. Se usan para realizar operaciones aritméticas sobre los operandos.

ADC ADD DIV IDIV MUL IMUL SBB SUB

Instrucción AND

Propósito: Realiza la conjunción de los operandos bit por bit.

Sintaxis:

AND destino, fuente

Con esta instrucción se lleva a cabo la operación "y" lógica de los dos operandos:

Fuente Destino | Destino
--------------------------
1 1 | 1
1 0 | 0
0 1 | 0
0 0 | 0

El resultado de la operación se almacena en el operando destino.
Instrucción NEG

Propósito: Genera el complemento a 2

Sintaxis:

NEG destino

Esta instrucción genera el complemento a 2 del operando destino y lo almacena en este mismo operando. Por ejemplo, si AX guarda el valor de 1234H, entonces:

NEG AX

Nos dejaría almacenado en el registro AX el valor EDCCH.
Instrucción NOT

Propósito: Lleva a cabo la negación bit por bit del operando destino.

Sintaxis:

NOT destino

El resultado se guarda en el mismo operando destino.
Instrucción OR

Propósito: OR inclusivo lógico

Sintaxis:

OR destino, fuente

La instrucción OR lleva a cabo, bit por bit, la disyunción inclusiva lógica de los dos operandos:

Fuente Destino | Destino
--------------------------
1 1 | 1
1 0 | 1
0 1 | 1
0 0 | 0

Instrucción TEST

Propósito: Comparar logicamente los operandos

Sintaxis:

TEST destino, fuente

Realiza una conjunción, bit por bit, de los operandos, pero a diferencia de AND esta instrucción no coloca el resultado en el operando destino, solo tiene efecto sobre el estado de las banderas.
Instrucción XOR

Propósito: OR exclusivo

Sintaxis:

XOR destino, fuente

Su función es efectuar bit por bit la disyunción exclusiva lógica de los dos operandos.

Fuente Destino | Destino
--------------------------
1 1 | 0
0 0 | 1
0 1 | 1
0 0 | 0

Instrucción ADC

Propósito: Adición con acarreo.

Sintaxis:

ADC destino, fuente

Lleva a cabo la suma de dos operandos y suma uno al resultado en caso de que la bandera CF esté activada, esto es, en caso de que exista acarreo.

El resultado se guarda en el operando destino.
Instrucción ADD

Propósito: Adición de los operandos.

Sintaxis:

ADD destino, fuente

Suma los dos operandos y guarda el resultado en el operando destino.
Instrucción DIV

Propósito: División sin signo

Sintaxis:

DIV fuente

El divisor puede ser un byte o palabra y es el operando que se le da a la instrucción.

Si el divisor es de 8 bits se toma como dividendo el registro de 16 bits AX y si el divisor es de 16 bits se tomara como dividendo el registro par DX:AX, tomando como palabra alta DX y como baja AX.

Si el divisor fué un byte el cociente se almacena en el registro AL y el residuo en AH, si fué una palabra el cociente se guarda en AX y el residuo en DX.
Instrucción IDIV

Propósito: División con signo

Sintaxis:

IDIV fuente

Consiste basicamente en lo mismo que la instrucción DIV, solo que esta última realiza la operación con signo.

Para sus resultados utiliza los mismos registros que la instrucción DIV.
Instrucción MUL

Propósito: Multiplicación sin signo

Sintaxis:

MUL fuente

El ensamblador asume que el multiplicando sera del mismo tamaño que el del multiplicador, por lo tanto multiplica el valor almacenado en el registro que se le da como operando por el que se encuentre contenido en AH si el multiplicador es de 8 bits o por AX si el multiplicador es de 16 bits.

Cuando se realiza una multiplicación con valores de 8 bits el resultado se almacena en el registro AX y cuando la multiplicación es con valores de 16 bits el resultado se almacena en el registro par DX:AX.
Instrucción IMUL

Propósito: Multiplicación de dos enteros con signo.

Sintaxis:

IMUL fuente

Este comando hace lo mismo que el anterior, solo que si toma en cuenta los signos de las cantidades que se multiplican.

Los resultados se guardan en los mismos registros que en la instrucción MUL.
Instrucción SBB

Propósito: Substracción con acarreo

Sintaxis:

SBB destino, fuente

Esta instrucción resta los operandos y resta uno al resultado si CF está activada. El operando fuente siempre se resta del destino.

Este tipo de substracción se utiliza cuando se trabaja con cantidades de 32 bits.
Instrucción SUB

Propósito: Substracción

Sintaxis:

SUB destino, fuente

Resta el operando fuente del destino.

Instrucciones de salto Son utilizadas para transferir el flujo del proceso al operando indicado.

JMP JA (JNBE) JAE (JNBE) JB (JNAE) JBE (JNA) JE (JZ) JNE (JNZ) JG (JNLE) JGE (JNL) JL (JNGE) JLE (JNG) JC JNC JNO JNP (JPO) JNS JO JP (JPE) JS

Instrucciones para ciclos: LOOP Transfieren el flujo del proceso, condicional o incondicionalmente, a un destino repitiendose esta acción hasta que el contador sea cero.

LOOP LOOPE LOOPNE

Instrucciones de conteo Se utilizan para decrementar o incrementar el contenido de los contadores.

DEC INC

Instrucciones de comparación Son usadas para comparar operandos, afectan al contenido de las banderas.

CMP CMPS (CMPSB) (CMPSW)

Instrucciones de banderas Afectan directamente al contenido de las banderas.

CLC CLD CLI CMC STC STD STI

Instrucción JMP

Propósito: Salto incondicional

Sintaxis:

JMP destino

Esta instrucción se utiliza para desviar el flujo de un programa sin tomar en cuenta las condiciones actuales de las banderas ni de los datos.
Instrucción JA (JNBE)

Propósito: Brinco condicional

Sintaxis:

JA Etiqueta

Después de una comparación este comando salta si está arriba o salta si no está abajo o si no es igual.

Esto significa que el salto se realiza solo si la bandera CF esta desactivada o si la bandera ZF esta desactivada (que alguna de las dos sea igual a cero).
Instrucción JAE (JNB)

Propósito: salto condicional

Sintaxis:

JAE etiqueta

Salta si está arriba o si es igual o salta si no está abajo.

El salto se efectua si CF esta desactivada.
Instrucción JB (JNAE)

Propósito: salto condicional

Sintaxis:

JB etiqueta

Salta si está abajo o salta si no está arriba o si no es igual.

Se efectúa el salto si CF esta activada.
Instrucción JBE (JNA)

Propósito: salto condicional

Sintaxis:

JBE etiqueta

Salta si está abajo o si es igual o salta si no está arriba.

El salto se efectúa si CF está activado o si ZF está activado (que cualquiera sea igual a 1).
Instrucción JE (JZ)

Propósito: salto condicional

Sintaxis:

JE etiqueta

Salta si es igual o salta si es cero.

El salto se realiza si ZF está activada.
Instrucción JNE (JNZ)

Propósito: salto condicional

Sintaxis:

JNE etiqueta

Salta si no es igual o salta si no es cero.

El salto se efectua si ZF está desactivada.
Instrucción JG (JNLE)

Propósito: salto condicional, se toma en cuenta el signo.

Sintaxis:

JG etiqueta

Salta si es más grande o salta si no es menor o igual.

El salto ocurre si ZF = 0 u OF = SF.
Instrucción JGE (JNL)

Propósito: salto condicional, se toma en cuenta el signo.

Sintaxis:

JGE etiqueta

Salta si es más grande o igual o salta si no es menor que.

El salto se realiza si SF = OF
Instrucción JL (JNGE)

Propósito: salto condicional, se toma en cuenta el signo.

Sintaxis:

JL etiqueta

Salta si es menor que o salta si no es mayor o igual.

El salto se efectúa si SF es diferente a OF.
Instrucción JLE (JNG)

Propósito: salto condicional, se toma en cuenta el signo.

Sintaxis:

JLE etiqueta

Salta si es menor o igual o salta si no es más grande.

El salto se realiza si ZF = 1 o si SF es diferente a OF
Instrucción JC

Propósito: salto condicional, se toman en cuenta las banderas.

Sintaxis:

JC etiqueta

Salta si hay acarreo.

El salto se realiza si CF = 1
Instrucción JNC

Propósito: salto condicional, se toma en cuenta el estado de las banderas.

Sintaxis:

JNC etiqueta

Salta si no hay acarreo.

El salto se efectúa si CF = 0.
Instrucción JNO

Propósito: salto condicional, se toma en cuenta el estado de las banderas.

Sintaxis:

JNO etiqueta

Salta si no hay desbordamiento.

El salto se efectua si OF = 0.
Instrucción JNP (JPO)

Propósito: salto condicional, toma en cuenta el estado de las banderas.

Sintaxis:

JNP etiqueta

Salta si no hay paridad o salta si la paridad es non.

El salto ocurre si PF = 0.
Instrucción JNS

Propósito: salto condicional, toma en cuenta el estado de las banderas.

Sintaxis:

JNP etiqueta

Salta si el signo esta desactivado.

El salto se efectúa si SF = 0.
Instrucción JO

Propósito: salto condicional, toma en cuenta el estado de las banderas.

Sintaxis:

JO etiqueta

Salta si hay desbordamiento (overflow).

El salto se realiza si OF = 1.
Instrucción JP (JPE)

Propósito: salto condicional, toma en cuenta el estado de las banderas.

Sintaxis:

JP etiqueta

Salta si hay paridad o salta si la paridad es par.

El salto se efectúa si PF = 1.
Instrucción JS

Propósito: salto condicional, toma en cuenta el estado de las banderas.

Sintaxis:

JS etiqueta

Salta si el signo está prendido.

El salto se efectúa si SF = 1.
Instrucción LOOP

Propósito: Generar un ciclo en el programa.

Sintaxis:

LOOP etiqueta

La instrucción loop decrementa CX en 1, y transfiere el flujo del programa a la etiqueta dada como operando si CX es diferente a 1.
Instrucción LOOPE

Propósito: Generar un ciclo en el programa considerando el estado de ZF

Sintaxis:

LOOPE etiqueta

Esta instrucción decrementa CX en 1. Si CX es diferente a cero y ZF es igual a 1, entonces el flujo del programa se transfiere a la etiqueta indicada como operando.
Instrucción LOOPNE

Propósito: Generar un ciclo en el programa, considerando el estado de ZF

Sintaxis:

LOOPNE etiqueta

Esta instrucción decrementa en uno a CX y transfiere el flujo del programa solo si ZF es diferente a 0.
Instrucción DEC

Propósito: Decrementar el operando

Sintaxis:

DEC destino

Esta operación resta 1 al operando destino y almacena el nuevo valor en el mismo oeprando.
Instrucción INC

Propósito: Incrementar el operando.

Sintaxis:

INC destino

La instrucción suma 1 al operando destino y guarda el resultado en el mismo operando destino.
Instrucción CMP

Propósito: Comparar los operandos.

Sintaxis:

CMP destino, fuente

Esta instrucción resta el operando fuente al operando destino pero sin que éste almacene el resultado de la operación, solo se afecta el estado de las banderas.
Instrucción CMPS (CMPSB) (CMPSW)

Propósito: Comparar cadenas de un byte o palabra.

Sintaxis:

CMP destino, fuente

Con esta instrucción la cadena de caracteres fuente se resta de la cadena destino.

Se utilizan DI como indice para el segmento extra de la cadena fuente y SI como indice de la cadena destino.

Solo se afecta el contenido de las banderas y tanto DI como SI se incrementan.
Instrucción CLC

Propósito: Limpiar bandera de acarreo.

Sintaxis:

CLC

Esta instrucción apaga el bit correspondiente a la bandera de acarreo, o sea, lo pone en cero.
Instrucción CLD

Propósito: Limpiar bandera de dirección

Sintaxis:

CLD

La instrucción CLD pone en cero el bit correspondiente a la bandera de dirección.
Instrucción CLI

Propósito: Limpiar bandera de interrupción

Sintaxis:

CLI

CLI pone en cero la bandera de interrupciones, desabilitando así aquellas interrupciones enmascarables.

Una interrupción enmascarable es aquella cuyas funciones son desactivadas cuando IF = 0.
Instrucción CMC

Propósito: Complementar la bandera de acarreo.

Sintaxis:

CMC

Esta instrucción complementa el estado de la bandera CF, si CF = 0 la instrucción la iguala a 1, y si es 1 la instrucción la iguala a 0.

Podemos decir que unicamente "invierte" el valor de la bandera.
Instrucción STC

Propósito: Activar la bandera de acarreo.

Sintaxis:

STC

Esta instrucción pone la bandera CF en 1.
Instrucción STD

Propósito: Activar la bandera de dirección.

Sintaxis:

STD

La instrucción STD pone la bandera DF en 1.
Instrucción STI

Propósito: Acticar la bandera de interrupción.

Sintaxis:

STI

La instrucción activa la bandera IF, esto habilita las interrupciones externas enmascarables (las que funcionan unicamente cuando IF = 1 ).

Interrupciones:
Interrupciones internas de hardware
Interrupciones externas de hardware
Interrupciones de software
Interrupciones mas usuales:
Int 21H (interrupción del DOS)
Int 10H (interrupción del BIOS)
Int 16H (Interrupción del BIOS)
Int 17H (Interrupción del BIOS)

Interrupciones internas de hardware

Las interrupciones internas son generadas por ciertos eventos que surgen durante la ejecución de un programa.

Este tipo de interrupciones son manejadas en su totalidad por el hardware y no es posible modificarlas.

Un ejemplo claro de este tipo de interrupciones es la que actualiza el contador del reloj interno de la computadora, el hardware hace el llamado a esta interrupción varias veces durante un segundo para mantener la hora actualizada.

Aunque no podemos manejar directamente esta interrupción (no podemos controlar por software las actualizaciones del reloj), es posible utilizar sus efectos en la computadora para nuestro beneficio, por ejemplo para crear un "reloj virtual" actualizado continuamente gracias al contador del reloj interno. Unicamente debemos escribir un programa que lea el valor actual del contador y lo traduzca a un formato entendible para el usuario.
Interrupciones externas de hardware

Las interrupciones externas las generan los dispositivos perifericos, como pueden ser: teclado, impresoras, tarjetas de comunicaciones, etc. También son generadas por los coprocesadores.

No es posible desactivar a las interrupciones externas.

Estas interrupciones no son enviadas directamente a la UCP, sino que se mandan a un circuito integrado cuya función es exclusivamente manejar este tipo de interrupciones. El circuito, llamado PIC 8259A, si es controlado por la UCP utilizando para tal control una serie de vias de comunicación llamadas puertos.
Interrupciones de software

Las interrupciones de software pueden ser activadas directamente por el ensamblador invocando al número de interrupción deseada con la instrucción INT.

El uso de las interrupciones nos ayuda en la creación de programas, utilizandolas nuestros programas son más cortos, es más fácil entenderlos y usualmente tienen un mejor desempeño debido en gran parte a su menor tamaño.

Este tipo de interrupciones podemos separarlas en dos categorias: las interrupciones del sistema operativo DOS y las interrupciones del BIOS.

La diferencia entre ambas es que las interrupciones del sistema operativo son más fáciles de usar pero también son más lentas ya que estas interrupciones hacen uso del BIOS para lograr su cometido, en cambio las interrupciones del BIOS son mucho más rápidas pero tienen la desventaja que, como son parte del hardware son muy específicas y pueden variar dependiendo incluso de la marca del fabricante del circuito.

La elección del tipo de interrupción a utilizar dependerá unicamente de las caracteristicas que le quiera dar a su programa: velocidad (utilizando las del BIOS) o portabilidad (utilizando las del DOS).
Interrupción 21H

Propósito: Llamar a diversas funciones del DOS.

Sintaxis:

Int 21H

Nota: Cuando trabajamos en MASM es necesario especificar que el valor que estamos utilizando es hexadecimal.

Esta interrupción tiene varias funciones, para accesar a cada una de ellas es necesario que el el registro AH se encuentre el número de función que se requiera al momento de llamar a la interrupción.

Funciones para desplegar información al video.

02H Exhibe salida
09H Impresión de cadena (video)
40H Escritura en dispositivo/Archivo

Funciones para leer información del teclado.

01H Entrada desde teclado
0AH Entrada desde teclado usando buffer
3FH Lectura desde dispositivo/archivo

Funciones para trabajar con archivos.

En esta sección unicamente se expone la tarea específica de cada función, para una referencia acerca de los conceptos empleados refierase a la unidad 7, titulada: "Introducción al manejo de archivos".

Método FCB
0FH Abrir archivo
14H Lectura secuencial
15H Escritura secuencial
16H Crear archivo
21H Lectura aleatoria
22H Escritura aleatoria
Handles
3CH Crear archivo
3DH Abrir archivo
3EH Cierra manejador de archivo
3FH Lectura desde archivo/dispositivo
40H Escritura en archivo/dispositivo
42H Mover apuntador de lectura/escritura en archivo

Función 02H

Uso:

Despliega un caracter a la pantalla.

Registros de llamada:

AH = 02H
DL = Valor del caracter a desplegar.

Registros de retorno:

Ninguno

Esta función nos despliega el caracter cuyo codigo hexagesimal corresponde al valor almacenado en el registro DL, no se modifica ningún registro al utilizar este comando.

Es recomendado el uso de la función 40H de la misma interrupción en lugar de esta función.
Función 09H Uso:

Despliega una cadena de carateres en la pantalla. Registros de llamada:

AH = 09H
DS:DX = Dirección de inicio de una cadena de caracteres

Registros de retorno:

Ninguno.

Esta función despliega los caracteres, uno a uno, desde la dirección indicada en el registro DS:DX hasta encontrar un caracter $, que es interpretado como el final de la cadena.

Se recomienda utilizar la función 40H en lugar de esta función.
Función 40H Uso:

Escribir a un dispositivo o a un archivo. Registros de llamada:

AH = 40H
BX = Vía de comunicación
CX = Cantidad de bytes a escribir
DS:DX = Dirección del inicio de los datos a escribir

Registros de retorno:

CF = 0 si no hubo error

AX = Número de bytes escritos

CF = 1 si hubo error

AX = Código de error

El uso de esta función para desplegar información en pantalla se realiza dandole al registro BX el valor de 1 que es el valor preasignado al video por el sistema operativo MS-DOS.
Función 01H Uso:

Leer un caracter del teclado y desplegarlo. Registros de llamada:

AH = 01H

Registros de retorno:

AL = Caracter leído

Con esta función es muy sencillo leer un caracter del teclado, el código hexadecimal del caracter leído se guarda en el registro AL. En caso de que sea un caracter extendido el registro AL contendra el valor de 0 y será necesario llamar de nuevo a la función para obtener el código de este caracter.
Función 0AH Uso:

Leer caracteres del teclado y almacenarlos en un buffer. Registros de llamada:

AH = 0AH
DS:DX = Dirección del área de almacenamiento
BYTE 0 = Cantidad de bytes en el área
BYTE 1 = Cantidad de bytes leídos desde BYTE 2 hasta BYTE 0 + 2 = caracteres leídos

Registros de retorno:

Ninguno

Los caracteres son leídos y almacenados en un espacio predefinido de memoria. La estructura de este espacio le indica que en el primer byte del mismo se indican cuantos caracteres serán leídos. En el segundo byte se almacena el número de caracteres que ya se leyeron, y del tercer byte en adelante se escriben los caracteres leídos.

Cuando se han almacenado todos los caracteres indicados menos uno la bocina suena y cualquier caracter adicional es ignorado. Para terminar la captura de la cadena es necesario darle [ENTER].
Función 3FH Uso:

Leer información de un dispositivo o archivo. Registros de llamada:

AH = 3FH
BX = Número asignado al dispositivo
CX = Número de bytes a procesar
DS:DX = Dirección del área de almacenamiento

Registros de retorno:

CF = 0 si no hay error y AX = número de bytes leidos.
CF = 1 si hay error y AX contendra el código del error.

Función 0FH Uso:

Abrir archivo FCB Registros de llamada:

AH = 0FH
DS:DX = Apuntador a un FCB

Registros de retorno:

AL = 00H si no hubo problema, de lo contrario regresa 0FFH

Función 14H Uso:

Leer secuencialmente un archivo FCB. Registros de llamada:

AH = 14H
DS:DX = Apuntador a un FCB ya abierto.

Registros de retorno:

AL = 0 si no hubo errores, de lo contrario se regresara el código correspondiente de error: 1 error al final del archivo, 2 error en la estructura del FCB y 3 error de lectura parcial.

Esta función lo que hace es que lee el siguiente bloque de información a partir de la dirección dada por DS:DX, y actualiza este registro.
Función 15H Uso:

Escribir secuencialmente a un archivo FCB Registros de llamada:

AH = 15H
DS:DX = Apuntador a un FCB ya abierto

Registros de retorno:

AL = 00H si no hubo errores, de lo contrario contendra el código del error: 1 disco lleno o archivo de solo lectura, 2 error en la formación o especificación del FCB.

La función 15H después de escribir el registro al bloque actual actualiza el FCB.
Función 16H Uso:

Crear un archivo FCB. Registros de llamada:

AH = 16H
DS:DX = Apuntador a un FCB ya abierto.

Registros de retorno:

AL = 00H si no hubo errores, de lo contrario contendra el valor 0FFH

Se basa en la información proveida en un FCB para crear un archivo en el disco.
Función 21H Uso:

Leer en forma aleatoria un archivo FCB. Registros de llamada:

AH = 21H
DS:DX = Apuntador a un FCB ya abierto.

Registros de retorno:

A = 00H si no hubo error, de lo contrario AH contendra el código del error: 1 si es fin de archivo, 2 si existe error de especificación de FCB y 3 si se leyó un registro parcial o el apuntador del archivo se encuentra al final del mismo.

Esta función lee el registro especificado por los campos del bloque actual y registro actual de un FCB abierto y coloca la información en el DTA (área de transferencia de disco o Disk Transfer Area).
Función 22H Uso:

Escribir en forma aleatoria en un archivo FCB. Registros de llamada:

AH = 22H
DS:DX = Apuntador a un FCB abierto.

Registros de retorno:

AL = 00H si no hubo error, de lo contrario contendrá el código del error: 1 si el disco está lleno o es archivo de solo lectura y 2 si hay error en la especificación de FCB.

Escribe el registro especificado por los campos del bloque actual y registro actual de un FCB abierto. Escribe dicha información a partir del contenido del DTA (área de transferencia de disco).
Función 3CH Uso:

Crear un archivo si no existe o dejarlo en longitud 0 si existe. (Handle) Registros de llamada:

AH = 3CH
CH = Atributo de archivo
DS:DX = Apuntador a una especificaión ASCIIZ

Registros de retorno:

CF = 0 y AX el número asignado al handle si no hay error, en caso de haberlo CF será 1 y AX contendra el código de error: 3 ruta no encontrada, 4 no hay handles disponibles para asignar y 5 acceso negado.

Esta función sustituye a la 16H. El nombre del archivo es especificado en una cadena ASCIIZ, la cual tiene como característica la de ser una cadena de bytes convencional terminada con un caracter 0.

El archivo creado contendra los atributos definidos en el registro CX en la siguiente forma:

Valor Atributos
00H Normal
02H Escondido
04H Sistema
06H Escondido y de sistema

El archivo se crea con los permisos de lectura y escritura. No es posible crear directorios utilizando esta función.
Función 3DH Uso:

Abre un archivo y regrese un handle Registros de llamada:

AH = 3DH
AL = modo de acceso
DS:DX = Apuntador a una especificación ASCIIZ

Registros de retorno:

CF = 0 y AX = número de handle si no hay errores, de lo contrario CF = 1 y AX = código de error: 01H si no es válida la función, 02H si no se encontró el archivo, 03H si no se encontr´o la ruta, 04H si no hay handles disponibles, 05H en caso de acceso negado, y 0CH si el código de acceso no es válido.

El handle regresado es de 16 bits.

El código de acceso se especifica en la siguiente forma:

BITS
7 6 5 4 3 2 1
. . . . 0 0 0 Solo lectura
. . . . 0 0 1 Solo escritura
. . . . 0 1 0 Lectura/Escritura
. . . X . . . RESERVADO

Función 3EH Uso:

Cerrar archivo (Handle). Registros de llamada:

AH = 3EH
BX = Handle asignado

Registros de retorno:

CF = 0 si no hubo errores, en caso contrario CF será 1 y AX contendrá el código de error: 06H si el handle es inválido.

Esta función actualiza el archivo y libera o deja disponible el handle que estaba utilizando.
Función 3FH Uso:

Leer de un archivo abierto una cantdad definida de bytes y los almacena en un buffer específico. Registros de llamada:

AH = 3FH
BX = Handle asignado
CX = Cantidad de bytes a leer
DS:DX = Apuntador a un área de trabajo.

Registros de retorno:

CF = 0 y AX = número de bytes leidos si no hubo error, en caso contrario CF = 1 y AX = código de error: 05H si acceso negado y 06H si no es válido el handle.

Función 40H Uso:

Escribe a un archivo ya abierto una cierta cantidad de bytes a partir del buffer designado. Registros de llamada:

AH = 40H
BX = Handle asignado
CX = Cantidad de bytes a escribir.
DS:DX = Apuntador al buffer de datos.

Registros de retorno:

CF = 0 y AX = número de bytes escritos si no hay errores, en caso de existir CF = 1 y AX = código del error: 05H si el acceso es negado y 06H si el handle es inválido.

Función 42H Uso:

Mover apuntador al archivo (Handle) Registros de llamada:

AH = 42H
AL = método utilizado
BX = Handle asignado
CX = La parte más significativa del offset
DX = La parte menos significativa del offset

Registros de retorno:

CF = 0 y DX:AX = la nueva posición del apuntador. En caso de error CF será 1 y AX = código de error: 01H si la función no es válida y 06H si el handle no es válido.

El método utilizado se configura como sigue:

Valor de AL Método
00H A partir del principio del archivo
01H A partir de la posición actual
02H A partir del final del archivo

Interrupción 10H

Propósito: Llamar a diversas funciones de video del BIOS.

Sintaxis:

Int 10H

Esta interrupción tiene diversas funciones, todas ellas nos sirven para controlar la entrada y salida de video, la forma de acceso a cada una de las opciones es por medio del registro AH.

En este tutorial unicamente veremos algunas de las funciones de esta interrupción.

Funciones comunes de la interrupción 10H.

02H Selección de posición del cursor

09H Escribe atributo y caracter en el cursor

0AH Escribe caracter en la posición del cursor

0EH Escritura de caracteres en modo alfanumérico
Función 02H Uso:

Posiciona el cursor en la pantalla dentro de las coordenadas válidas de texto. Registros de llamada:

AH = 02H
BH = Página de video en la que se posicionará el cursor.
DH = Fila
DL = Columna

Registros de retorno:

Ninguno.

Las posiciones de localización del cursor son definidas por coordenadas iniciando en 0,0, que corresponde a la esquina superior izquierda hasta 79,24 correspondientes a la esquina inferior derecha. Tenemos entonces que los valores que pueden tomar los registros DH y DL en modo de texto de 80 x 25 son de 0 hasta 24 y de 0 hasta 79 respectivamente.
Función 09H Uso:

Desplegar un caracter un determinado número de veces con un atributo definido empezando en la posición actual del cursor. Registros de llamada:

AH = 09H
AL = Caracter a desplegar
BH = Página de video en donde se desplegará
BL = Atributo a usar
Número de repeticiones.

Registros de retorno:

Ninguno

Esta función despliega un caracter el número de veces especificado en CX pero sin cambiar la posición del cursor en la pantalla.
Función 0AH Uso:

Desplegar un caracter en la posición actual del cursor. Registros de llamada:

AH = 0AH
AL = Caracter a desplegar
BH = Página en donde desplegar
BL = Color a usar (sólo en gráficos).
CX = Número de repeticiones

Registros de retorno:

Ninguno.

La única diferencia entre esta función y la anterior es que ésta no permite modificar los atributos, simplemente usa los atributos actuales.

Tampoco se altera la posición del cursor con esta función.
Función 0EH Uso:

Deplegar un caracter en la pantalla actualizando la posición del cursor. Registros de llamada:

AH = 0EH
AL = Caracter a desplegar
BH = Página donde se desplegara el caracter
BL = Color a usar (solo en gráficos)

Registros de retorno:

Ninguno

Interrupción 16H

Propósito: Manejar la entrada/salida del teclado.

Sintaxis:

Int 16H

Veremos dos opciones de la interrupción 16H, estas opciones, al igual que las de otras interrupciones, son llamadas utilizando el registro AH.

Funciones de la interrupción 16H

00H Lee un caracter de teclado

01H Lee estado del teclado
Función 00H Uso:

Leer un caracter del teclado. Registros de llamada:

AH = 00H

Registros de retorno:

AH = código de barrido (scan code) del teclado
AL = Valor ASCII del caracter.

Cuando se utiliza esta interrupción se detiene la ejecución del programa hasta que se introduzca un caracter desde el teclado, si la tecla presionada es un caracter ASCII su valor será guardado en el registro AH, de lo contrario el código de barrido será guardado en AL y AH contendrá el valor 00H.

El código de barrido fué creado para manejar las teclas que no tienen una representación ASCII como [ALT], [CONTROL], las teclas de función, etc.
Función 01H Uso:

Leer estado del teclado. Registros de llamada:

AH = 01H

Registros de retorno:

Si la bandera de cero, ZF, está apagada significa que hay información en el buffer, si se encuentra prendida es que no hay teclas pendientes. En caso de existir información el registro AH contendrá el código de la tecla guardada en el buffer.

Interrupción 17H

Propósito: Manejar la entrada/salida de la impresora.

Sintaxis:

Int 17H

Esta interrupción es utilizada para escribir caracteres a la impresora, inicializarla y leer su estado.

Funciones de la interrupción 16H

00H Imprime un caracter ASCII

01H Inicializa la impresora

02H Proporciona el estado de la impresora
Función 00H Uso:

Escribir un caracter a la impresora. Registros de llamada:

AH = 00H
AL = Caracter a imprimir
DX = Puerto a utilizar

Registros de retorno:

AH = Estado de la impresora.

El puerto a utilizar, definido en DX, se especifica así: LPT1 = 0, LPT2 = 1, LPT3 = 2 ...

El estado de la impresora se codifica bit por bit como sigue:

BIT 1/0 SIGNIFICADO
----------------------------------------
0 1 Se agotó el tiempo de espera
1 -
2 -
3 1 Error de entrada/salida
4 1 Impresora seleccionada
5 1 Papel agotado
6 1 Reconocimiento de comunicación
7 1 La impresora se encuentra libre

Los bits 1 y 2 no son relevantes.

La mayoria de los BIOS unicamente soportan 3 puertos paralelos aunque existen algunos que soportan 4.
Función 01H Uso:

Inicializar un puerto de impresión. Registros de llamada:

AH = 01H
DX = Puerto a utilizar

Registros de retorno:

AH = Status de la impresora

El puerto a utilizar, definido en DX, se especifica así: LPT1 = 0, LPT2 = 1, etc.

El estado de la impresora se codifica bit por bit como sigue:

BIT 1/0 SIGNIFICADO
----------------------------------------
0 1 Se agotó el tiempo de espera
1 -
2 -
3 1 Error de entrada/salida
4 1 Impresora seleccionada
5 1 Papel agotado
6 1 Reconocimiento de comunicación
7 1 La impresora se encuentra libre

Los bits 1 y 2 no son relevantes.

La mayoria de los BIOS unicamente soportan 3 puertos paralelos aunque existen algunos que soportan 4.
Función 02H Uso:

Obtener el estado de la impresora. Registros de llamada:

AH = 01H
DX = Puerto a utilizar

Registros de retorno:

AH = Status de la impresora.

El puerto a utilizar, definido en DX, se especifica así: LPT1 = 0, LPT2 = 1, etc.

El estado de la impresora se codifica bit por bit como sigue:

BIT 1/0 SIGNIFICADO
----------------------------------------
0 1 Se agotó el tiempo de espera
1 -
2 -
3 1 Error de entrada/salida
4 1 Impresora seleccionada
5 1 Papel agotado
6 1 Reconocimiento de comunicación
7 1 La impresora se encuentra libre

Los bits 1 y 2 no son relevantes.

La mayoría de los BIOS únicamente soportan 3 puertos paralelos aunque existen algunos que soportan 4.

Introducción al manejo de archivos

Formas de trabajar con archivos

Métodos de trabajo con archivos

Método FCB

Introducción
Abrir archivos
Crear un archivo nuevo
Escritura secuencial
Lectura secuencial
Lectura y escritra aleatoria
Cerrar un archivo

Método de canales de comunicación

Trabajando con handles
Funciones para utilizar handles

Métodos de trabajo con archivos

Existen dos formas de trabajar con archivos, la primera es por medio de bloques de control de archivos o "FCB" y la segunda es por medio de canales de comunicación, tambien conocidos como "handles".

La primera forma de manejo de archivos se viene utilizando desde el sistema operativo CPM, antecesor del DOS, por lo mismo asegura cierta compatibilidad con archivos muy antiguos tanto del CMP como de la versión 1.0 del DOS, además este método nos permite tener un número ilimitado de archivos abiertos al mismo tiempo. Si se quiere crear un volumen para el disco la única forma de lograrlo es utilizando este método.

Aún considerando las ventajas del FCB el uso de los canales de comunicación es mucho más sencillo y nos permite un mejor manejo de errores, además, por ser más novedoso es muy probable que los archivos así creados se mantengan compatibles a través de versiones posteriores del sistema operativo.

Para una mayor facilidad en las explicaciones posteriores me referiré a el método de bloques de control de archivos como FCBs y al método de canales de comunicación como handles.
Introducción

Existen dos tipos de FCB, el normal, cuya longitud es de 37 bytes y el extendido de 44 bytes. En este tutorial unicamente se tratará el primer tipo, así que de ahora en adelante cuando me refiera a un FCB realmente estoy hablando de un FCB de 37 bytes.

El FCB se compone de información dada por el programador y por información que toma directamente del sistema operativo. Cuando se utilizan este tipo de archivos unicamente es posible trabajar en el directorio actual ya que los FCB no proveen apoyo para el uso de la organización por directorios del DOS.

El FCB está formado por los siguientes campos:

POSICION LONGITUD SIGNIFICADO
00H 1 Byte Drive
01H 8 Bytes Nombre del archivo
09H 3 Bytes Extensión
0CH 2 Bytes Número de bloque
0EH 2 Bytes Tamaño del registro
10H 4 Bytes Tamaño del archivo
14H 2 Bytes Fecha de creación
16H 2 Bytes Hora de creación
18H 8 Bytes Reservados
20H 1 Byte Registro actual
21H 4 Bytes Regsitro aleatorio

Para seleccionar el drive de trabajo se sigue el siguiente formato: drive A = 1; drive B = 2; etc. Si se utiliza 0 se tomará como opción el drive que se esté utilizando en ese momento.

El nombre del archivo debe estar justificado a la izquierda y en caso de ser necesario se deberán rellenar los bytes sobrantes con espacios, la extensión del archivo se coloca de la misma forma.

El bloque actual y el registro actual le dicen a la computadora que registro será accesado en operaciones de lectura o escritura. Un bloque es un grupo de 128 registros. El primer bloque del archivo es el bloque 0. El primer registro es el registro 0, por lo tanto el último registro del primer bloque sería 127, ya que la numeración inició con 0 y el bloque puede contener 128 registros en total.
Abrir archivos

Para abrir un archivo FCB se utiliza la interrupción 21H, función 0FH. La unidad, el nombre y extensión del archivo deben ser inicializados antes de abrirlo.

El registro DX debe apuntar al bloque. Si al llamar a la interrupción ésta regresa valor de FFH en el registro AH es que el archivo no se encontró, si todo salió bien se devolvera un valor de 0.

Si se abre el archivo DOS inicializa el bloque actual a 0, el tamaño del registro a 128 bytes y el tamaño del mismo y su fecha se llenan con los datos encontrados en el directorio.
Crear un archivo nuevo

Para la creación de archivos se utiliza la interrupción 21H función 16H .

DX debe apuntar a una estructura de control cuyos requisitos son que al menos se encuentre definida la unidad lógica, el nombre y la extensión del archivo.

En caso de existir algun problema se devolverá el valor FFH en AL, de lo contrario este registro contendrá el valor de 0.
Escritura secuencial

Antes de que podamos realizar escrituras al disco es necesario definir el área de transferencia de datos utilizando para tal fin la función 1AH de la interrupción 21H.

La función 1AH no regresa ningún estado del disco ni de la operación, pero la función 15H, que es la que usaremos para escribir al disco, si lo hace en el registro AL, si éste es igual a cero no hubo error y se actualizan los campos del registro actual y bloque.
Lectura secuencial

Antes que nada debemos definir el área de transferencia de archivos o DTA.

Para leer secuencialmente utilizamos la función 14H de la int 21H.

El registro a ser leido es el que se encuentra definido por el bloque y el registro actual. El registro AL regresa el estado de la operación, si AL contiene el valor de 1 o 3 es que hemos llegado al final del archivo. Un resultado de 2 significa que el FCB está mal estructurado.

En caso de no existir error AL contendrá el valor de 0 y los campos bloque actual y registro actual son actualizados.
Lectura y escritura aleatoria

La función 21H y la función 22H de la interrupción 21H son las encargadas de realizar las lecturas y escrituras aleatorias respectivamente.

El número de registro aleatorio y el bloque actual son usados para calcular la posición relativa del registro a leer o escribir.

El registro AL regresa la misma información que para lectura o escritura secuencial. La información que será leída se regresará en el área de transferencia de disco, así mismo la información que será escrita reside en el DTA.
Cerrar un archivo

Para cerrar un archivo utilizamos la función 10H de la interrupción 21H.

Si después de invocarse esta función el registro AL contiene el valor de FFH significa que el archivo ha cambiado de posición, se cambió el disco o hay un error de acceso al disco.
Trabajando con handles

El uso de handles para manejar los archivos facilita en gran medida la creación de archivos y el programador puede concentrarse en otros aspectos de la programación sin preocuparse en detalles que pueden ser manejados por el sistema operativo.

La facilidad en el uso de los handles consiste en que para operar sobre un archivo únicamente es necesario definir el nombre del mismo y el número del handle a utilizar, toda la demás información es manejada internamente por el DOS.

Cuando utilizamos este método para trabajar con archivos no existe una distinción entre accesos secuenciales o aleatorios, el archivo es tomado simplemente como una cadena de bytes.
Funciones para utilizar handles

Las funciones utilizadas para el manejo de archivos por medio de handles son descritas en la unidad 6: Interrupciones, en la sección dedicada a la interrupción 21H.

Similar Documents

Free Essay

Hola Mundo

...en esta tarea. • No obstante, los compiladores se utilizan en casi todas las formas de la computación y cualquiera involucrado en esta área debería conocer la organización y el funcionamiento básico de un compilador. Historia de los Compiladores • A finales de la década de 1940, comenzaron a construirse las primeras computadoras digitales y fue necesario implementar un lenguaje capas de realizar los cálculos, es aquí donde aparece el lenguaje de maquina que representaba secuencias de códigos numéricos: C7 06 0000 0002 (instrucción que mueve el número dos a la ubicación 0000) • Desafortunadamente este lenguaje era tedioso de seguir y complicado de mantener, por lo que esta forma de codificación fue reemplazada por el lenguaje ensamblador, en...

Words: 3261 - Pages: 14

Free Essay

Pedulo Pololu

...ESCUELA SUPERIOR POLITÉCNICA DEL LITORAL CENTRO DE INVESTIGACIÓN CIENTÍFICA Y TECNOLÓGICA PÉNDULO INVERTIDO USANDO CONTROLADOR POLOLU Yuliana Cevallos Suárez, Israel España Mayalita, Pablo Enrique Ortega, Carlos Valdivieso Armendáriz Facultad de Ingeniería en Electricidad y Computación Escuela Superior Politécnica del Litoral (ESPOL) Campus Gustavo Galindo, Km 30.5 Vía Perimetral, Apartado 09-01-5863. Guayaquil, Ecuador ycevallo@espol.edu.ec, isedespa@espol.edu.ec eportega@espol.edu.ec, cvaldiviv@espol.edu.ec Resumen En el presente proyecto se realiza la construcción de un Péndulo Invertido usando un controlador Pololu y programación mediante el software Visual Studio4. El principal objetivo es el estudio y aplicación del modelo matemático de este sistema que puede ser utilizado para analizar sistemas más complejos, cuyos modelos son similares al del Péndulo Invertido. La estructura para la dinámica del sistema se la construyó en acrílico. El movimiento se lo realiza mediante dos motores pequeños manejados con un controlador PID para lograr el equilibrio del sistema. El desarrollo de este proyecto es importante para demostrar la aplicación del control moderno en la identificación de modelos matemáticos ya que el Péndulo Invertido es un modelo clásico de control. Abstract This project is about the construction of an Inverted Pendulum using a Pololu controller and using Visual Studio4 as programming software. The main objective is the study and application...

Words: 953 - Pages: 4

Premium Essay

Incoterms

...ANALISIS DE LAS MODIFICACIONES A LAS REGLAS INCOTERMS , A LAS BASES GRAVABLES Y SU RELACIÓN CON OTROS IMPUESTOS LINEAMIENTOS GENERALES INTRODUCCIÓN: Las Reglas Incoterms ® 2010 son usos internacionales emitidos por la Cámara Internacional de Comercio, que se emplean para distribuir los costos y riesgos en que incurren los compradores y vendedores internacionalmente. Si se emplean de manera adecuada, son además una herramienta muy útil para determinar la correcta integración de la base para el pago de impuestos de importación pues permiten distinguir lo que se encuentra incluido en el precio pagado. OBJETIVO: Conocer la forma correcta de integrar la base gravable en importaciones y su relación con las nuevas Reglas Incoterms® 2010 TEMARIO: 1. Elementos del valor en Aduana en México 1.1 Valor de Transacción 1.2 Incrementables 1.3 No Incrementables 2. Conceptos incluidos en el precio pagado dependiendo de la regla Incoterms® 2010 elegida 2.1 Las 11 reglas: EXW, FCA, CPT, CIP, DAT, DAP, DDP, FAS, FOB, CFR y CIF 2.2 Principales cambios entre los INCOTERMS 2000 y las nuevas Reglas Incoterms ® 2010 2.3 Uso de las Reglas Incoterms ® 2010 en los contratos, el arbitraje, los no aplicables en México y los medios de transporte correcto para cada Regla Incoterms® 2010. 3. Bases gravables para otros impuestos, derechos y aprovechamientos 3.1 El DTA 3.2 El IEPS 3.3 El ISAN 3.4 El IVA 3.5 Las cuotas...

Words: 6971 - Pages: 28

Free Essay

One Piece Flow

...3 Flujo Continuo E D C La producción nos conduce de departamentos especializados…. A B …a la producción en celdas enfocadas al producto con flujo de una pieza 4 Flujo Continuo El layout típico de una planta-- ¡¡¡¡ es un verdadero espagueti !!!! Ensamble Componentes Piezas Proceso 5 Flujo Continuo  Localice el equipo en secuencia apropiada y reduzca al mínimo la separación de la máquina por producto de familia B Agrupar por la secuencia del proceso para el flujo de una pieza a la vez . C Diseñe un Flujo compartido entre los procesos/equipo.   A Agrupar 1AA B 2A 3A C Prueba 5B 4B En principio, evite poner operadores en un solo sub-ensamble o lineas de subensambles Ensamblador B 1B A 2B 3B PORQUE ??? “Islas Aisladas” 6 Flujo Continuo Alternativas del Layout Flujo de una pieza a la vez transferida manualmente  Muy eficiente No muy flexible Flujo en línea recta (multi-procesos) 1 2 3 4 1 2 3 4 Caminar Organice las piezas, herramientas y los materiales que se necesiten en el punto de uso. Desperdico 7 ....

Words: 964 - Pages: 4

Free Essay

Algoritmos

...Algoritmo y Programación 1 Analista de Sistema de Computación Módulo 1 Conceptos básicos de programación lógica 1 Esquema de contenidos Módulo 1 Unidad de Aprendizaje 1 Concepto de procesador, entorno, acción y condición. Algoritmo. Lenguaje. Programa. Concepto de programación estructurada. Estructuras de programación: secuencia, decisión y repetición. Constantes. Variables, expresiones. Identificadores. Tipos de datos numéricos (enteros, reales). Tipo de datos carácter. Tipos de datos cadena de caracteres. Tipos de dato lógico. Cálculo proposicional. Expresiones aritméticas, relacionales, lógicas, carácter y cadena. Operadores. Operadores especiales. Tipos de operandos. Jerarquía de operaciones. Precedencia. Memoria. Asignación simple, compuesta. Aplicaciones en lenguaje Pascal. Introducción a la computación Unidad de Aprendizaje 2 Datos y operandos Unidad de Aprendizaje 3 Estructuras Estructuras de programación. Decisión simple (if then else). Decisión compuesta (case of). Repetición (while do, repeat until, for do). Anidados. Marca de fin. Contadores. Acumuladores. Máximos y mínimos. Aplicaciones en lenguaje Pascal. 2 Unidad de Aprendizaje 4 Subalgoritmos. Función. Procedimiento. Variables locales y globales. Pasaje de parámetros: por valor, por dirección. Subprogramas predefinidos. Mapa de memoria. Aplicaciones en lenguaje Pascal. Subprogramas 3 Unidad de Aprendizaje 1 Introducción a la computación Introducción ...

Words: 18358 - Pages: 74

Free Essay

Chorus

...UNIVERSIDAD DE GUADALAJA CENTRO UNIVERSITARIO DE CIENCIAS EXACTAS E INGENIERÍAS DIVISIÓN DE ELECTRONICA Y COMPUTACIÓN SISTEMAS OPERATIVOS AVANZADOS PROYECTO FINAL 2012-A JIMÉNEZ BENÍTEZ OMAR ALEJANDRO CÓDIGO.- 208435758 ING. LUIS HEBERTO GUTIÉRREZ AVILÉS Introducción Chorus es un sistema operativo para aplicaciones embebidas o de tiempo real. Sun MicroSystems adquirió Chorus Systèmes, la compañía que había creado Chorus OS, en 1997. Sun (ahora Oracle) ya proporciona soporte a Chorus. Desde el 2002 los creadores de Chorus se unieron formando una nueva compañía llamada Juluana que posteriormente se hizo llamar VirtualLogix, misma que aun da mantenimiento constante a Chorus. Actualmente liberado bajo código abierto, sistema operativo altamente escalable y estable, sirve para sistemas distribuidos, en red, embebidos, o en tiempo real y se ha establecido como un sistema operativo muy utilizado en hardware para comunicaciones, como celulares, cajeros bancarios, switches, impresoras, autómatas, etc. Su arquitectura se basa en módulos, característica que lo dota de alta configurabilidad y escalabilidad. Historia Chorus surgió del Instituto Francés de investigación INRIA en 1980, como proyecto de investigación en sistemas distribuidos, desde entonces han aparecido 5 versiones, enumeradas del 0 al 4. La idea de la versión 0, era modelar aplicaciones distribuidas como colecciones de actores, en esencia procesos estructurados, cada uno de los cuales alternaban entre...

Words: 7191 - Pages: 29

Free Essay

Asia-Pacífico

...TEMA X ASIA-PACIFICO ESQUEMA En su momento varios analistas internacionales pronosticaron que en la ultima parte del siglo xx, Asia-pacífico constituiría en su conjunto la principal potencia política y económica. Considera usted que esta hipótesis ha sido confirmada o estaría en vías de confirmación, o es errónea. Fundamente su respuesta. DIMENSIÓN ECONOMICA A.1. Antecedentes del surgimiento de Japón, los tigres asiáticos, los países de reciente industrialización y China. • El llamado milagro del Sudeste Asiático tuvo lugar desde finales de la Segunda Guerra Mundial; donde países que pertenecieron al Tercer Mundo lograron en un corto tiempo un crecimiento alto y sostenido sin precedentes en la historia mundial. • La definición de HPAE “high performance Asian Economies” (es decir, economías asiáticas de altos resultados) por parte del Banco Mundial contiene tres grupos de países cuyos milagros comenzaron en momentos diferentes. -Japón, después de IIGM -60´ cuatro economías asiáticas más pequeñas, conocidas como “Los Cuatro Tigres”: Hong Kong, Taiwán, Corea del Sur y Singapur. -Finalmente, a finales de los 70´y 80comenzó un rápido crecimiento de tres países de reciente industrialización, Malasia, Tailandia, Indonesia, y de forma más espectacular, encontramos a China • La orilla asiática del Pacífico es la región que ha registrado el mayor crecimiento económico del mundo en los últimos treinta años, el resultado ha sido el aumento del...

Words: 6737 - Pages: 27

Free Essay

Computer Room Audit

...Principios Generales de la Validación de Software Ricardo Murga EDP College of Puerto Rico Principios Generales de la Validación de Software Ricardo Murga EDP College of Puerto Rico Table of Contents SECCIÓN 1. PROPOSITO 6 SECCIÓN 2. ÁMBITO 6 2.1 APLICABILIDAD 7 2.2 AUDIENCIA 7 2.3 REQUISITOS REGLAMENTARIOS PARA LA VALIDACION DE SOFTWARE 8 SECCIÓN 3. CONTEXTO PARA LA VALIDACION DE SOFTWARE 9 3.1 DEFINICIONES Y TERMINOLOGIAS 10 3.1.1 REQUISITOS Y ESPECIFICACIONES 10 3.1.2 VERIFICACION Y VALIDACION 11 3.2 DESARROLLO DE SOFTWARE COMO PARTE DEL DISEÑO DEL SISTEMA 12 3.3 SOFTWARE ES DIFERENTE DE HARDWARE 13 3.4 BENEFICIOS DE LA VALIDACION DE SOFTWARE 15 SECCIÓN 4. PRINCIPIOS DE VALIDACION DE SOFTWARE 16 4.1 REQUISITOS 16 4.2 DEFECTO DE PREVENCION 16 4.3 TIEMPO Y ESFUERZO 16 4.4 PROGRAMA DE CICLO DE VIDA 17 4.5 PLANES 17 4.6 PROCEDIMIENTOS 17 4.7 VALIDACION DE SOFTWARE DESPUES DE UN CAMBIO 17 4.8 VALIDACION DE COBERTURA 18 4.9 INDEPENDENCIA DE REVISION 18 4.10 FLEXIBILIDAD Y RESPONSABILIDAD 19 SECCIÓN 5. ACTIVIDADES Y TAREAS 19 5.1 SOFTWARE DE ACTIVIDADES DEL CICLO DE VIDA 20 5.2 TAREAS TIPICAS DE APOYO DE VALIDACION 21 5.2.1 PLANIFICACION DE LA CALIDAD 21 5.2.2 REQUISITOS 22 5.2.3 DISEÑO 25 5.2.4 CONSTRUCCION O CODIFICACION 27 5.2.5 PRUEBAS REALIZADAS POR EL DESARROLLADOR DEL SOFTWARE 30 5.2.6 PRUEBAS DE USUARIOS DEL SITIO 33 5.2.7 MANTENIMIENTO Y CAMBIOS DE SOFTWARE 34 SECCIÓN 6. ¿Qué es COBIT? 36 ...

Words: 10373 - Pages: 42

Free Essay

Licenciada

...Instituto Tecnológico y de Estudios Superiores de Monterrey Seminario de Dirección Multinacional y Estrategia Corporativa. Primer Examen en Equipo. Caso DELL. Profesor: Dr. Gaspar Sánchez Sánchez Mejorada. Creado por: Osvelia Guerrero Pérez               A00348824                 Felipe Peralta Ortega                    A00349034                 Blanca Becerra                               A01064099                 Norma Ríos López                         A01064367                 Monserrat Morales Cibrián        A00986189 14 de Marzo del 2011. PARTE 1 MODELO DE EMPRESA 1. ¿Cuál es el modelo de empresa (mapa mental) pertinente para la empresa? Haga una figura pertinente 2. Realice la racionalización del modelo de empresa. Se pide: Visión (slogan), misión, estrategia de negocio, productos y servicios y estrategia operativa. VISIÓN: “Is the way we do business: customers complete satisfaction” MISIÓN: * Flexible (Cambiante) Cultura dominante DELL Control (Estable) La cultura dominante en DELL es altamente planeada, con un comportamiento burocrático, que se mueve en un entorno flexible, con un toque de emprendimiento en procesos. Para DELL inventar the next big thing no es la meta. Su misión es construir the current big thing mejor que cualquier otro. * Clientes Los clientes de DELL son: * Usuarios domésticos. * Micros, pequeñas y medianas empresas. * Sector público. ...

Words: 13388 - Pages: 54

Free Essay

Wj3A

...SEGUNDA SECCION PODER EJECUTIVO SECRETARIA DE HACIENDA Y CREDITO PUBLICO REGLAS de Carácter General en Materia de Comercio Exterior para 2011 (Continúa en la Tercera Sección) Al margen un sello con el Escudo Nacional, que dice: Estados Unidos Mexicanos.- Secretaría de Hacienda y Crédito Público. Con fundamento en los artículos 16 y 31 de la Ley Orgánica de la Administración Pública Federal; 1o. y 144 de la Ley Aduanera; 33, fracción I, inciso g) del Código Fiscal de la Federación; 14, fracción III de la Ley del Servicio de Administración Tributaria y artículo 3, fracción XXII del Reglamento Interior del Servicio de Administración Tributaria. Considerando Que de conformidad con el artículo 33, fracción I, inciso g) del Código Fiscal de la Federación, las resoluciones que establecen disposiciones de carácter general se publicarán anualmente, agrupándolas de manera que faciliten su conocimiento por parte de los contribuyentes. Que en este ordenamiento se agrupan aquellas disposiciones de carácter general aplicables al comercio exterior, que para fines de identificación, se denominan Reglas de Carácter General en Materia de Comercio Exterior. Que con la finalidad de facilitar el manejo, identificación y consulta de las diferentes reglas, se agruparán por temas específicos regulados por la Ley Aduanera y demás ordenamientos aplicables señalados en el artículo 1o. de dicha Ley, utilizando el formato integrado por tres componentes: título, capítulo y número...

Words: 125443 - Pages: 502