Académique Documents
Professionnel Documents
Culture Documents
1. Escribiendo problemas en Assembler Giandomnico 2. Conceptos bsicos sobre la programacin en Assembler Ferradal 3. Gua de referencia rpida 80186 (Disponible en 2do Parcial) 4. Introduccin al emu8086 (material para el TP2) 5. Documentacin DVIO y emu8086 (material para el TP2) 6. Gua de problemas TP2 (material para el TP2) 7. Documentacin del emu8086
20/10/2010 Clase1 Introduccin al Assembler Digital II 2
Emu 8086 Entorno educativo Basado en Windows En forma nativa admite dispositivos virtuales. Set de instrucciones de 8086
Microsoft Assembler (MASM 6.11) Entorno para produccin y educativo. Basado en DOS No admite dispositivos virtuales en forma nativa Set de instrucciones del 8086, 80186/286/386/486
20/10/2010
Traductores de lenguaje
Traductores de lenguaje
Cuando escribimos cdigo en un lenguaje de programacin (cualquiera), se requiere de un Traductor de lenguaje para que este cdigo pueda ser entendido por una computadora.
Compiladores
Tipos de lenguajes compilados
de Alto Nivel: (C, Pascal) cada sentencia puede generar muchas instrucciones en lenguaje de mquina. Utiliza un compilador para traducir el cdigo fuente a lenguaje de mquina (tcnicamente, cdigo objeto). de Bajo Nivel: (Assembler) codifican instrucciones simblicas, cada una de las cuales genera una instruccin en lenguaje de mquina. Utiliza un ensamblador para realizar la traduccin al lenguaje de mquina.
Programacin en Assembler
Ventajas:
Ms control sobre el manejo particular de los requerimientos de hardware (flexibilidad). Genera mdulos ejecutables ms pequeos y compactos (eficiencia). Con mayor probabilidad tiene una ejecucin ms rpida (velocidad).
Desventajas:
Se requiere conocimientos acerca del Hardware (arquitectura) de la computadora, su conjunto de instrucciones y sus reglas de uso Falta de portabilidad Mayor tiempo de programacin y programas fuente ms grandes.
20/10/2010 Clase1 Introduccin al Assembler Digital II 5
Compiladores (cont.)
Una prctica comn es combinar los beneficios de ambos niveles de programacin, se puede codificar el grueso de un proyecto en un lenguaje de alto nivel y los mdulos crticos (aquellos que provocan notables retardos) en lenguaje Assembler.
Archivo Fuente 1 (.ASM)
Ensamblador
Compilador
Linker
2.
Enlazar (Linking): implica convertir el mdulo .OBJ en un mdulo de cdigo de mquina .EXE
(ejecutable). Una de las tareas del enlazador es combinar los programas ensamblados en forma separada en un mdulo ejecutable.
Clase1 Introduccin al Assembler Digital II
20/10/2010
20/10/2010
El registro de FLAGS
AF: carry o borrow entre los 4 bits menos significativos. CF: carry o borrow desde el bit ms significativo. OF: cuando se produce overflow cuando se exceda la capacidad de representacin. SF: bit de signo (0=positivo y 1=negativo) PF: paridad del resultado (1=paridad impar, 0=paridad par). ZF: resultado cero DF: utilizado cuando se opera con strings IF: interrupcin presente TF: modalidad especial de trabajo del CPU (single-step en debugging)
20/10/2010 Clase1 Introduccin al Assembler Digital II 8
Corchetes: indican que lo especificado entre ellos es opcional. Campo de etiqueta: Es el nombre simblico de la primera posicin de una instruccin, puntero o dato; permite identificarla unvocamente. Campo de nombre: Contiene el mnemnico de la instruccin (sigla que representa el cdigo de la instruccin). Campo de operandos: Indica cuales son los datos implicados en la operacin. Campo de comentarios: Cuando en una lnea hay un punto y coma (;) todo lo que sigue en la lnea es un comentario. Existen tres tipos de sentencias: Instrucciones: se aplican en tiempo de ejecucin. Directivas: slo son utilizadas durante el ensamblaje, condicionando la forma de actuar del ensamblador, sin generar cdigo de mquina. Pseudocdigo: generan cdigo de mquina no ejecutable, slo reservan un espacio de memoria.
20/10/2010 Clase1 Introduccin al Assembler Digital II 9
Transfiere datos de longitud byte o word del operando origen al operando destino. Los operandos origen y destino pueden ser: registros (8 o 16 bits) posiciones de memoria inmediato (constante 0-FFFFh); slo operando origen. Restricciones: Ambos operandos de igual dimensin. No se permite que ambos operandos sean posiciones de memoria.
20/10/2010 Clase1 Introduccin al Assembler Digital II 10
Instrucciones aritmticas
Realiza la operacin destino +/- origen, almacenando el resultado en el operando destino. Los operandos origen y destino pueden ser: registros (8 o 16 bits) posiciones de memoria inmediato (constante 0-FFFFh); slo operando origen. Restricciones: Ambos operandos de igual dimensin. No se permite que ambos operandos sean posiciones de memoria.
20/10/2010 Clase1 Introduccin al Assembler Digital II 11
Suma (resta) una unidad del operando destino, tratndolo como un nmero binario sin signo. El operando puede ser byte o palabra. Obsrvese que estas instrucciones no modifican el bit de acarreo (CF) y no es posible detectar un desbordamiento por estos procedimientos (utilcese ZF). Ejemplo: INC ax ESTADO INICIAL: ax=22h(34d) ESTADO POSTERIOR: ax=23h(35d)
20/10/2010 Clase1 Introduccin al Assembler Digital II 12
Calcula el valor negativo en complemento a dos del operando y devuelve el resultado en el mismo operando. Ejemplo: NEG al
20/10/2010
13
Instrucciones lgicas
Realiza el complemento a uno del operando destino, invirtiendo cada uno de sus bits. Los flags no resultan afectados. Ejemplo: NOT al
20/10/2010
14
Realiza una operacin de and(or)(or-EXCLUSIVA) lgico entre el operando origen y destino quedando el resultado en el destino. Admite operandos byte o palabra, pero ambos del mismo tipo. Ejemplo: AND al,bl
20/10/2010
15
20/10/2010
17
Realiza una operacin Y lgica entre los dos operandos pero sin almacenar el resultado. Los flags son afectados con la operacin.
Realiza la resta destino-origen sin alterar el contenido de destino ningn resultado. Los operandos quedan inalterados, pero los flags pueden ser consultados mediante instrucciones de salto condicional. Los operandos pueden ser de tipo byte o palabra pero ambos de la misma dimensin.
20/10/2010 Clase1 Introduccin al Assembler Digital II 18
Instrucciones de salto
Salto incondicional: JMP (salto)
Sintaxis: JMP direccin
Transfiere el control incondicionalmente a la direccin indicada en el operando.
Descripcin
Salto si mayor (above), si no menor o igual (not below or y ZF=0. equal), si CF=0
Salto si mayor o igual (above or equal), si no menor (not below), si CF=0. Salto si menor (below), si no superior ni igual (not above or equal), si acarreo, si CF=1. Salto si menor o igual (not below or equal), si no mayor (not above), si CF=1 ZF=1. Salto si CX=0.
JE/JZ
JG/JNLE JGE/JNL JL/JNGE
20/10/2010
Descripcin
Salto si menor o igual (less or equal), si no mayor (not greater), si ZF=1 y SF=/OF.
Salto si no acarreo, si CF=0. Salto si no igual, si no cero, si ZF=0. Salto si no desbordamiento, si OF=0. Salto si paridad impar, si PF=0. Salto si no signo, si positivo, si SF=0.
JO JP/JPE
JS
20/10/2010
21
Decrementa el registro contador CX; si CX es cero, ejecuta la siguiente instruccin, en caso contrario transfiere el control a la direccin indicada por etiqueta. El desplazamiento debe estar comprendido entre -128 y +127. Ejemplo: bucle: mov cx,10 ....... ....... loop bucle
Clase1 Introduccin al Assembler Digital II 22
20/10/2010
Gracias!
20/10/2010
23