Parámetro de entrada. Un parámetro pasado del procedimiento que hace la llamada al procedimiento invocado.

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Parámetro de entrada. Un parámetro pasado del procedimiento que hace la llamada al procedimiento invocado."

Transcripción

1 CAPITULO 12 PROCEDIMIENTOS En el capítulo 6, aprendiste como utilizar un programa con procedimientos, en este capítulo aprenderás a usar las directivas e instrucciones que definen y llamas procedimientos. Después de cubrir estos conceptos básicos, pasar información entre procedimientos y linkear partes separadas en un programa completo. Nuevos Términos Parámetros. Un campo dato que es mandado de un procedimiento a otro. Paso. Mandar un campo dato de un procedimiento a otro. Parámetro de entrada. Un parámetro pasado del procedimiento que hace la llamada al procedimiento invocado. Parámetro de salida. Un parámetro pasado del procedimiento que fue llamado de regreso al procedimiento que invoco. Tabla de salto. Una lista de direcciones, cada una representa una locación a la cual el programa puede saltar Diseñar procedimientos que usan procedimientos. Un buen diseñador de programas divide un programa en procedimientos. Por ejemplo, digamos que quieres escribir un programa que cuenta el número de líneas en un archivo. El programa puede consistir de un procedimiento principal que procese cada línea. Este proceso podría llamar uno o dos procedimientos, uno de lectura de líneas del archivo y uno que despliegue los resultados. Aquí hay algunas reglas que puedes seguir para dividir un programa: Diseña tus programas para que cada procedimiento ejecute solo una función. Haz procedimientos pequeños. En lenguaje ensamblador, cada procedimiento está definido por las directivas PROC y ENDP. Un procedimiento es llamado por una instrucción CALL y regresa al programa que hizo la llamada ejecutando una instrucción RET Definir un procedimiento: PROC y ENDP. Cada procedimiento debe estar definido entre las directivas PROC y ENDP, estas no generan código máquina, en su lugar PROC y ENDP son direcciones que le indican al ensamblador el inicio y el fin de un procedimiento. Este es el formato de la directiva PROC 1

2 nombre PROC tipo El nombre es cualquier nombre que desees darle al procedimiento, diferente de un nombre reservado. El tipo puede ser NEAR y FAR. Si el procedimiento es llamado por un procedimiento que reside en un segmento diferente, debes especificar el tipo como FAR. De otra forma usa el tipo NEAR. Si no especificas un tipo, el tipo por omisión es NEAR. Usualmente sólo debes especificar el tipo de un procedimiento si es FAR. Es importante recordar que DOS inicia un programa de ensamblador llamando al programa principal. Entonces ya que DOS está en un segmento diferente, el procedimiento principal de cada programa debe ser de tipo FAR. La directiva ENDP marca el final de cada procedimiento. El formato es: nombre ENDP El nombre debe ser el mismo que tenga el principio del procedimiento, por ejemplo DISPLAY PROC -- sentencias -- DISPLAY ENDP Aquí hay un esqueleto de un procedimiento. El procedimiento se llama DISPLAY y es de tipo NEAR: ; inicio de procedimiento: DISPLAY DISPLAY PROC ; -- sentencias --- ; fin de procedimiento: DISPLAY DISPLAY ENDP 12.3 El formato de un Procedimiento. Estrictamente hablando, las directivas PROC y ENDP son todo lo necesario para definir un procedimiento. Sin embargo, hay otros estatutos que son usados de rutina. Primero, es útil que cada procedimiento se imprima en una pagina nueva, use la directiva PAGE al principio del procedimiento. Segundo, cada procedimiento debe estar documentado con los siguientes comentarios estándar: El nombre del procedimiento El propósito del procedimiento Que parámetros de entrada necesita el procedimiento Que salida genera el procedimiento Que otros procedimientos invoca 2

3 Tercero, cada procedimiento debe salvar y restaurar todos los registros como parte su función. Esto se hace con las instrucciones PUSHA y POPA (ver capitulo 9). Cuarto, cada procedimiento debe finalizar con la instrucción RET para regresar al programa que hizo la llamada. La figura 12-1 muestra el esqueleto de un procedimiento típico que puedes usar como modelo. El procedimiento se llama DISPLAY y es de tipo NEAR. Figura 12-1 El esqueleto de un procedimiento PAGE ; ; DISPLAY ; ; Proposito: ; -el proposito del procedimiento va aquí ; ; Entrada: ; -la descripcion de la entrada va aqui ; ; Salida: ; -la descripción de la salida va aquí ; ; Procedimientos: ; -la descripción de los procedimientos a llamar va aquí ; ; inicio del procedimiento: DISPLAY DISPLAY PROC ; salvar los registros PUSHA ; Las instrucciones del procedimiento van aquí ; restaurar registros POPA ; regresar al procedimiento principal RET ; fin del procedimiento: DISPLAY DISPLAY ENDP 12.4 Llamar a un procedimiento: CALL. Para llamar a un procedimiento, usa la instrucción CALL. Este es su formato: CALL dirección La dirección puede ser directa o indirecta. Usualmente, la dirección es simplemente el nombre del procedimiento, por ejemplo: CALL DISPLAY 3

4 Aquí hay un ejemplo de un direccionamiento indexado. En este ejemplo TABLA[BX] contiene la dirección del procedimiento; CALL TABLA[BX] Muchas de las veces es más simple que utilices el nombre, el direccionamiento indirecto e indexado te permite hacer llamadas más complejas. Estas se revisaran más adelante en la sección tablas de salto La dirección de Regreso. Como mencione en el capítulo 3, la dirección de regreso es la locación a la cual el procedimiento regresa cuando su ejecución termina. Esta dirección de regreso es metida a la pila por la instrucción CALL. Así la instrucción CALL ejecuta lo siguiente: Meter la dirección de regreso en la pila Saltar a la dirección del procedimiento. Cuando el procedimiento que fue llamado regresa, el procesador espera encontrar la dirección de regreso en la pila.. El procesador pone la dirección de regreso como la dirección inmediata a la instrucción CALL. Si una llamada a un procedimiento de tipo FAR, el procesador mete una dirección completa en la pila (dirección del segmento y offset) Reglas para usa la instrucción CALL. Existen dos reglas que debes seguir para indicarle al ensamblador si un procedimientos NEAR o FAR: Primero, cuando definas un procedimiento que será llamado en otro segmento, debes especificar el procedimiento de tipo FAR. Segundo, si hay alguna ambigüedad en la instrucción CALL, debes indicarle al ensamblador si la dirección representa una dirección completa (FAR) o sólo un desplazamiento (NEAR). Está situación se presenta cuando usas una direccionamiento indirecto, esto es, cuando el operando de la instrucción CALL contiene la dirección del campo dato que contiene la dirección del procedimiento. Aquí hay un ejemplo. Digamos que declaras un campo dato llamado ADDR1 que contenga la dirección del procedimiento a llamar. Si el procedimiento es NEAR y su nombre es DISPLAY1, puedes definir la directiva del dato así: ADDR1 DW DISPLAY1 El ensamblador puede inicializar ADDR1 para el offset de DISPLAY1. Debido a que el offset es una palabra en longitud, debemos usar la directiva DW para declarar ADDR1 como una palabra. 4

5 Sin embargo, digamos que tenemos otro campo dato, ADDR2, que contiene la dirección de un procedimiento FAR llamado DISPLAY2. Es este caso, ADDR2 debe contener la dirección del segmento y el offset. Así debemos definir ADDR2 como una palabra doble: ADDR2 DD DISPLAY2 Si ADDR1 y ADDR2 contiene las direcciones de los procedimientos, podemos usar estos valores con direccionamiento indirecto. En otras palabras, debemos decirle al procesador que para llamar a los procedimientos sus direcciones están contenidas en ADDR1 y ADDR2. Para hacer esto, copia las direcciones a un registro especifico, encerrado entre paréntesis cuadrados, como el operando de la instrucción CALL. Usaremos el registro BX. Debemos asegurarnos que el ensamblador sabe cuando BX está apuntando a una dirección NEAR (una palabra) o a una dirección FAR (una palabra doble). Para hacer esto, usamos el operador PTR. Si un direccionamiento indirecto apunta a un offset, usamos WORD PTR. Si un direccionamiento indirecto apunta a un dirección completa, usamos DWORD PTR. Con el ejemplo anterior usamos un apuntador NEAR (ADDR1), puede usar la instrucción: LEA CALL BX,ADDR1 WORD PTR [BX] La primera instrucción copia el offset de ADDR1 a BX. La segunda llama al procedimiento cuya dirección está contenida en el campo dato al cual BX está apuntando. Debido a que está es una llamada NEAR, debemos decirle al ensamblador que el campo dato tiene una longitud de palabra. Con el ejemplo del procedimiento apuntando a un FAR (ADDR2), podemos usar las siguientes instrucciones: LEA CALL BX,ADDR2 DWORD PTR [BX] Debido a que esta llamada es FAR, debemos especificar que el campo dato al cual BX esta apuntando es una palabra doble. Esta técnica es útil si quieres obtener la dirección de una instrucción CALL mientras el programa se ejecuta Regresar de un procedimiento: RET. Debes asegurarte que cada procedimiento regrese al lugar de donde fue llamado. (Hasta el programa principal que regresa a DOS). Para esto use la instrucción RET. Este es su formato: RET valor-pop El valor-pop es un valor inmediato descrito después en la sección intitulada Sacar parámetros de la pila. Muchas de las veces la instrucción RET no necesita operando. La instrucción RET espera la dirección de regreso que está en el tope de la pila. La instrucción hace lo siguiente: 5

6 Saca la dirección de regreso de la pila Salta a la dirección de regreso Si el procedimiento es de tipo FAR, el procesador debe sacar dos palabras de la pila. Si el procedimiento es de tipo NEAR, el procesador necesita sacar solo una palabra de la pila. El ensamblador coloca instrucciones diferentes RET cuando detecta si un procedimiento en NEAR o FAR, estas instrucciones le indican si tiene que recuperar una o dos palabras de la pila Puntos de Entrada y Salida. Como mencione en el capítulo 6, la dirección en la cual el procedimiento inicia es llamado el punto de entrada. Cada procedimiento - incluyendo el programa principal - deben tener al menos un punto de entrada y una instrucción RET. Es posible que un procedimiento tenga más de un punto de entrada pero no es recomendable. Algunos procedimientos pueden tener uno o más puntos de salida lógica, como por ejemplo si se detecta una entrada invalida. En tales casos debes saltar a la instrucción RET al final del procedimiento, esto asegura que solo se tenga un punto de regreso. Diseña tus procedimientos para que tengan un sólo punto de entrada y salida como lo muestra la figura Figura 12-2 Los puntos de entrada y salida 12.9 Paso de Parámetros en Registros. Los procedimientos se comunican mandando datos de envío y regreso. Estos campos dato son llamados parámetros. Podemos decir que un procedimiento pasa parámetros de un procedimiento a otro. Un parámetro de entrada es pasado por el procedimiento que llama y un parámetro de salida es regresado cuando el procedimiento llamado termina. Existen dos métodos estándar para paso de parámetros. Primero si hay pocos parámetros a pasar se pueden usar los registros. Por ejemplo digamos que el procedimiento ADD_LIST suma una lista de números. ADD_LIST requiere dos pedazos de información: el tamaño de la lista y la dirección de la lista. Un modo común es que reciba el tamaño en el registro AX y la dirección en el BX. 6

