Entradas

Mostrando entradas de 2020

Tercer Programa

Imagen

Cuarto Programa

Imagen
VIDEO 4

Segundo Programa

Imagen

Primer Programa

Imagen
Evidencia Primer Programa

Obtención de Cadena con representación decimal

Imagen
2.11 Obtención de Cadena con representación decimal 2.12 Obtención de cadena con representación decimal. En este modo, los datos son proporcionados directamente como parte de la instrucción. Ejemplo: Mov AX,34h ; Copia en AX el número 34h hexadecimal Mov CX,10 ; Copia en CX el número 10 en decimal .COMMENT Programa:  PushPop.ASM Descripción: Este programa demuestra el uso de las instrucciones para el manejo de la pila, implementando la instrucción XCHG con Push y Pop MODEL tiny .CODE Inicio: ;Punto de entrada al programa Mov AX,5 ;AX=5 Mov BX,10 ;BX=10 Push AX ;Pila=5 Mov AX,BX ;AX=10 Pop BX ;BX=5 Mov AX,4C00h ;Terminar programa y salir al DOS Int 21h ; END Inicio END

Manipulación de la pila

Imagen
2.10 Manipulación de la pila. La pila es un grupo de localidades de memoria que se reservan para contar con un espacio de almacenamiento temporal cuando el programa se está ejecutando. La pila es una estructura de datos del tipo LIFO (Last In First Out), esto  quiere decir que el último dato que es introducido en ella, es el primero que saldrá al sacar datos de la pila. Para la manipulación de la pila ensamblador cuenta con dos instrucciones especificas, las cuales son las siguientes: Push: Esta instrucción permite almacenar el contenido del operando dentro de la última posición de la pila. Ejemplo: Push ax    El valor contenido en ax es almacenado en el último espacio de la pila. Pop: Esta instrucción toma el último dato almacenado en la pila y lo carga al operando. Ejemplo: Pop bx       El valor contenido en el último espacio de la pila se almacena en el registro El siguiente ejemplo muestra como implementar la instrucción XCHG por medio de las instrucci

EMU8086

Imagen
emu8086 El emu8086 es un emulador del microprocesador 8086 (Intel o AMD compatible) con assembler integrado. A diferencia del entorno de programación en assembler utilizado anteriormente en la cátedra (MASM), este entorno corre sobre Windows y cuenta con una interfaz gráfica muy amigable e intuitiva que facilita el aprendizaje el leguaje de programación en assembler. Dado que en un entorno emulado de microprocesador no es posible implementar una interfaz real de entrada/salida, el emu8086 permite interfacear con dispositivos virtuales y emular una comunicación con el espacio de E/S. Para esto, el emu8086 cuenta con una serie de dispositivos virtuales preexistentes en el software base, listos para ser utilizados, entre los que se encuentran una impresora, un cruce de calles con semáforos, un termómetro, un motor paso a paso, etc. No obstante, la cátedra ha desarrollado dispositivos adicionales con características particulares para la realización del segundo trabaj

Instrucciones Aritméticas

Imagen
2.9 Instrucciones Aritméticas Dentro de ensamblador se pueden llevar a cabo las 4 instrucciones aritméticas básicas, cada una de ellas cuenta con su propia función: Instrucción de Suma ADD: Suma los operandos que se le dan y guarda el resultado en el primer operando. Ejemplo ADD al, bl:  Suma los valores guardados en los registros al y bl, almacenando el resultado en al. Instrucción de Resta SUB: Resta el primer operando al segundo y almacena el resultado en el primero. Ejemplo: SUB al, bl:  Resta el valor de AL al de BL y almacena el resultado en AL. Instrucción de multiplicación MUL: Multiplica el contenido del acumulador por el operando, a diferencia de los métodos anteriores, solo es necesario indicar el valor por el que se multiplicará, ya que el resultado siempre es almacenado en el registro AX. Ejemplo: MUL DX:  Multiplica el valor del registro acumulador (AX) por el de DX. Instrucción de división DIV: Divide un numero contenido en el acumul

Captura de Cadenas con Formato