7 Digamos que las variables LIST y CONT representan la lista y su tamaño. La llamada al procedimiento podría ser así: ; poner los parametros de entrada para ADD_LIST MOV AX,CONT LEA BX,LIST ; llamar al procedimiento CALL ADD_LIST Al principio del procedimiento ADD_LIST pondríamos estos comentarios: ; Entrada: ; AX -- el número de campos de la lista ; BX -- la dirección de la lista a ser sumada Un procedimiento también puede pasar parámetros de salida en los registros. Sin embargo el procedimiento debe poner los parametros después de que los registros sean restaurados; o de otra manera el comando POPA sobrescribira los valores de los parámetros. Por ejemplo, digamos que ADD_LIST guarda el resultado de la suma en la variable SUM. Este valor será pasado al procedimiento que invoco in el registro CX. ; restaurar registros POPA ; actualizar el parámetro de salida MOV CX,SUM ; regresar al procedimiento anterior RET Al principio del procedimiento habría estos comentarios: ; Salida: ; CX -- la suma de la lista Pasar Parametros de Entrada por medio de la Pila. Si no hay suficientes registros para pasar los parámetros lo mejor es utilizar la pila. El procedimiento que llama empuja los valores a la pila. El procedimiento invocado accesa la pila directamente, haciendo innecesario el uso de registros. El procedimiento llamado puede entonces modificar los valores en la pila en orden de pasar los parametros de regreso al procedimiento que llamo. Se deben meter los parametros en la pila antes de hacer la llamada. Aquí hay un ejemplo de la llamada a un procedimiento, llamado CALCULO, el cual requiere 6 parametros. Los parametros son nombrados de p1 a p6, y en la práctica pueden ser registros, campos dato o valores inmediatos. ; poner parametros de entrada para CALCULO PUSH P1 PUSH P2 PUSH P3 7

8 PUSH P4 PUSH P5 PUSH P6 ; llamar a CALCULO CALL CALCULO Usar el registro BP para accesar los Parametros de la Pila. Accesar los parametros de la pila es más complicado. Esto es debido a que la instrucción CALL ejecutada después de la introducción de los parametros de entrada. Esto significa que el procedimiento invocado no puede sacar de la pila los parametros sin perder la dirección de regreso. Por supuesto, es posible sacar la dirección de regreso, guardarla y después recuperar los parametros, sin embargo hay una forma más sutil de hacer esto, la cual es accesar la pila directamente usando el registro BP. Esto funciona así, al principio del procedimiento invocado, la dirección del tope de la pila se copia al registro BP usando la instrucción: MOV BP,SP El procedimiento puede usar ahora a BP como la dirección base de la pila. En particular, los parametros pueden ser seleccionados como [BP+2], [BP+4], [BP+6], etc. Si la pila consiste de una lista de palabras con una en su propio espacio. El registro SS mantiene la dirección del segmento. El registro SP contiene un offset en el segmento. SP apunta al tope de la pila. El primer push copia datos a la palabra en la dirección más alta, el siguiente push copia datos en la siguiente dirección más alta, y así la pila crece hacia abajo hasta su base una palabra a la vez. La figura 12-3 muestra la pila con seis parámetros de entrada, un procedimiento ha sido llamado y BP está puesto a SP. Figura 12-3 Seis parametros en la pila La figura 12-3 muestra a la pila después de haber metido seis parametros a ella, un procedimiento ha sido invocado, y BP y SP están direccionadas. 8

9 Como puedes ver, Una vez que BP está puesta a SP, los parámetros pueden ser accesados como SS:[BP+2], SS:[BP+4], etc. Entonces el procesador asume que te refieres al segmento de pila y usa BP con su incremento como offset. Una vez que BP está direccionado, el procedimiento puede empujar más datos en la pila y cambiando el valor de SP. Sin afectar el acceso a los parametros. De hecho esto sucede cuando la instrucción PUSHA salva los registros al inicio de un procedimiento. Esto es ilustrado en la figura El diagrama muestra a la misma pila después de que el procedimiento ha metido los valores de los registros. Note que BP permanece sin cambio para el acceso a los parametros. Figura 12-4 BP sin cambio en la Pila Para ilustrar esto, aquí hay un ejemplo de algunas instrucciones que estarían al inicio de un procedimiento que espera seis parametros metidos en la pila. Este ejemplo copia los valores de los parametros a los registros. Note que BP debe ser copiado a BP antes de salvar los registros, (debido a que el comando PUSHA cambia el valor de SP): ; inicio del procedimiento: CALCULO CALCULO PROC ; apuntar BP al tope de la pila MOV BP,SP ; salvar registros PUSHA ; copiar los parametros de entrada a los registros MOV AX,[BP+12] MOV BX,[BP+10] MOV CX,[BP+8] MOV DX,[BP+6] MOV DI,[BP+4] MOV SI,[BP+2] 9

10 Un último punto: La discusión anterior supone que el procedimiento es de tipo NEAR. En otras palabras, la dirección de regreso ocupa 1 palabra en la pila, si el procedimiento fuera FAR, la dirección de regreso sería de 2 palabras en la pila, y las direcciones de los parámetros serían [SP+4], [SP+6], [SP+8], etc Regresar Parametros usando la Pila. Es posible usar la pila para regresar parametros de salida al procedimiento que llamo. Sin embargo no es posible meterlos a la pila, ya que quedarían sobre la dirección de regreso. Mejor usa directamente el registro BP para accesar la pila directamente y modificar los parametros de entrada directamente. Cuando regrese el procedimiento que llamo puede examinar esos valores. Aquí hay un ejemplo usando los procedimientos MAIN y CALCULO descritos antes. MAIN empuja seis parametros en la pila. CALCULO usa estos valores para ejecutar los cálculos y entonces copia los resultados en el último parámetro metido a la pila, usando BP para accesarla directamente. Si AX contiene el valor del parámetro de salida, la secuencia puede ser así: ; salvar el parámetro de entrada MOV [BP+2],AX ; restaurar los registros POPA ; regresar al MAIN RET Así, la entrada de la pila que reside en [BP+2] ha sido transformada de parámetro de entrada a parámetro de salida. Después del retorno, MAIN podría sacar de la pila para examinar el resultado. Así su secuencia podría ser: ; poner los parametros de entrada en la pila PUSH P1 PUSH P2 PUSH P3 PUSH P4 PUSH P5 PUSH P6 ; llamar al procedimiento CALCULO CALL CALCULO ; copiar el resultado a AX POP AX ; sacar el resto de los parametros de entrada POP TEMP POP TEMP POP TEMP POP TEMP POP TEMP 10

11 Note que el MAIN debe sacar todos los parámetros que metió, en este caso con un campo dato temporal TEMP Sacar parametros de la Pila En el último ejemplo de la sección anterior, el programa que hacia la llamada examinaba los parametros de salida sacando de la pila después del regreso. Sin embargo en muchos casos, la pila puede contener parametros de entrada pero no de salida. En tales casos la instrucción RET puede sacar varios valores de la pila automáticamente como parte del regreso, puedes hacer esto especificando el número de bytes a ser sacados con un operando inmediato. El formato de la instrucción RET es: RET valor-pop Donde valor-pop es el número de bytes a ser sacados durante el retorno. Aquí hay un ejemplo. Digamos que el procedimiento llamado MAIN llama a un procedimiento llamado HAZ_TABLA para construir cierto tipo de tabla. HAZ_TABLA requiere seis parametros de entrada y ninguno de salida. ; poner los parametros de entrada para HAZ_TABLA PUSH P1 PUSH P2 PUSH P3 PUSH P4 PUSH P5 PUSH P6 ; llamar a HAZ_TABLA para construir la tabla CALL HAZ_TABLA Al final de HAZ_TABLA, puedes usar el siguiente estatuto para regresar al procedimiento MAIN: ; sacar los parametros de la pila y regresar a MAIN RET 12 Este RET no solo regresa al procedimiento anterior, también saca 12 bytes de la pila. Por supuesto esto debe estar perfectamente coordinado. La instrucción RET al final del procedimiento HAZ_TABLA debe sacar el mismo número de bytes que fueron empujados por MAIN. Para referencia, aquí están los pasos que sigue un RET normal Sacar la dirección de regreso Saltar a la dirección de regreso Cuando se especifican un número de bytes, estos son los pasos 11

12 Sacar la dirección de regreso Sacar el número de bytes requeridos Saltar a la dirección de regreso Usar la bandera de Acarreo para indicar un Error. Ya aprendimos dos modos de pasar información entre procedimientos, usando registros o la pila. Estos dos métodos son buenos para pasar datos. Sin embargo, existe un pedazo de información que puedes querer pasar del procedimiento llamado al que hizo la llamada: Como se si todo termino satisfactoriamente? El modo estándar de determinar esto es limpiando a activando la bandera de acarreo. Si el procedimiento llamado termino exitosamente, ponemos CF a 0. Si un error ocurrió ponemos CF a 1. Así el procedimiento que hizo la llamada puede cerciorarse si todo salió bien. Aquí hay un ejemplo. Un procedimiento MAIN llama a otro procedimiento READ_DATA para leer algunos datos de un archivo. Si la operación tuvo éxito READ_DATA regresa 0 en CF. Si la operación fallo por alguna causa, READ_DATA pone CF a 1. Aquí hay algunos estatutos que podrías usar al final de READ_DATA para implementar el manejo de errores: ; indicar que un error ha ocurrido BAD_DATA: STC JMP RETURN_READ_DATA ; indicar que no ocurrió ningún error GOOD_DATA: CLC ; restaurar los registros y regresar al MAIN POPA RET Dentro del procedimiento MAIN, digamos que un mensaje de error será desplegado sin los datos no se pueden leer. ; poner los parametros de entrada -- las instrucciones de entrada van aquí --- ; llamar a READ_DATA para leer un archivo CALL READ_DATA ; checar el error JC DISPLAY_ERROR_MESSAGE 12

13 Bajo algunas circunstancias, no es suficiente saber que un error ocurrió, sino saber que tipo de error fue puedes regresar un código de error en algún registro para que el procedimiento principal comunique cual fue la falla Tablas de Salto. Una tabla de salto es una lista de direcciones, cada cual representa una locación a la cual un programa puede saltar. La tabla de saltos son usadas comúnmente para guardar una lista de direcciones de varios procedimientos. Un programa puede usar tal tabla para escoger el procedimiento a llamar basado en las condiciones actuales. Aquí hay un ejemplo. Digamos que un programa procesa algunos datos y entonces escribe los datos como salida. El programa puede escribir los datos a la impresora, pantalla, o a disco. Los procedimientos que hacen esto son WRITE_PRINTER, WRITE_DISPLAY y WRITE_FILE respectivamente. Después los datos son procesados, el programa le pide al usuario que teclee el número del dispositivo de salida. Este número es grabado en la variable OPCION, 1 para impresora, 2 para pantalla y 3 a disco. Así el programa necesita llamar a uno de tres procedimientos, basados en el valor de OPCION. Un modo de hacer esto es usar un CASE: ; case OPCION=1: llamar a WRITE_PRINTER ; case OPCION=2: llamar a WRITE_DISPLAY ; case OPCION=3: llamar a WRITE_FILE CMP OPCION,1 JE L1 CMP OPCION,2 JE L2 CMP OPCION,3 JE L3 JMP L4 L1: ; opcion=1 CALL WRITE_PRINTER JMP L4 L2: ; opcion=2 CALL WRITE_DISPLAY JMP L4 L3: ; opcion=3 CALL WRITE_FILE L4: Un método simple es usar una tabla de saltos. Primero ponemos una tabla en el segmento de datos que contenga los offsets de los tres procedimientos: JUMP_TABLE LABEL WORD DW WRITE_PRINTER DW WRITE_DISPLAY DW WRITE_FILE Puedes hacer referencia a la dirección de estos procedimientos relativa al valor de JUMP_TABLE. Esto es, basados en el valor de OPCION, podemos llamar al procedimiento correcto como sigue: 13

14 OPCION Usa la dirección en 1 JUMP_TABLE+0 2 JUMP_TABLE+2 3 JUMP_TABLE+4 Aquí está el plan. Podemos copiar la dirección de la tabla de datos a un registro (BX por ejemplo). Después adicionamos 0, 2 o 4 al registro, dependiendo del valor de OPCION. Finalmente debemos usar el contenido del registro con un direccionamiento indirecto para llamar al procedimiento apropiado. Para copiar la dirección de la tabla de salto en BX, podemos usar la instrucción LEA LEA BX,JUMP_TABLE Ahora, necesitamos adicionar 0,2 o 4 a BX dependiendo del valor de OPCION. La forma más fácil es copiar OPCION al registro AX, restarle 1 y multiplicarlo por 2: MOV DEC SHL ADD AX,OPCION AX AX,1 BX,AX Las instrucciones serán descritas en capítulos posteriores. Ahora BX apunta a la dirección correcta. Puedes usar direccionamiento indirecto para hacer la llamada: CALL WORD PTR [BX] Pongamos todo junto: ; escribir a un dispositivo seleccionado por OPCION ; 1 -> impresora (llama a WRITE_PRINTER) ; 2 -> pantalla (llama a WRITE_DISPLAY) ; 3 -> archivo (llama a WRITE_FILE) LEA BX,JUMP_TABLE MOV AX,OPCION DEC AX SHL AX,1 ADD BX,AX CALL WORD PTR [BX] Note que es mucho más fácil que usar el constructor CASE. Si vas a usar tablas de salto, hay dos puntos importantes que debes comprender. Primero, en el ejemplo anterior supusimos que el procedimiento es NEAR, por eso accesamos la tabla con multiplos de 2. Si usas una tabla de saltos con direcciones FAR, debes hacer tres cambios. Definir la tabla de datos con DD (palabras dobles). accesar la tabla de saltos en multiplos de 4. Puedes hacer esto con la instrucción SHL así SHL AX,2 Tienes que asegurarte que la llamada al procedimiento es un del tipo doble palabra: 14

15 CALL DWORD PTR [BX] La segunda cosa importante que debes cmprender es que el valor que tenga opción siempre debe corresponder a algunas de las opciones en la tabla de salto, impidiendo que el selector tenga un valor invalido Linkear programas que están separados en varias partes. Cuando escribes un programa grande, es útil poder ensamblar el programa separadamente. Por ejemplo digamos que un programa grande tiene 30 procedimientos. Si uno de los procedimientos tuviera que ser cambiado ocasionalmente tendríamos que rensamblar el programa completo. La solución es dividir el programa en dos partes. Un aparte mantiene el procedimiento que necesitamos cambiar, y las otras partes el resto del programa. Puedes ensamblar ambas partes separadamente y usar el linker para encadenar los dos modulos objeto en un sólo ejecutable. Aquí hay un ejemplo, digamos que tienes un programa con varios procedimientos. El archivo SMALL.ASM contiene un procedimiento y el archivo LARGE.ASM contiene el resto del programa. Para crear un load module, debes seguir los siguientes pasos: Primero esnambla ambos programas tecleando MASM MASM LARGE; SMALL; Asumiendo que los archivos están bien, obtendremos dos modulos objeto: LARGE.OBJ y SMALL.OBJ. Para correr el programa, necesitas crear un load module con estos obj s. Para hacer esto teclea: LINK LARGE+SMALL,PROGRAM; Este comando crea un programa ejecutable con el nombre PROGRAM.EXE Cuando necesites cambiar el procedimiento, solo necesitas rensamblar SMALL.ASM tecleando MASM SMALL; No necesitas rensamblar a LARGE.ASM ya que aún tienes por ahi el obj llamado LARGE.OBJ, todo lo que necesitas es volver a encadenar el programa completo LINK LARGE+SMALL,PROGRAM; Como escribir programas que tienen partes separadas. Si puedes dividir un programa en partes separadas, cada una consiste de uno o más segmentos cada uno almacenado en su propio archivo. La estructura de sus partes es muy parecida a lo que sería el mismo programa contenido en un archivo grande. La diferencia principal es que debes decirle al ensamblador cuales nombre de una parte serán referenciados en otra. Para hacer esto, puedes usar las directivas EXTRN y PUBLIC. 15

16 Estas dos directivas son complementarias. EXTRN le dice al ensamblador cuales nombres serán definidos en una parte diferente de un programa (esto es, cuales nombres son externos). PUBLIC le dice al ensamblador cuales nombres pueden ser referenciados por otras partes del programa. La idea es que cada referencia externa requiere dos directivas: una directiva PUBLIC, donde el nombre está definido, y una directiva EXTRN, donde el nombre es usado. El formato de la directiva EXTRN es: EXTRN nombre:tipo Si el nombre representa un campo dato, el tipo debe ser u n BYTE; WORD, DWORD, QWORD, y TBYTE. Si el nombre representa una etiqueta, el tipo debe ser NEAR o FAR. El tipo es necesario ya que le dice al ensamblador como trabajar con el nombre. Aquí hay dos ejemplos: EXTRN MSG2:BYTE EXTRN EXTERNAL_PROCEDURE:FAR El primer ejemplo le dice al ensamblador que el nombre MSG2 representa un campo dato (de tipo byte) que está definido externamente de está parte del programa. El segundo ejemplo le dice al ensamblador que EXTERNAL_PROCEDURE representa un procedimiento (de tipo far) que está definido externamente para esa parte del programa. Una vez que un nombre aparece en un directiva EXTRN, puedes usarlo sin volverlo a definir y el ensamblador no considerará la referencia como un error. El ensamblador asume que todas las referencias a ser definidas externamente serán resueltas por el linker. Cuando un programa usa referencias externas, el ensamblador pone un mensaje al inicio del modulo objeto. Este mensaje le dice al linker cuales nombres serán definidos en otros módulos objeto. El formato de la directiva PUBLIC es: PUBLIC nombre Esta directiva identifica nombre que pueden ser usados como referencias externas en otras partes del programa. Aquí hay dos ejemplos: PUBLIC PUBLIC MSG2 EXTERNAL_PROCEDURE Cuando un programa declara tales nombres, el ensamblador pone un mensaje al inicio del modulo objeto. El mensaje le dice al linker cuales nombres de su modulo objeto serán usados como referencias externas por otros módulos objeto. Como regla general, es buena idea juntar todas las directivas EXTRN y PUBLIC. Esto asegura que el ensamblador conoce todos los nombres especiales antes de que aparezcan en el programa. La figura 12-6 y 12-7 muestran las dos partes de un programa que puede ensamblarse separadamente y juntos. La primer parte consiste del segmento de pila, un segmento de datos, y el segmento de código conteniendo el programa principal. La segunda parte consiste de un segmento de código conteniendo el procedimiento llamado EXTERNAL_PROCEDURE. 16

17 La lógica del programa principal es: Despliega el mensaje (MSG1). Llama a EXTERNAL_PROCEDURE. Despliega el mensaje (MSG1) de nuevo. El procedimiento EXTERNAL_PROCEDURE despliega un mensaje por sí mismo. El proceso para obtener el programa ejecutable es el siguiente: MASM MASM FIRST; SECOND; Ahora linkeamos los dos programas juntos: LINK FIRST+SECOND,PROGRAM; Si ejecutas el programa PROGRAM veras los siguiente mensajes: Hello from program #1. Hello from program #2. Hello from program #1. Figura 12-6 Programa FIRST primera parte del programa completo. PAGE 58,132 ; ; programa para demostrar el uso de referencias externas ; ; ajustar el titulo y el conjunto de instrucciones TITLE programa que usa referencias externas.286 ; segmento STACK SSEG SEGMENT STACK DB 32 DUP( STACK--- ) SSEG ENDS ; nombres EXTERNAL EXTRN EXTERNAL_PROCEDURE:FAR ; nombres PUBLIC PUBLIC MSG2 ; segmento DATA DSEG SEGMENT MSG1 DB Hello from procedure # 1, 0DH, 0AH, $ MSG2 DB Hello from procedure # 2, 0DH, 0AH, $ DSEG ENDS ; segmento CODE CSEG SEGMENT CODE ASSUME CS:CSEG, SS:SSEG; DS:DSEG, ES:DSEG PAGE ; ; MAIN (programa principal) ; 17

18 ; Proposito: ; Demostrar el uso de referencias externas ; ; Entrada: ; -- ninguna -- ; ; Salida: ; Tres mensajes son desplegados en la pantalla ; ; Nombres Externos: ; EXTERNAL_PROCEDURE (peocedimiento) - despliega un mensaje; ; ; Procedimiento: MAIN MAIN PROC FAR ; Salvar la direccion para poder regresar a DOS PUSH DS PUSH 0 ; Actualizar el registro de segmento MOV AX,DSEG MOV DS,AX MOV ES,AX ; Desplegar mensaje #1 MOV LEA INT AX,9H DX,MSG1 21H ; Llamar al procedimiento externo para imprimir el mensaje # 2 CALL EXTERNAL_PROCEDURE ; Desplegar mensaje #1 otra vez MOV AX,9H LEA DX,MSG1 INT 21H ; Regresar a DOS RET ; Fin de procedimiento: MAIN MAIN ENDP ; Fin de segmento de código CSEG ENDS ; Fin de programa END MAIN Figura 12-7 Segunda parte del programa en dos partes SECOND PAGE 58,132 ; ; un ejemplo de un procedimiento externo ; ; ajustar el titulo y el conjunto de instrucciones TITLE programa externo.286 ; nombres EXTERNAL 18

19 EXTRN MSG2:BYTE ; nombres PUBLIC PUBLIC EXTERNAL_PROCEDURE ; segmento CODE CSEG SEGMENT CODE ASSUME CS:CSEG PAGE ; ; EXTERNAL_PROCEDURE ; ; Proposito: ; Demostrar como funciona un procedimiento externo ; ; Entrada: ; -ninguna- ; ; Salida: ; El mensaje se despliega en pantalla ; ; Nombre externos: ; MSG2 (dato - el mensaje deplegado) ; ; inicio del procedimiento: EXTERNAL_PROCEDURE EXTERNAL_PROCEDURE PROC FAR ; salvar los registros PUSHA ; despliega el segundo mensaje MOV AH,9H LEA DX,MSG2 INT 21H ; restaurar registros POPA ; regresar al procedimiento principal RET ; fin del procedimiento: EXTERNAL_PROCEDURE EXTERNAL_PROCEDURE ENDP ; fin de segmento de código CSEG ENDS ; fin de programa END { o } CAPITULO 13 ARITMETICA 19

20 Este capítulo cubre la aritmética de números con signo y sin signo, establecidas en el capítulo 8. Sin embargo los números de punto flotante (notación científica) y los números de punto fijo requieren tipos de hardware diferente. El procesador principal sólo puede trabajar con números de punto fijo. Dicho de otra manera el procesador no trabaja con números con fracciones a menos que los simules con números enteros. Por tanto para el curso de ensamblador básico solo cubriré los números con signo. Nuevos Términos Número de punto fijo. Un número en el cual el punto decimal está fijo, también llamados números enteros. Números de punto flotante. Un número en el cual su punto decimal puede estar en cualquier posición; también llamados números fraccionales. Número sin signo. Un número de punto fijo cuyo valor puede ser positivo o cero. Número con signo. Un número de punto fijo cuyo valor puede ser positivo negativo o cero. Complemento. Un patrón de bits que tiene exactamente los valores opuestos a otro patrón de bits. Complemento a dos. Un número que se obtiene al complementar un patrón de bitas y sumarle Números con signo y sin signo. Existen dos tipos de números de punto fijo: números sin signo que pueden representar valores positivos y el cero; y números con signo que pueden representar números positivos y negativos incluyendo al cero. Los números con signo y sin signo pueden ser almacenados en bytes o palabras. Los números con signo son almacenados en su equivalente en binario. Por ejemplo el equivalente binario de 57 es B. Si su valor fuera almacenado en un byte quedaría como: o como una palabra: Para encontrar el rango de posibilidades para los números con signo, podemos examinar el patrón de bits menor y mayor. Para números con signo para bytes sería B a B esto es de 0 a 255. Para números sin signo almacenados como palabras, el rango es: B a B esto es de 0 a La tabla 13-1 resume los rangos decimales para los números con signo y sin signo. 20

21 Tabla 13-1 Los rangos de los números con signo y sin signo Unidad de almacenamiento Sin signo Con signo Byte 0 a a 127 Word 0 a a El sistema del complemento a dos. Representar números con signo requiere un esquema números positivos, negativos y al cero. Podría parecer simple que dejáramos el bit de más a la izquierda del byte o la palabra para indicar el signo: 0 para positivos y 1 para negativos. Los otros bits representan la magnitud del número. Por ejemplo, considere almacenar los valores +57 y -57 en un byte. Si usamos el esquema descrito anteriormente, tenemos: > > Desafortunadamente, hay problemas con este esquema. La más importante es que hay dos posibles representaciones del cero: y Para resolver este problema, los diseñadores de computadoras usan un esquema llamado complemento a dos. Sin embargo antes de que comprendas este esquema, debes entender el término complemento de bits. El complemento de un patrón de bits es el patrón que contiene exactamente sus valores opuestos; cada 0 es cambiado a 1 y cada 1 por un cero. Aquí hay algunos ejemplos. Patrón de bits Complemento Para calcular el complemento a dos de un número, debes obtener su complemento y sumarle 1. Por ejemplo el complemento a dos de B (57 decimal): patrón original complemento comp. a dos Esta regla puede ser usada para obtener el complemento a dos de cualquier patrón de bits, sin embargo hay una regla extra que debes considerar cuando calculas el complemento a dos de cero. patrón original complemento La regla extra es ignorar los acarreos de 1 generados por el complemento de cero. 21

22 13.3 Usar el complemento a dos para representar números con signo. El procesador utiliza el complemento a dos para representar números con signo. El esquema es que, mientras un número positivo es representado por su valor binario, un número negativo es representado por el complemento a dos de su número positivo. El bit de más a la izquierda indica el signo: 0 positivo 1 negativo. En otras palabras, el negativo de un número es su complemento a dos. Aquí hay algunos ejemplos de valores de 8 bits. Valor decimal valor binario complemento a dos Descifrando números en complemento a dos. Cuando escribes un programa el complemento a dos de los números negativos no representa ningún problema, debido a que puede usar decimales con signo cuando es necesario. Sin embargo cuando pruebas un programa con un debugger, necesitas interpretar los valores negativos en los registros y locaciones de memoria. En tales casos, necesitas calcular el complemento a dos del número para encontrar valor absoluto. Aquí hay un ejemplo. Digamos que pruebas un programa con números con signo, y AX contiene el siguiente patrón de bits: B Sabes que el numero es negativo ya que empieza con 1, para encontrar su valor calculas el complemento a dos. patrón original complemento comp. a dos Convirtiendo el complemento a dos a decimal encontramos que su valor es Así el numero original tenia el valor Por supuesto estos valores en el debugger estarán en hexadecimal. Debes convertir estos valores a binario hacer el complemento y después obtener su valor en decimal. Aquí hay un ejemplo: El programa trabaja con números con signo y el registro AX contiene C04AH: C 0 4 A 22

23 Después obtenemos el complemento a dos patrón de bits complemento comp. a dos El numero en decimal es 16310, o sea originalmente Digamos que una palabra tiene la primera parte del numero con signo en la locación 10A0H y su segunda palabra en la locación posterior si estos valores fueran 5CH y B7H respectivamente cual es el numero que representa: B 7 5 C patrón original complemento comp. a dos en decimal era el Puedes usar la siguiente regla para los dígitos hexadecimales. Un número con signo en hex es positivo si empieza con los dígitos: Y es negativo si empieza con los dígitos: 8 9 A B C D E F 13.5 Usar saltos condicionales con números con signo y sin signo. Existen un conjunto de saltos condicionales para números con signo y otro para números sin signo. Primero que todo debes asegurarte que el valor del número no sobrepasa el rango permitido. Para hacer esto, usa el salto condicional apropiado después de la operación aritmética. Con números sin signo, las instrucciones JC y JNC prueban las condiciones de rebose: JC salta si el valor sin signo se sobrepaso JNC salta si el valor sin signo no se sobrepaso Estas instrucciones prueban la bandera de acarreo (CF), si el valor se sobrepaso la bandera CF esta puesta a 1, sino la bandera esta a 0. Con números con signo, las instrucciones JO y JNO prueban las condición de sobreflujo: JO salta si el valor con signo se sobrepaso 23

24 JNO salta si el valor con signo no se sobrepaso Estas instrucciones prueban la bandera de sobreflujo (OF), si el valor se sobrepaso OF esta 1, sino esta a 0. Por ejemplo digamos que quieres sumar la variable VALOR al registro AX y después comprobar si el resultado no fue muy grande. si lo fue saltamos a la etiqueta de ERROR. Si estas usando números con signo puedes usar ADD JC AX,VALOR ERROR Si estas usando números sin signo puedes usar ADD JO AX,VALOR ERROR La tabla 13-3 muestra los saltos condicionales disponibles para ambos tipos de números Saltos condicionales para números sin signo Opcode Significado JC salta si sobreflujo JNC salta si no sobreflujo JB (JNAE) salta si debajo (no arriba ni igual) JA (JNBE) salta si arriba (no abajo o igual) JBE (JNA) salta si debajo o igual (no arriba) JAE (JNB) salta si arriba o igual (no abajo) JE salta si igual JNE salta si no igual Saltos condicionales para números con signo Opcode Significado JO salta si sobreflujo JNO salta si no sobreflujo JL (JNGE) salta si menor que (no mayor que o igual) JG (JNLE) salta si mayor que (no menor o igual) JLE (JNL) salta si menor o igual (no mayor que) JGE (JNL) salta si mayor o igual (no menor) JE salta si igual JNE salta si no igual Cuando comparas dos números, asegúrate de usar el salto condicional adecuado. Por ejemplo, si quieres comparar el valor del registro AX con al variable TOTAL sin signo. Digamos que quieres saltar si AX e mayor que TOTAL puedes usar. CMP JA AX,TOTAL L1 Si estas usando números con signo puedes usar: CMP JG AX,TOTAL L1 24

25 El último tipo de salto condicional se aplica solo a los números con signo. Puedes usar las instrucciones JS y JNS para checar la bandera de signo (SF) JS salta si SF esta puesta a 1 JNS salta si SF esta puesta a 0 Si el resultado de la operación previa fue positivo SF tendrá un valor de 0. Si el resultado es negativo SF tendrá un Adición y substracción: ADD y SUB. La suma y resta son conceptualmente simples. Usa la instrucciones ADD y SUB. El formato es: ADD SUB operando1, operando2 operando1, operando2 El segundo operando es sumado o restado del primero. El resultado es almacenado en el primer operando, remplazando el valor original. Aquí hay algunos ejemplos: ADD SUB AX,VALOR AX,VALOR En el primer ejemplo la instrucción ADD calcula (AX+VALOR) y guarda el resultado en AX. La segunda instrucción resta (AX-VALOR) y guarda también el resultado en AX. Los operandos deben ser del mismo tipo: ambos bytes o palabras. El primer operando puede ser un registro, o un campo dato (locación de memoria). El segundo operando puede ser un registro, un campo dato, o un valor inmediato. Sin embargo no puedes sumar directamente dos campos dato ADD VALOR1,VALOR2 Si VALOR1 y VALOR2 son campos dato, debes copiar uno a un registro: MOV ADD AX,VALOR2 VALOR1,AX 13.7 Sumar y restar una palabra y un byte. Las instrucciones ADD y SUB requieren que ambos operandos sean de la misma longitud, ya sea byte o palabra. Sin embargo, es útil poder restar o sumar una palabra y un byte. en tales casos, necesitas expander el byte a una palabra. Los pasos son los siguientes: 1. Copiar el byte a la parte derecha de AX. 2. Ajustar la parte izquierda de AX apropiadamente. (tener cuidado si el número tiene signo) 25

26 3. Usar AX en lugar del byte en el calculo. Aquí hay un ejemplo. Digamos que quieres sumar dos campos dato BYTE_VALOR de un byte y WORD_VALOR de una palabra. Si son números sin signo, las instrucciones son MOV MOV ADD AL,BYTE_VALOR AH,0 AX,WORD_VALOR Si estas trabajando con números con signo, la instrucción CBW puede ayudarte a poner AH al valor complementado en dos apropiado. La instrucción CBW puede entenderse como convertir byte a word. Así, si quieres hacer lo mismo que en el ejemplo anterior usando números con signo: MOV CBW ADD AL,BYTE_VALOR AX,WORD_VALOR CBW trabaja solo con AH y AL. La instrucción examina el valor de AL y hace que AX tenga el mismo valor complementado de AL. Si AL es positivo AH esta como cero, si AL es negativo, AH esta puesta toda a unos Sumar y Restar números muy grandes: ADC y SBB. Algunas veces necesitas sumar o restar números que son mucho mayores que los rangos de bytes o palabras, aunque no tengas coprocesador puedes utilizar las palabras dobles y cuádruples para estas operaciones. Sin embargo tendrás que usar instrucciones regulares y trabajar sobre los números grandes una palabra a la vez. En tales casos puedes usar las directivas DD y DQ para definir los números. Aquí hay un ejemplo del uso de palabras dobles. Quieres sumar a Define los campos dato como sigue: DFIRST DD DSECOND DD En hex, los valores son 3ADE68B1H Y 075BCD15H. Aquí esta almacenados los valores en las palabras dobles: Note que los bytes están almacenados en orden inverso. Las dos palabras de DFIRST pueden ser direccionadas como DFIRST y DFIRST+2; las dos palabras de DSECOND pueden ser direccionadas como DSECOND y DSECOND+2. Para ejecutar la suma, debemos sumar una palabra a la vez. Como los bytes están almacenados en orden inverso, debes sumar de izquierda a derecha. Los pasos son los siguientes: Sumar la palabra de la izquierda de DSECOND en la palabra de la izquierda de DFIRST. Sumar la palabra de la derecha de DSECOND a la palabra de la derecha de DFIRST. 26

27 La primera suma puede generar un acarreo. Si es así el acarreo debe ser sumado a la segunda suma. La instrucción ADD siempre avisa si hay un acarreo activando la bandera CF. Hay una instrucción que hace este trabajo llamada ADC, la cual significa suma y acarrea. Así puedes usar ADC para hacer las sumas izquierdas y ADC para las derechas. Veamos el código. ; sumar palabras dobles: DFIRST<---DFIRST+DSECOND MOV AX,WORD PTR DSECOND ADD WORD PTR DFIRST,AX MOV AX,WORD PTR SECOND+2 ADC WORD PTR DFIRST+2,AX Nota- La instrucción MOV no modifica el valor de CF. Si quieres usar palabras cuádruples, el patrón es el mismo. Como las palabras, el ensamblador almacena las palabras dobles y cuádruples en orden inverso. Primero define dos campos dato con su valores: QFIRST DQ QSECOND DQ Ahora, sume las dos números una palabra a la vez, de izquierda a derecha. Use ADD para la primera adición y use ADC para todas las subsecuentes adiciones y sus acarreos. ; sumar quadwords: QFIRST<-- QFIRST+QSECOND MOV AX,WORD PTR QSECOND ADD WORD PTR QFIRST,AX MOV AX,WORD PTR QSECOND+2 ADC WORD PTR QFIRST+2,AX MOV AX,WORD PTR QSECOND+4 ADC WORD PTR QFIRST+4,AX MOV AX,WORD PTR QSECOND+6 ADC WORD PTR QFIRST+6,AX La substracción es similar a la adición. La diferencia es que no hay acarreos sino prestamos. Con la resta CF esta activa a 1 si hay un préstamo en la posición de más a la izquierda; sino CF esta puesta a 0. La instrucción SBB es análoga al ADC. El valor de CF es tomado en cuenta durante la resta. Así puedes restar números grandes una palabra a la vez de izquierda a derecha usando SUB para la primera resta y SBB para la demás. Aquí hay dos ejemplos, que muestran como restar palabras dobles y cuádruples. ; restar palabras dobles: DFIRST<-- DFIRST-DSECOND MOV AX,WORD PTR DSECOND SUB WORD PTR DFIRST,AX MOV AX,WORD PTR DSECOND+2 SBB WORD PTR DFIRST+2,AX ; restar palabras cuádruples: QFIRST<-- QFIRST-QSECOND MOV AX,WORD PTR QSECOND SUB WORD PTR QFIRST,AX MOV AX,WORD PTR DSECOND+2 SBB WORD PTR QFIRST+2,AX MOV AX,WORD PTR QSECOND+4 27

28 SBB WORD PTR QFIRST+4,AX MOV AX,WORD PTR QSECOND+6 SBB WORD PTR QFIRST+6,AX 13.9 Sumar y restar 1 de un número: INC y DEC. El procesador tiene dos instrucciones que pueden incrementar o decrementar 1 a un numero estas son INC y DEC. Su formato es: INC operando DEC operando El operando puede ser un campo dato o un registro. Aquí hay algunos ejemplos: INC AX DEC AL INC CH DEC DI INC TOTAL DEC TABLE[BX]+4 INC y DEC son usadas especialmente con ciclos cuyos valores deben ser incrementados o decrementados en 1 cada vez que se ejecute el ciclo. El siguiente ejemplo tiene un ciclo que llama al procedimiento READ_CARACTER hasta que la bandera de acarreo CF tiene un valor de 1. El campo dato CONT es usado para contar el numero de veces que el procedimiento es invocado. ; repeat ; call READ_CARACTER ; until CF=1 ; cont = numero de invocaciones CLC MOV CONT,0 L1: CALL READ_CARACTER INC CONT JNC L Cambiar el signo de un número: NEG. Una de las operaciones fundamentales que puedes ejecutar en un numero con signo es cambiar su signo de negativo a positivo o viceversa. Para hacer esto usa la instrucción NEG, su formato es: NEG operando El operando puede ser un campo dato o un registro: Aquí hay algunos ejemplos: NEG NEG NEG AX VALOR SI 28

29 NEG CL Multiplicación: MUL y IMUL. Existen dos instrucciones para multiplicar: MUL para números sin signo e IMUL para números con signo. Excepto por la diferencia entre los tipos, el comportamiento de las instrucciones es el mismo. El formato es MUL operando IMUL operando El operando puede ser un registro o un campo dato, y puede ser de tipo byte o word. Para multiplicar el procesador necesita dos operandos, si especificas un operando byte, el procesador asume que el otro operando está en AL, si especificas un operando word, el procesador asume que el otro operando está en AX. Por ejemplo, si BVALOR es un campo dato de tipo byte, la siguiente instrucción multiplica AL por VALOR: MUL BVALOR si WVALOR es un campo dato de tipo word, la siguiente instrucción multiplica AX por WVALOR MUL WVALOR Cuando multiplicas, el resultado puede ser el doble de grande que los operandos. Cuando multiplicas un byte por otro, el procesador siempre genera un resultado de 2 bytes, la parte izquierda está en AH, y la derecha en AL. Aquí hay un ejemplo. Digamos que AL tiene un valor de 100 (64H) y BVALOR contiene 10 (0AH). antes de la multiplicación, AX contiene AH AL?? 64 Después de la multiplicación, el resultado es 1000 (3E8H) y AX contiene AH AL 03 E8 Cuando multiplicas una palabra por otra el procesador siempre genera un resultado de 4 bytes. La parte izquierda queda en DX y la derecha en AX. Aquí hay un ejemplo. Digamos que WVALOR contiene 1000 (3E8H) y AX contiene (D903H). Antes de la multiplicación DX:AX contiene DX AX???? D903 Después de la multiplicación, el resultado es (34FB3B8H) y DX:AX contiene DX 034f AX B3B8 29

❷ Aritmética Binaria Entera

❷ Aritmética Binaria Entera ❷ Una de las principales aplicaciones de la electrónica digital es el diseño de dispositivos capaces de efectuar cálculos aritméticos, ya sea como principal objetivo (calculadoras, computadoras, máquinas

Más detalles

Introducción a la Programación 11 O. Humberto Cervantes Maceda

Introducción a la Programación 11 O. Humberto Cervantes Maceda Introducción a la Programación 11 O Humberto Cervantes Maceda Recordando En la sesión anterior vimos que la información almacenada en la memoria, y por lo tanto aquella que procesa la unidad central de

Más detalles

62/8&,21(6$/(;$0(1'( /$%25$725,2'((6758&785$6'(/26&20387$'25(6 &8562)(%5(52

62/8&,21(6$/(;$0(1'( /$%25$725,2'((6758&785$6'(/26&20387$'25(6 &8562)(%5(52 62/8&,21(6$/(;$0(1'( /$%25$725,2'((6758&785$6'(/26&20387$'25(6 &8562)(%5(52 3DUWHGH(QVDPEODGRU 4º) Escribir un programa en ensamblador que pida un número de una cifra por teclado y saque como resultado

Más detalles

Creación de Funciones de Conducción

Creación de Funciones de Conducción Creación de Funciones de Conducción Requerimientos Para el desarrollo de esta actividad se requiere que: Contemos con un robot BoeBot armado con placa Arduino. Repetición En estos momentos habremos notado

Más detalles

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal) Unidad I Sistemas numéricos 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal) Los computadores manipulan y almacenan los datos usando interruptores electrónicos que están ENCENDIDOS o APAGADOS.

Más detalles

6-REGISTROS DEL 8086 Y DEL 80286

6-REGISTROS DEL 8086 Y DEL 80286 ESTRUCTURA DE COMPUTADORES I (Capítulo 6: Los registros del microprocesador 8086) 1/7 6-REGISTROS DEL 8086 Y DEL 80286 6.1 INTRODUCCIÓN: Dentro del procesador existen unos contenedores especiales de 16

Más detalles

Arquitectura intel 8086. Preámbulo de OSO para alumnos formados en el procesador MIPS. Asignatura Sistemas Operativos Murcia abril de 2005

Arquitectura intel 8086. Preámbulo de OSO para alumnos formados en el procesador MIPS. Asignatura Sistemas Operativos Murcia abril de 2005 Arquitectura intel 8086 Preámbulo de OSO para alumnos formados en el procesador MIPS Asignatura Sistemas Operativos Murcia abril de 2005 página 1. Introducción 2 2.- Direccionamiento y Registros de Segmento

Más detalles

Apuntes de Microcontroladores (Repaso de temas previos)

Apuntes de Microcontroladores (Repaso de temas previos) Apuntes de Microcontroladores (Repaso de temas previos) Por M. C. Miguelangel Fraga Aguilar Enero 2015 Representaciones numéricas En estos apuntes se usara el posfijo b para denotar un número escrito en

Más detalles

Lección 1. Representación de números

Lección 1. Representación de números Lección 1. Representación de números 1.1 Sistemas de numeración Empecemos comentando cual es el significado de la notación decimal a la que estamos tan acostumbrados. Normalmente se escribe en notación

Más detalles

Capítulo 0. Introducción.

Capítulo 0. Introducción. Capítulo 0. Introducción. Bueno, por fin está aquí el esperado (espero!!) Capítulo Cero del Tutorial de Assembler. En él estableceremos algunos conceptos que nos serán de utilidad a lo largo del Tutorial.

Más detalles

Los sistemas de numeración se clasifican en: posicionales y no posicionales.

Los sistemas de numeración se clasifican en: posicionales y no posicionales. SISTEMAS NUMERICOS Un sistema numérico es un conjunto de números que se relacionan para expresar la relación existente entre la cantidad y la unidad. Debido a que un número es un símbolo, podemos encontrar

Más detalles

Ejemplos de conversión de reales a enteros

Ejemplos de conversión de reales a enteros Ejemplos de conversión de reales a enteros Con el siguiente programa se pueden apreciar las diferencias entre las cuatro funciones para convertir de reales a enteros: program convertir_real_a_entero print

Más detalles

UNIDAD 1. LOS NÚMEROS ENTEROS.

UNIDAD 1. LOS NÚMEROS ENTEROS. UNIDAD 1. LOS NÚMEROS ENTEROS. Al final deberás haber aprendido... Interpretar y expresar números enteros. Representar números enteros en la recta numérica. Comparar y ordenar números enteros. Realizar

Más detalles

TEMA 2: Representación de la Información en las computadoras

TEMA 2: Representación de la Información en las computadoras TEMA 2: Representación de la Información en las computadoras Introducción Una computadora es una máquina que procesa información y ejecuta programas. Para que la computadora ejecute un programa, es necesario

Más detalles

PRACTICA #1. Aprender a programar una interrupción software empleando C y/o Ensamblador.

PRACTICA #1. Aprender a programar una interrupción software empleando C y/o Ensamblador. PRACTICA #1 Aprender a programar una interrupción software empleando C y/o Ensamblador. Aprender a manipular dispositivos externos (8253, 8255) desde C y/o ensamblador. PROCEDIMIENTO: Vamos a programar

Más detalles

DESARROLLO DE HABILIDADES DEL PENSAMIENTO LÓGICO

DESARROLLO DE HABILIDADES DEL PENSAMIENTO LÓGICO I. SISTEMAS NUMÉRICOS DESARROLLO DE HABILIDADES DEL PENSAMIENTO LÓGICO LIC. LEYDY ROXANA ZEPEDA RUIZ SEPTIEMBRE DICIEMBRE 2011 Ocosingo, Chis. 1.1Sistemas numéricos. Los números son los mismos en todos

Más detalles

Generación de código para funciones. Generación de código para funciones. Generación de código para funciones. Generación de código para funciones

Generación de código para funciones. Generación de código para funciones. Generación de código para funciones. Generación de código para funciones Ejemplo introductorio: escritura de funciones en NASM Ejemplo introductorio: escritura de funciones en NASM En estas transparencias pondremos una subrutina ASPLE y la generación de código equivalente En

Más detalles

INSTRUCCIONES ARITMÉTICAS.

INSTRUCCIONES ARITMÉTICAS. Microprocesadores. Guía 4 1 Facultad: Ingeniería. Escuela: Electrónica. Asignatura: Microprocesadores. Lugar de ejecución: Microprocesadores (Edificio 3, 2da planta). INSTRUCCIONES ARITMÉTICAS. Objetivos

Más detalles

UNIDAD 2 Configuración y operación de un sistema de cómputo Representación de datos Conceptos El concepto de bit (abreviatura de binary digit) es fundamental para el almacenamiento de datos Puede representarse

Más detalles

UNIDADES DE ALMACENAMIENTO DE DATOS

UNIDADES DE ALMACENAMIENTO DE DATOS 1.2 MATÉMATICAS DE REDES 1.2.1 REPRESENTACIÓN BINARIA DE DATOS Los computadores manipulan y almacenan los datos usando interruptores electrónicos que están ENCENDIDOS o APAGADOS. Los computadores sólo

Más detalles

21/02/2012. Agenda. Unidad Central de Procesamiento (CPU)

21/02/2012. Agenda. Unidad Central de Procesamiento (CPU) Agenda 0 Tipos de datos 0 Sistemas numéricos 0 Conversión de bases 0 Números racionales o Decimales 0 Representación en signo-magnitud 0 Representación en complemento Unidad Central de Procesamiento (CPU)

Más detalles

Los números racionales

Los números racionales Los números racionales Los números racionales Los números fraccionarios o fracciones permiten representar aquellas situaciones en las que se obtiene o se debe una parte de un objeto. Todas las fracciones

Más detalles

EJERCICIOS DEL TEMA 1

EJERCICIOS DEL TEMA 1 EJERCICIOS DEL TEMA 1 Introducción a los ordenadores 1) Averigua y escribe el código ASCII correspondiente, tanto en decimal como en binario, a las letras de tu nombre y apellidos. Distinguir entre mayúsculas/minúsculas,

Más detalles

SISTEMAS DE NUMERACIÓN. Sistema decimal

SISTEMAS DE NUMERACIÓN. Sistema decimal SISTEMAS DE NUMERACIÓN Sistema decimal Desde antiguo el Hombre ha ideado sistemas para numerar objetos, algunos sistemas primitivos han llegado hasta nuestros días, tal es el caso de los "números romanos",

Más detalles

Sistemas de Numeración Operaciones - Códigos

Sistemas de Numeración Operaciones - Códigos Sistemas de Numeración Operaciones - Códigos Tema 2 1. Sistema decimal 2. Sistema binario 3. Sistema hexadecimal 4. Sistema octal 5. Conversión decimal binario 6. Aritmética binaria 7. Complemento a la

Más detalles

Apuntes de ACCESS. Apuntes de Access. Campos de Búsqueda:

Apuntes de ACCESS. Apuntes de Access. Campos de Búsqueda: Apuntes de ACCESS Campos de Búsqueda: Los campos de búsqueda permiten seleccionar el valor de un campo de una lista desplegable en lugar de tener que escribirlos. El usuario sólo tiene que elegir un valor

Más detalles

by Tim Tran: https://picasaweb.google.com/lh/photo/sdo00o8wa-czfov3nd0eoa?full-exif=true

by Tim Tran: https://picasaweb.google.com/lh/photo/sdo00o8wa-czfov3nd0eoa?full-exif=true by Tim Tran: https://picasaweb.google.com/lh/photo/sdo00o8wa-czfov3nd0eoa?full-exif=true I. FUNDAMENTOS 3. Representación de la información Introducción a la Informática Curso de Acceso a la Universidad

Más detalles

UNIDAD 3: ARITMÉTICA DEL COMPUTADOR

UNIDAD 3: ARITMÉTICA DEL COMPUTADOR UNIDAD 3: ARITMÉTICA DEL COMPUTADOR Señor estudiante, es un gusto iniciar nuevamente con usted el desarrollo de esta tercera unidad. En esta ocasión, haremos una explicación más detallada de la representación

Más detalles

Lección 4: Suma y resta de números racionales

Lección 4: Suma y resta de números racionales GUÍA DE MATEMÁTICAS II Lección : Suma y resta de números racionales En esta lección recordaremos cómo sumar y restar números racionales. Como los racionales pueden estar representados como fracción o decimal,

Más detalles

Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso 2006 2007 Aritmética binaria

Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso 2006 2007 Aritmética binaria Oliverio J. Santana Jaria 3. Aritmética tica binaria Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso 2006 2007 Para Los La en conocer muchos aritmética comprender otros binaria tipos

Más detalles

Computación I Representación Interna Curso 2011

Computación I Representación Interna Curso 2011 Computación I Representación Interna Curso 2011 Facultad de Ingeniería Universidad de la República Temario Representación de Números Enteros Representación de Punto Fijo Enteros sin signo Binarios puros

Más detalles

2.1.- EJEMPLO DE UN PROGRAMA FORTRAN

2.1.- EJEMPLO DE UN PROGRAMA FORTRAN 2.1.- EJEMPLO DE UN PROGRAMA FORTRAN Con el presente apartado comenzaremos a conocer cómo se escribe un programa en lenguaje FORTRAN bajo el entorno de programación FORTRAN. En primer lugar conozcamos

Más detalles

Figura 1. Símbolo que representa una ALU. El sentido y la funcionalidad de las señales de la ALU de la Figura 1 es el siguiente:

Figura 1. Símbolo que representa una ALU. El sentido y la funcionalidad de las señales de la ALU de la Figura 1 es el siguiente: Departamento de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Antioquia Arquitectura de Computadores y Laboratorio ISI355 (2011 2) Práctica No. 1 Diseño e implementación de una unidad aritmético

Más detalles

Lección 1-Introducción a los Polinomios y Suma y Resta de Polinomios. Dra. Noemí L. Ruiz Limardo 2009

Lección 1-Introducción a los Polinomios y Suma y Resta de Polinomios. Dra. Noemí L. Ruiz Limardo 2009 Lección 1-Introducción a los Polinomios y Suma y Resta de Polinomios Dra. Noemí L. Ruiz Limardo 2009 Objetivos de la Lección Al finalizar esta lección los estudiantes: Identificarán, de una lista de expresiones

Más detalles

Programa diseñado y creado por 2014 - Art-Tronic Promotora Audiovisual, S.L.

Programa diseñado y creado por 2014 - Art-Tronic Promotora Audiovisual, S.L. Manual de Usuario Programa diseñado y creado por Contenido 1. Acceso al programa... 3 2. Opciones del programa... 3 3. Inicio... 4 4. Empresa... 4 4.2. Impuestos... 5 4.3. Series de facturación... 5 4.4.

Más detalles

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL OBJETIVO Mejorar el nivel de comprensión y el manejo de las destrezas del estudiante para utilizar formulas en Microsoft Excel 2010. 1) DEFINICIÓN Una fórmula de Excel es un código especial que introducimos

Más detalles

SIIGO Pyme. Templates. Cartilla I

SIIGO Pyme. Templates. Cartilla I SIIGO Pyme Templates Cartilla I Tabla de Contenido 1. Presentación 2. Qué es un Template? 3. Qué Aspectos se Deben Tener en Cuenta Antes de Diseñar o Modificar un Template? 4. Cuáles son las Formas que

Más detalles

Modulo 1 El lenguaje Java

Modulo 1 El lenguaje Java Modulo 1 El lenguaje Java 13 - Codificación en Java Una de las grandes diferencias entre Java y Pascal en cuando a la codificación es que Java se trata de un lenguaje de los llamados case sensitive Esto

Más detalles

Entorno de Ejecución del Procesador Intel Pentium

Entorno de Ejecución del Procesador Intel Pentium Arquitectura de Ordenadores Arquitectura del Procesador Intel Pentium Abelardo Pardo abel@it.uc3m.es Universidad Carlos III de Madrid Departamento de Ingeniería Telemática Entorno de Ejecución del Procesador

Más detalles

Informática Bioingeniería

Informática Bioingeniería Informática Bioingeniería Representación Números Negativos En matemáticas, los números negativos en cualquier base se representan del modo habitual, precediéndolos con un signo. Sin embargo, en una computadora,

Más detalles

1 1 0 1 x 1 0 1 1 1 1 0 1 + 1 1 0 1 0 0 0 0 1 1 0 1 1 0 0 0 1 1 1 1

1 1 0 1 x 1 0 1 1 1 1 0 1 + 1 1 0 1 0 0 0 0 1 1 0 1 1 0 0 0 1 1 1 1 5.1.3 Multiplicación de números enteros. El algoritmo de la multiplicación tal y como se realizaría manualmente con operandos positivos de cuatro bits es el siguiente: 1 1 0 1 x 1 0 1 1 1 1 0 1 + 1 1 0

Más detalles

Sistemas de numeración

Sistemas de numeración Sistemas de numeración Un sistema de numeración es un conjunto de símbolos y reglas que permiten representar datos numéricos. Los sistemas de numeración actuales son sistemas posicionales, que se caracterizan

Más detalles

Matemática de redes Representación binaria de datos Bits y bytes

Matemática de redes Representación binaria de datos Bits y bytes Matemática de redes Representación binaria de datos Los computadores manipulan y almacenan los datos usando interruptores electrónicos que están ENCENDIDOS o APAGADOS. Los computadores sólo pueden entender

Más detalles

El sistema decimal, es aquél en el que se combinan 10 cifras (o dígitos) del 0 al 9 para indicar una cantidad específica.

El sistema decimal, es aquél en el que se combinan 10 cifras (o dígitos) del 0 al 9 para indicar una cantidad específica. 5.2 SISTEMAS DE NUMERACIÓN. DECIMAL El sistema decimal, es aquél en el que se combinan 10 cifras (o dígitos) del 0 al 9 para indicar una cantidad específica. La base de un sistema indica el número de caracteres

Más detalles

Comisión Nacional de Bancos y Seguros

Comisión Nacional de Bancos y Seguros Comisión Nacional de Bancos y Seguros Manual de Usuario Capturador de Pólizas División de Servicios a Instituciones Financieras Mayo de 2011 2 Contenido 1. Presentación... 3 1.1 Objetivo... 3 2. Descarga

Más detalles

Cifras significativas e incertidumbre en las mediciones

Cifras significativas e incertidumbre en las mediciones Unidades de medición Cifras significativas e incertidumbre en las mediciones Todas las mediciones constan de una unidad que nos indica lo que fue medido y un número que indica cuántas de esas unidades

Más detalles

Tema 2. Diseño del repertorio de instrucciones

Tema 2. Diseño del repertorio de instrucciones Soluciones a los problemas impares Tema 2. Diseño del repertorio de instrucciones Arquitectura de Computadores Curso 2009-2010 Tema 2: Hoja: 2 / 16 Tema 2: Hoja: 3 / 16 Base teórica Al diseñar un computador,

Más detalles

TABLA DE DECISION. Consideremos la siguiente tabla, expresada en forma genérica, como ejemplo y establezcamos la manera en que debe leerse.

TABLA DE DECISION. Consideremos la siguiente tabla, expresada en forma genérica, como ejemplo y establezcamos la manera en que debe leerse. TABLA DE DECISION La tabla de decisión es una herramienta que sintetiza procesos en los cuales se dan un conjunto de condiciones y un conjunto de acciones a tomar según el valor que toman las condiciones.

Más detalles

Lógica Binaria. Arquitectura de Ordenadores. Codificación de la Información. Abelardo Pardo abel@it.uc3m.es. Universidad Carlos III de Madrid

Lógica Binaria. Arquitectura de Ordenadores. Codificación de la Información. Abelardo Pardo abel@it.uc3m.es. Universidad Carlos III de Madrid Arquitectura de Ordenadores Codificación de la Información Abelardo Pardo abel@it.uc3m.es Universidad Carlos III de Madrid Departamento de Ingeniería Telemática Lógica Binaria COD-1 Internamente el ordenador

Más detalles

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

En cualquier caso, tampoco es demasiado importante el significado de la B, si es que lo tiene, lo interesante realmente es el algoritmo. Arboles-B Características Los árboles-b son árboles de búsqueda. La "B" probablemente se debe a que el algoritmo fue desarrollado por "Rudolf Bayer" y "Eduard M. McCreight", que trabajan para la empresa

Más detalles

SISTEMAS NUMERICOS. Ing. Rudy Alberto Bravo

SISTEMAS NUMERICOS. Ing. Rudy Alberto Bravo SISTEMAS NUMERICOS SISTEMAS NUMERICOS Si bien el sistema de numeración binario es el más importante de los sistemas digitales, hay otros que también lo son. El sistema decimal es importante porque se usa

Más detalles

Selección de los puntos de montaje

Selección de los puntos de montaje PARTICIONES PARA LINUX Selección de los puntos de montaje Tanto para aquellos que vayan a instalar ahora, como para quienes quieran cambiar el tamaño de una partición o formatear este apunte (resumen de

Más detalles

!!!!!!!! !!!!! Práctica!4.! Programación!básica!en!C.! ! Grado!en!Ingeniería!!en!Electrónica!y!Automática!Industrial! ! Curso!2015H2016!

!!!!!!!! !!!!! Práctica!4.! Programación!básica!en!C.! ! Grado!en!Ingeniería!!en!Electrónica!y!Automática!Industrial! ! Curso!2015H2016! INFORMÁTICA Práctica4. ProgramaciónbásicaenC. GradoenIngenieríaenElectrónicayAutomáticaIndustrial Curso2015H2016 v2.1(18.09.2015) A continuación figuran una serie de ejercicios propuestos, agrupados por

Más detalles

BENEMÉRITA UNIVERSIDAD AUTÓNOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN

BENEMÉRITA UNIVERSIDAD AUTÓNOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN BENEMÉRITA UNIVERSIDAD AUTÓNOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN PRÁCTICA DE LABORATORIO No I NOMBRE DE LA PRÁCTICA: COMANDOS BÁSICOS DE DEBUG( PARTE I) OBJETIVO: APRENDER LOS COMANDOS

Más detalles

Capítulo 1 Introducción a la Computación

Capítulo 1 Introducción a la Computación Capítulo 1 Introducción a la Computación 1 MEMORIA PRINCIPAL (RAM) DISPOSITIVOS DE ENTRADA (Teclado, Ratón, etc) C P U DISPOSITIVOS DE SALIDA (Monitor, Impresora, etc.) ALMACENAMIENTO (Memoria Secundaria:

Más detalles

EJERCICIOS RESUELTOS SOBRE ERRORES DE REDONDEO

EJERCICIOS RESUELTOS SOBRE ERRORES DE REDONDEO EJERCICIOS RESUELTOS SOBRE ERRORES DE REDONDEO 1º) Considérese un número estrictamente positivo del sistema de números máquina F(s+1, m, M, 10). Supongamos que tal número es: z = 0.d 1 d...d s 10 e Responde

Más detalles

Para crear una lista como la anterior, primero escribe la información, y después selecciona el texto y aplícale el formato de viñetas.

Para crear una lista como la anterior, primero escribe la información, y después selecciona el texto y aplícale el formato de viñetas. Módulo 3 Herramientas de Cómputo Listas, tabulaciones, columnas y cuadros de texto Listas En muchas ocasiones es necesario que enumeres diferentes elementos en tus documentos. Word no sólo reconoce números

Más detalles

Tema 2. La Información y su representación

Tema 2. La Información y su representación Tema 2. La Información y su representación 2.1 Introducción. Un ordenador es una máquina que procesa información. La ejecución de un programa implica la realización de unos tratamientos, según especifica

Más detalles

Capítulo 9. Archivos de sintaxis

Capítulo 9. Archivos de sintaxis Capítulo 9 Archivos de sintaxis El SPSS permite generar y editar archivos de texto con sintaxis SPSS, es decir, archivos de texto con instrucciones de programación en un lenguaje propio del SPSS. Esta

Más detalles

Curso PHP Módulo 1 R-Luis

Curso PHP Módulo 1 R-Luis Lenguaje PHP Introducción Archivos HTML y PHP: Crear un archivo php es tan sencillo como cambiarle la extensión a un archivo html, por ejemplo podemos pasar de index.html a index.php sin ningún inconveniente.

Más detalles

Estructuras de Datos y Algoritmos Práctica I - Curso 2012/13

Estructuras de Datos y Algoritmos Práctica I - Curso 2012/13 Estructuras de Datos y Algoritmos Práctica I - Curso 2012/13 Rompiendo el Código Enigma Introducción y objetivos Como un pequeño homenaje a Alan Turing en su año conmemorativo, las prácticas de este curso

Más detalles

Sintaxis y Convenciones de Java. M. en C. Erika Vilches

Sintaxis y Convenciones de Java. M. en C. Erika Vilches Sintaxis y Convenciones de Java M. en C. Erika Vilches Estructura del Código en Java Hay una clase en un archivo fuente Hay métodos en una clase Hay enunciados en un método Anatomía de una Clase Cuando

Más detalles

CAPÍTULO VI PREPARACIÓN DEL MODELO EN ALGOR. En este capítulo, se hablará acerca de los pasos a seguir para poder realizar el análisis de

CAPÍTULO VI PREPARACIÓN DEL MODELO EN ALGOR. En este capítulo, se hablará acerca de los pasos a seguir para poder realizar el análisis de CAPÍTULO VI PREPARACIÓN DEL MODELO EN ALGOR. En este capítulo, se hablará acerca de los pasos a seguir para poder realizar el análisis de cualquier modelo en el software Algor. La preparación de un modelo,

Más detalles

V i s i t a V i r t u a l e n e l H o s p i t a l

V i s i t a V i r t u a l e n e l H o s p i t a l V i s i t a V i r t u a l e n e l H o s p i t a l Manual de Restauración del PC Septiembre 2011 TABLA DE CONTENIDOS SOBRE EL SOFTWARE... 3 CONSIDERACIONES ANTES DE RESTAURAR... 4 PROCEDIMIENTO DE RECUPERACION...

Más detalles

Segmentación de redes. CCNA 1: módulo 10.

Segmentación de redes. CCNA 1: módulo 10. CURSO A DISTANCIA CCNA: Técnico experto en redes e Internet. MATERIAL DIDÁCTICO COMPLEMENTARIO: Segmentación de redes. CCNA 1: módulo 10. RUBÉN MUÑOZ HERNÁNDEZ. 1.- INTRODUCCIÓN. Aunque los materiales

Más detalles

TEMA 1: SISTEMAS INFORMÁTICOS. Parte 2: representación de la información

TEMA 1: SISTEMAS INFORMÁTICOS. Parte 2: representación de la información TEMA 1: SISTEMAS INFORMÁTICOS Parte 2: representación de la información Qué vamos a ver? Cómo se representa y almacena la información en un ordenador Cómo podemos relacionar la información que entendemos

Más detalles

Matemáticas para la Computación

Matemáticas para la Computación Matemáticas para la Computación José Alfredo Jiménez Murillo 2da Edición Inicio Índice Capítulo 1. Sistemas numéricos. Capítulo 2. Métodos de conteo. Capítulo 3. Conjuntos. Capítulo 4. Lógica Matemática.

Más detalles

Cuestionario: Programación en C y máscaras (II)

Cuestionario: Programación en C y máscaras (II) Este documento es un autotest de ayuda enmarcado en la asignatura Informática Industrial y corresponde al tema Programación en C, pero es abierto y puede servir para entender el funcionamiento básico de

Más detalles

Procedimiento para realizar el proceso de cierre anual (Ajuste anual) en CONTPAQ i Nóminas.

Procedimiento para realizar el proceso de cierre anual (Ajuste anual) en CONTPAQ i Nóminas. Procedimiento para realizar el proceso de cierre anual (Ajuste anual) en CONTPAQ i Nóminas. Antecedentes Debido a que los empleadores, están obligados a determinar cada año, el ajuste anual del impuesto

Más detalles

Análisis de los datos

Análisis de los datos Universidad Complutense de Madrid CURSOS DE FORMACIÓN EN INFORMÁTICA Análisis de los datos Hojas de cálculo Tema 6 Análisis de los datos Una de las capacidades más interesantes de Excel es la actualización

Más detalles

Sesión No. 4. Contextualización INFORMÁTICA 1. Nombre: Procesador de Texto

Sesión No. 4. Contextualización INFORMÁTICA 1. Nombre: Procesador de Texto INFORMÁTICA INFORMÁTICA 1 Sesión No. 4 Nombre: Procesador de Texto Contextualización La semana anterior revisamos los comandos que ofrece Word para el formato del texto, la configuración de la página,

Más detalles

Edición de Ofertas Excel Manual de Usuario

Edición de Ofertas Excel Manual de Usuario Edición de Ofertas Excel Manual de Usuario Alfonso XI, 6 28014 Madrid F(+34) 91 524 03 96 www.omie.es Ref. MU_OfertasExcel.docx Versión 4.0 Fecha: 2012-11-26 ÍNDICE 1 INTRODUCCIÓN 3 2 CONSIDERACIONES DE

Más detalles

MATERIAL 2 EXCEL 2007

MATERIAL 2 EXCEL 2007 INTRODUCCIÓN A EXCEL 2007 MATERIAL 2 EXCEL 2007 Excel 2007 es una planilla de cálculo, un programa que permite manejar datos de diferente tipo, realizar cálculos, hacer gráficos y tablas; una herramienta

Más detalles

CONCEPTOS BASICOS. Febrero 2003 Página - 1/10

CONCEPTOS BASICOS. Febrero 2003 Página - 1/10 CONCEPTOS BASICOS Febrero 2003 Página - 1/10 EL ESCRITORIO DE WINDOWS Se conoce como escritorio la zona habitual de trabajo con windows, cuando iniciamos windows entramos directamente dentro del escritorio,

Más detalles

28.- Manejo de los Feriados

28.- Manejo de los Feriados 28.- Manejo de los Feriados El feriado anual o vacaciones pagadas es el derecho del trabajador con más de un año de servicios a hacer uso de un descanso anual de 15 días hábiles, con remuneración íntegra,

Más detalles

Divisibilidad y números primos

Divisibilidad y números primos Divisibilidad y números primos Divisibilidad En muchos problemas es necesario saber si el reparto de varios elementos en diferentes grupos se puede hacer equitativamente, es decir, si el número de elementos

Más detalles

Ecuaciones de primer grado con dos incógnitas

Ecuaciones de primer grado con dos incógnitas Ecuaciones de primer grado con dos incógnitas Si decimos: "las edades de mis padres suman 120 años", podemos expresar esta frase algebraicamente de la siguiente forma: Entonces, Denominamos x a la edad

Más detalles

ZCARTAS: Iniciación a la suma y resta de números enteros... 4. Introducción... 4. Actividad 1: Escenario con cartas numeradas desde -2 hasta 2...

ZCARTAS: Iniciación a la suma y resta de números enteros... 4. Introducción... 4. Actividad 1: Escenario con cartas numeradas desde -2 hasta 2... CONTENIDO ZCARTAS: Iniciación a la suma y resta de números enteros... 4 Introducción... 4 Actividad 1: Escenario con cartas numeradas desde -2 hasta 2... 4 Contenidos trabajados... 4 Instrucciones de Scratch...

Más detalles

3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON)

3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON) 3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON) 3.1.1 Introducción Este método proporciona un soporte para el diseño creativo de productos de software, inclusive a escala industrial.

Más detalles

Anexo B. Comunicaciones entre mc y PC

Anexo B. Comunicaciones entre mc y PC Anexo B Comunicaciones entre mc y PC En este apartado se hará hincapié en los comandos para el manejo del módulo de comunicaciones desde el PC. Conociendo estos comando se podrá realizar una aplicación

Más detalles

UN SIMULADOR DE UNA MAQUINA COMPUTADORA COMO HERRAMIENTA PARA LA ENSEÑANZA DE LA ARQUITECTURA DE COMPUTADORAS

UN SIMULADOR DE UNA MAQUINA COMPUTADORA COMO HERRAMIENTA PARA LA ENSEÑANZA DE LA ARQUITECTURA DE COMPUTADORAS UN SIMULADOR DE UNA MAQUINA COMPUTADORA COMO HERRAMIENTA PARA LA ENSEÑANZA DE LA ARQUITECTURA DE COMPUTADORAS Autores GROSSI, María Delia (mdgrossi@mara.fi.uba.ar) JIMÉNEZ REY, M. Elizabeth (ejimenez@mara.fi.uba.ar)

Más detalles

ORGANIZAR LA INFORMACIÓN: EL EXPLORADOR DE WINDOWS

ORGANIZAR LA INFORMACIÓN: EL EXPLORADOR DE WINDOWS ORGANIZAR LA INFORMACIÓN: EL EXPLORADOR DE WINDOWS Organizar la información: El explorador de Windows... 1 Introducción... 1 Explorador de Windows... 2 Ejercicio práctico del explorador de Windows... 5

Más detalles

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES CASO PRÁCTICO DISTRIBUCIÓN DE COSTES Nuestra empresa tiene centros de distribución en tres ciudades europeas: Zaragoza, Milán y Burdeos. Hemos solicitado a los responsables de cada uno de los centros que

Más detalles

Materia: Informática. Nota de Clases Sistemas de Numeración

Materia: Informática. Nota de Clases Sistemas de Numeración Nota de Clases Sistemas de Numeración Conversión Entre Sistemas de Numeración 1. EL SISTEMA DE NUMERACIÓN 1.1. DEFINICIÓN DE UN SISTEMA DE NUMERACIÓN Un sistema de numeración es un conjunto finito de símbolos

Más detalles

Introducción a la Firma Electrónica en MIDAS

Introducción a la Firma Electrónica en MIDAS Introducción a la Firma Electrónica en MIDAS Firma Digital Introducción. El Módulo para la Integración de Documentos y Acceso a los Sistemas(MIDAS) emplea la firma digital como método de aseguramiento

Más detalles

DOCUMENTOS COMPARTIDOS CON GOOGLE DOCS

DOCUMENTOS COMPARTIDOS CON GOOGLE DOCS DOCUMENTOS COMPARTIDOS CON GOOGLE DOCS 1. Introducción Los ambientes de aprendizaje acompañados de trabajos colaborativos como estrategia se revierten en actividades de diferente índole (análisis de videos,

Más detalles

MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS

MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS En este manual aprenderemos a introducir un Ticket de Soporte (Incidencia Informática) y ver todo el proceso hasta que se resuelve. Para poder escribir Tickets

Más detalles

Guía Práctica para el Uso del Servicio de Software Zoho CRM

Guía Práctica para el Uso del Servicio de Software Zoho CRM Guía Práctica para el Uso del Servicio de Software Zoho CRM Parte 4 Modificación de las Listas Estándar del Sistema Modificación del Menú Principal del Sistema Importación de información al Sistema Adición

Más detalles

ELO311 Estructuras de Computadores Digitales. Números

ELO311 Estructuras de Computadores Digitales. Números ELO311 Estructuras de Computadores Digitales Números Tomás Arredondo Vidal Este material está basado en: material de apoyo del texto de David Patterson, John Hennessy, "Computer Organization & Design",

Más detalles

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: 93.410.92.92 Fax.: 93.419.86.49 e-mail:atcliente@websie.

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: 93.410.92.92 Fax.: 93.419.86.49 e-mail:atcliente@websie. Adaptación al NPGC Introducción Nexus 620, ya recoge el Nuevo Plan General Contable, que entrará en vigor el 1 de Enero de 2008. Este documento mostrará que debemos hacer a partir de esa fecha, según nuestra

Más detalles

CAPITULO V. SIMULACION DEL SISTEMA 5.1 DISEÑO DEL MODELO

CAPITULO V. SIMULACION DEL SISTEMA 5.1 DISEÑO DEL MODELO CAPITULO V. SIMULACION DEL SISTEMA 5.1 DISEÑO DEL MODELO En base a las variables mencionadas anteriormente se describirán las relaciones que existen entre cada una de ellas, y como se afectan. Dichas variables

Más detalles

Módulo 9 Sistema matemático y operaciones binarias

Módulo 9 Sistema matemático y operaciones binarias Módulo 9 Sistema matemático y operaciones binarias OBJETIVO: Identificar los conjuntos de números naturales, enteros, racionales e irracionales; resolver una operación binaria, representar un número racional

Más detalles

Naturaleza binaria. Conversión decimal a binario

Naturaleza binaria. Conversión decimal a binario Naturaleza binaria En los circuitos digitales sólo hay 2 voltajes. Esto significa que al utilizar 2 estados lógicos se puede asociar cada uno con un nivel de tensión, así se puede codificar cualquier número,

Más detalles

Mantenimiento Limpieza

Mantenimiento Limpieza Mantenimiento Limpieza El programa nos permite decidir qué tipo de limpieza queremos hacer. Si queremos una limpieza diaria, tipo Hotel, en el que se realizan todos los servicios en la habitación cada

Más detalles

UAM MANUAL DE EMPRESA. Universidad Autónoma de Madrid

UAM MANUAL DE EMPRESA. Universidad Autónoma de Madrid MANUAL DE EMPRESA Modo de entrar en ÍCARO Para comenzar a subir una oferta de empleo, el acceso es a través del siguiente enlace: http://icaro.uam.es A continuación, aparecerá la página de inicio de la

Más detalles

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo. CONSULTAS CON SQL 1. Qué es SQL? Debido a la diversidad de lenguajes y de bases de datos existentes, la manera de comunicar entre unos y otras sería realmente complicada a gestionar de no ser por la existencia

Más detalles

Bienvenido al sistema de Curriculum Digital CVDigital

Bienvenido al sistema de Curriculum Digital CVDigital CVDigital 1 Bienvenido al sistema de Curriculum Digital CVDigital Este programa se ha desarrollado con el fin de llevar a cabo Certificaciones y Recertificaciones de los profesionales a partir del ingreso

Más detalles

GENERACIÓN DE CÓDIGO

GENERACIÓN DE CÓDIGO GENERACIÓN DE CÓDIGO INTRODUCCION La generación de código es la fase más compleja de un compilador, puesto que no sólo depende de las características del lenguaje fuente sino también de contar con información

Más detalles

INFORMÁTICA. Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial. Curso 2013-2014. v1.0 (05.03.

INFORMÁTICA. Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial. Curso 2013-2014. v1.0 (05.03. INFORMÁTICA Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial Curso 2013-2014 v1.0 (05.03.14) A continuación figuran una serie de ejercicios propuestos, agrupados

Más detalles