Imagen
2.8 Captura de Cadenas con Formato El capturar cadenas con formato permite el movimiento, comparación o búsqueda rápida entre bloques de datos, las instrucciones son las siguientes: MOVC: Esta instrucción permite transferir un carácter de una cadena. MOVW: Esta instrucción permite transferir una palabra de una cadena. CMPC: Este comando es utilizado para comparar un carácter de una cadena. CMPW: Esta instrucción es utilizada para comparar una palabra de una cadena. SCAC: Esta instrucción permite buscar un carácter de una cadena. SCAW: Esta instrucción se utiliza para buscar una palabra de una cadena. LODC: Esta instrucción permite cargar un carácter de una cadena. LODW: Esta instrucción es utilizada para cargar una palabra de una cadena. STOC: Esta instrucción permite guardar un carácter de una cadena. STOW: Esta instrucción es utilizada para guardar  una palabra de una cadena.

Incremento y Decremento

Imagen
2.7 Incremento y Decremento En ensamblador existen dos instrucciones que cumplen con el propósito de aumentar o reducir el valor contenido dentro de un registro. INC: Incrementa en uno el valor contenido dentro del registro que se le dé como parámetro. INC al:  Aumenta en 1 el valor del registro al. DEC: Reduce en uno el valor contenido dentro del registro que se le dé como parámetro. DEC al:  Reduce en 1 el valor del registro al.

Ciclos Condicionales

Imagen
2.6 Ciclos Condicionales Dentro de la programación existen ocasiones en la que es necesario ejecutar una misma instrucción un cierto número de veces, el cual no siempre es conocido por el programador o puede cambiar durante la ejecución del programa, para lo que existen los ciclos condicionales, los cuales una vez se cumpla la condición que tienen establecida, dejaran de ejecutarse como ciclo y permitirán que el programa continúe con su flujo normal. En ensamblador no existen de forma predefinida estos ciclos, pero pueden crearse haciendo uso de los saltos incondicionales, generando ciclos que se repetirán hasta que se cumpla la condición definida por el programador. Ejemplo: mov al, 0:  Asigna el valor cero al registro al. ciclo:  Etiqueta a la que se hará referencia para el ciclo condicional. INC al:  Aumenta en 1 el valor del registro al. CMP al, bl :  Comparación entre el valor almacenado en al y el almacenado en bl. JL ciclo:  Instrucción que indica que el fl

Saltos

Imagen
2.5  Saltos Los saltos son instrucciones que permiten al programador cambiar el orden de ejecución del programa según sea necesario, dentro de ensamblador existen dos tipos de salto principales: condicionales e incondicionales. Saltos Incondicionales: Los saltos incondicionales se utilizan mediante la instrucción JMP, la cual transfiere el control a la línea especificada después de la palabra JMP, la cual puede ser un valor directo o una etiqueta. También se puede contar como un salto incondicional la instrucción CALL, la cual llama una procedimiento y al terminarla devuelve el control a la línea siguiente de donde se inicio la llamada a procedimiento, pero eso se ve con más detalle en la sección 3.1. Ejemplo: Salto:  Etiqueta a la que se hará referencia para el salto incondicional. JMP Salto:  Instrucción que indica que el flujo del programa continuara desde la ubicación de la etiqueta Salto. Saltos Condicionales: Los saltos condicionales transfieren el contr

Comparación y Prueba

Imagen
2.4 Comparación y Prueba La comparación y prueba son instrucciones especiales con las que cuenta el microprocesador, estas son CMP y TEST respectivamente. Comparación (CMP): Esta instrucción compara los dos valores que se le den como parámetros y modifica las banderas de signo (SF), de cero (ZF) y de acarreo (CF) según sea necesario. Ejemplo: CMP ah,10h:  Compara el valor almacenado en el registro ah con el valor 10 hexadecimal. Prueba (TEST): Verifica que los valores que se le introduzcan como parámetros sean iguales relizando la operación lógica AND, no almacena ningún resultado pero modifica banderas según sea necesario. Ejemplo: TEST al, 1:  Verifica que el valor almacenado en al sea 1.

Captura Básica de Cadenas

Imagen
2.3 Captura Básica de Cadenas Dentro del lenguaje ensamblador no existe el tipo de dato cadena (string en otros lenguajes), por lo que para utilizarla es necesario tratar a las cadenas como un conjunto de caracteres reservados bajo el nombre de una sola variable. El lenguaje ensamblador cuenta con instrucciones que por su naturaleza sirven para el manejo de cadenas, estas son: MOVSB: Mueve un byte desde una localidad de memoria hasta otra. MOVSW: Mueve una palabra desde una localidad de memoria hasta otra. LODSB: Carga en la parte baja del registro acumulador (AL) el valor de la localidad de memoria determinada por DS:SI. LODSW: Carga en el registro acumulador (AX) el valor de la localidad de memoria determinada por DS:SI. Ejemplo: