Escolar Documentos
Profissional Documentos
Cultura Documentos
Contenido Pág.
TÉCNICAS DE PROGRAMACIÓN
PROCEDIMIENTOS……………………………………………………………
Ejecución De Subrutinas……………………………………………………….
Ventajas De La Ejecución De Subrutinas……………………………………..
Las Instrucciones De Llamada Y Retorno De Una Subrutina……………….
Call………………………………………………………………………
Call Cercana………………………………………………………..
Call Lejana…………………………………………………………..
Instrucciones Call Con Operandos Registro…………………………
Instrucciones Call A Direcciones Indirectas En La Memoria………..
Ret………………………………………………………………………
Paso De Parámetros Y Devolución De Resultados…………………
ACCESOS CONDICIONALES…………………………………………………
CONDICIONALES…………………………………………………
MANEJO DE TABLAS…………………………………………………………
TABLAS…………………………………………………………
Objetivo………………………………………………………………
Esquema………………………………………………………………
1. Requisitos…………………………………………………
2. Diseño…………………………………………………….
3. Pruebas…………………………………………………….
4. Reflexión…………………………………………………..
5. Apéndice…………………………………………………..
ELABORACIÓN DE COMENTARIOS……………………………………….
COMENTARIOS……………………………………….
PRÁCTICA #7…………………………………………………………………
#7…………………………………………………………………
CONCLUSIÓN……………………………………………………
CONCLUSIÓN…………………………………………………………………
…………………………………………………………………
BIBLIOGRAFÍA…………………………………………………………………
BIBLIOGRAFÍA…………………………………………………………………
ANEXOS……………………………………………………………
ANEXOS………………………………………………………………………..
………………………………………………………………………..
INTRODUCCIÓN
Las técnicas de desarrollo y diseño de programas que se utilizan en la
programación convencional tienen inconvenientes, sobre todo a la hora de
verificar y modificar un programa. En la actualidad están adquiriendo gran
importancia las técnicas de programación, cuyo objetivo principal es el de
facilitar la comprensión del programa, y además permiten, de forma rápida, las
ampliaciones y modificaciones que surjan en la fase de explotación del ciclo de
vida de un programa o una aplicación informática
Las rutinas son uno de los recursos más valiosos cuando se trabaja en
programación; ellas permiten que los programas sean más simples, debido a que
el programa principal se disminuye cuando algunas tareas se escriben en forma
de programas pequeños e independientes, en otras palabras se define como un
procedimiento independiente (un bloque), que realiza una labor específica y a la
cual se puede llamar desde cualquier parte del programa principal dado que cada
rutina realiza una labor en particular, como encender un LED o establecer una
base de tiempo de un segundo, por ejemplo, el programador, cuando está
seguro de su funcionamiento, puede mantenerla almacenada y disponible en un
«banco» o «librería», para utilizarla en cualquier programa, sin volver a escribir las
líneas que realicen lo deseado: sólo necesitará copiar el bloque de la rutina o
tener el archivo disponible para cuando se realice la compilación del programa.
Posteriormente, deberá hacer el llamado al procedimiento adecuado, en el
instante preciso.
PROCEDIMIENTOS
EJECUCIÓN DE SUBRUTINAS
Facilita
Facilita la descomposición de tareas.
tareas La descomposición de tareas
complejas en secuencias de subtareas más simples facilita enormemente el
desarrollo de programas. Esta técnica se suele aplicar de forma sucesiva en lo que
se denomina ‘diseño descendente’ de programas. Cada subtarea se implementa
como una rutina.
2.-
2.- Almacenar en la pila el contenido de los registros que utilice para cálculos
temporales.
Para evitar que esto suceda, existen dos técnicas que se denominan:
CALL
CALL cercana
La instrucción CALL cercana tiene 3 bytes de longitud; el primer byte contiene
el código y el segundo y tercero contiene el desplazamiento o distancia de ±
32K en los 8086-80286. La forma de instrucción es idéntica a la de brinco
cercano. En los 80386 y 80486 se emplea un desplazamiento de 32 bits cuando
trabajan en el modo protegido a fin de permitir una distancia de ± 2G bytes.
Cuando se ejecuta un CALL cercano, primero salva en la pila la dirección de
desplazamiento de la siguiente instrucción. Esa dirección está en el apuntador de
instrucciones (IP o EIP). Después de salvar la dirección de retorno, suma los
desplazamientos de los bytes 2 y 3 a IP para transferir el control al
procedimiento. No hay instrucción CALL corta.
¿Por qué salvar IP o EIP en la pila?
CALL lejana
Las instrucciones CALL al igual que las JMP pueden contener un operando
registro y un ejemplo es la instrucción CALL BX. Esta instrucción salva el
contenido de IP dentro de la pila. Después, brinca a la direccion de
desplazamiento, ubicada en el registro BX en el segmento de código actual. Este
tipo de llamada siempre utiliza una dirección de desplazamiento de 16 bits
almacenada en cualquier registros de 16 bits, excepto los registros de segmento.
RET
En este ejemplo se muestra la forma en que este tipo de retorno borra los
datos salvados en la pila por algunas instrucciones PUSH. RET 4 suma 4 a SP
antes de recuperar la direccion de retorno de la pila. Debido a que PUSH AX y
PUSH BX, juntas, salvaron 4 bytes de datos en la pila, este retorno borra
efectivamente a AX y BX de la pila. Este tipo de retorno rara vez aparece en los
programas
Paso de
de parámetros a través de memoria
Por su parte, el programa llamado guarda la copia del registro %ebp para
justo a continuación copiar el valor de %esp y fija su valor a la cima de la pila. A
partir de este instante, cualquier dato que se ponga en la pila no afecta el valor
de %ebp y el desplazamiento para acceder a los parámetros es respectivamente
de 8, 12 y 16 pues en la posición debajo de la cima se encuentra la dirección de
retorno. Para depositar el resultado se utiliza el desplazamiento 20. Tras terminar
el cálculo del resultado se procede a deshacer la estructura de datos creada en la
pila en orden inverso. Primero se descargan de la pila los registros salvados y a
continuación se restaura el valor del registro %ebp dejando en la cima la
dirección de retorno que necesita la instrucción ret.
A la porción de memoria en la pila que contiene el espacio para la
devolución de resultados, los parámetros, la dirección de retorno, la copia de
%ebp se le denomina el ‘bloque de activación’. Al registro %ebp que ofrece un
punto fijo de referencia a los datos se le denomina el ‘puntero’ al bloque de
activación.
La instrucción push letra tiene por operando una etiqueta que apunta a un
dato de tamaño byte. Como los operandos de la pila son de 4 bytes, en ella se
depositan la letra y los tres siguientes bytes. Esto no tiene importancia porque la
subrutina únicamente accede al byte de menos peso tal y como se ha
especificado en su definición. La figura muestra la evolución de la pila desde el
punto de vista del programa llamador.
Evolución de la pila desde el punto de vista del programa llamador
Por otra parte algunas de estas instrucciones de salto solo trabajan con
cantidades sin signos mientras otras se aplican a operando con signos todos los
saltos con excepción de JMP trasfieren control a una etiqueta destino
denominada etiqueta corta lo anterior significa que la etiqueta debe encontrarse
dentro del intervalo que va de -128 a + 127 bytes de la instrucción de salto.
CMP AH, AL
JAE CONT1
CONT1: ……..
CONT2: …….
JAE etiqueta corta Salta si, por arriba o es igual/ si no por debajo
(JNB)
JBE etiqueta corta Salta si por debajo o es igual/ si, no por arriba
(JNA)
Ejemplo
DESP PROC FAR
PUSH DX ;salvar DX
XOR AH,AN ;borrar AN
AAM ;convertir a BCD
ADD AH,20H ;sumar 20H
CMP AH,20H ;probar si hay un cero avanzado
JE DESP1 ;si hay cero inicial
ADD AH,10H ;convertir a ASCII
DESP1:
PUSH AX ;
MOV DL,AH ;exhibir primer digito
MOV AH,6 ;
INT 21H ;
POP AK ;
ADD AL,30H ;convertir a ASCII
MOV DL,AL ;
MOV AH,6 ;exhibir segundo digito
INT 21H ;
POP DX ;recuperar DX
RET
DESP END P
Ejemplo:
Ejemplo:
PUSH CX ;
PUSH BX ;
DESPX1:
DIV BX
DESPX2:
POP DX ;exhibir numero
MOV AH,6
INT 21H
POP CX
POP DX
RET
DESPX ENDP
PUSH BX ;salvar BX y CX
PUSH CX
INT 21H
JB LEEN2 ; si es menor de 0
JA LEEN2 ; si es mayor de 9
INT 21H
PUSH AX
MUL CX
POP AX
XOR AH,AH
LEEN2:
POP CX ; recuperar BX y CX
POP BX
RET
LEEN ENDP
En el ejemplo se ilustra el procedimiento para poner en ejecución este
algoritmo. En este caso, el número binario retorna al registro AX con un
resultado de 16 bits. Si se requiere un resultado más grande, hay que volver a
efectuar el procedimiento para una suma de 32 bits. Cada vez que se llama a este
procedimiento, lee un número en el teclado hasta que se oprima una tecla que
no sea del 0 al 9.
Las tablas se utilizan a menudo para convertir datos de una forma a otra.
Una tabla esta formada en la memoria como una lista de datos que se consultan
por un procedimiento para efectuar conversiones. En el caso de muchas tablas, a
menudo se puede utilizar la instrucción XLAT para buscar o consultar datos en
una tabla siempre y cuando a tabla contenga datos de 8 bits de ancho y con
longitud igual o menor de 256 bytes.
Ejemplo
POP BX
RET
TABLA DB 3FH
DB 6
DB 5BH
DB 4FH
DB 66H
DB 5DH
DB 7DH
DB 7
DB 7FH
DB 6FH
SEG7 ENDP
EXHIBICION
EXHIBICION VISUAL 7 SEGMENTOS
Byte de control
0 g f e d c b a
Ejemplo
PUSH DX
PUSH SI ; salvar DX y SI
PUSH DS
MOV DS, AX
MOV AH, 9
POP DS
POP SI ; recuperar DX y SI
POP DX
RET
SUN DB ‘DOMINGO S’
MON DB ‘LUNES S’
TUE DB ‘MARTES S’
WEN DB ‘MIERCOLES S’
THU DB ‘JUEVES S’
FRI DB ‘VIERNES S’
SAT DB ‘SABADO S’
DIAS ENDP
Para que este procedimiento direccione a la tabla, primero hay que cargar
su dirección en el registro SI. Después el número que hay en AL se convierte a un
número de 16 bits y se duplica porque la tabla contiene 2 bytes en cada entrada.
Luego, este índice e agrega en SI para direccionar la entrada correcta en la tabla
de consulta. Ahora la dirección de la cadena de caracteres en ASCII se carga en
DX por medio de la instrucción MOV DX, CS:[SI].
COMO
COMO DOCUMENTAR UN SISTEMA DE SOFTWARE
Objetivo
Esquema
1. Requisitos
1. Visión general (hasta 1 página) Una explicación del objetivo del sistema y
de la funcionalidad del mismo.
2. Especificación revisada. Si le facilitaron especificaciones detalladas del
comportamiento del sistema, es probable que encuentre que ciertas partes
del mismo se encuentran infraespecificadas o son ambiguas. En esta
sección debería aclarar tanto cualquier suposición que haya hecho sobre el
significado de los requisitos, como cualquier extensión o modificación de
los mismos.
3. Manual de usuario (1 - 5 páginas). Una descripción detallada sobre cómo
el usuario puede utilizar el sistema, qué operaciones puede llevar a cabo,
cuáles son los argumentos de la línea de comando, etc. Las
especificaciones detalladas de los formatos deberían relegarse al Apéndice.
Cualquier suposición relativa al entorno debería explicitarse aquí: por
ejemplo, observe si el programa sólo se ejecuta en ciertas plataformas, si
supone que la jerarquía de un cierto directorio está presente, si existen
otras aplicaciones, etc. Junto con la visión general, este manual debería
proporcionar toda la información que un usuario del sistema necesita.
4. Funcionamiento (1/2 página). ¿Qué recursos necesita el sistema para una
operación normal y qué espacio y tiempo se espera que consuma?
5. Análisis del problema (2 - 10 páginas). Una descripción clara del problema
subyacente. Esto incluye el modelo conceptual que hay detrás del diseño
(y posiblemente la interfaz de usuario), si no se ha tratado ya. El análisis
del problema generalmente incluye uno o más modelos de objeto del
problema, definiciones de sus conjuntos y relaciones y una discusión de
asuntos complicados. Los objetos en los modelos de objeto del problema
proceden del dominio del problema, no del código. Los modelos de
objeto deberían incluir tanto diagramas como cualquier restricción textual
fundamental, y deberían estar claramente expuestos para una correcta
legibilidad. Esta parte también debería describir alternativas que hayan
sido consideradas pero que se han rechazado, con razones, asuntos no
resueltos o aspectos que no hayan sido totalmente aclarados y que vayan
a solventarse más tarde.
Puede que los casos de uso le resulten útiles cuando escriba la especificación
revisada y/o el manual de usuario. Un caso de uso es un objetivo específico y
una lista de acciones que un usuario lleva a cabo para conseguir dicho objetivo.
Un cliente puede, entre otras cosas, examinar la lista de acciones para decidir si la
interfaz de usuario es aceptable. Si la colección de casos de uso abarca todos los
objetivos deseados por el usuario, el cliente puede tener la seguridad de que el
sistema cumplirá con su objetivo.
2. Diseño
3. Pruebas
Explique qué tipo de errores espera encontrar (¡y cuáles no!) con su
estrategia. Comente qué aspectos del diseño dificultaron o facilitaron la
validación.
4. Reflexión
El apéndice contiene detalles de bajo nivel acerca del sistema, que no son
necesarios para comprenderlo en un nivel superior, pero que se exigen para
usarlo en la práctica o para verificar afirmaciones realizadas en cualquier parte
del documento.
1. Una sección de visión general que dé una explicación de una o dos líneas
sobre qué objetos del tipo representan y si son mutables.
2. Una lista de campos de especificación.
especificación Podría haber sólo uno; por
ejemplo, un conjunto podría tener el campo elems representando al
conjunto de elementos. Cada campo debería tener un nombre, un tipo y
una breve explicación. Podría resultarle útil definir campos derivados
adicionales que facilitaran la escritura de las especificaciones de los
métodos; para cada uno de éstos, debería indicar que es derivado y
explicar cómo se ha obtenido a partir de los otros campos. Puede que
haya invariantes de especificación que restrinjan los posibles valores de los
campos de la especificación; si es así, debería precisarlos.
SÍNTESIS DE SONIDO
El altavoz del ordenador está ligado en todas las máquinas al bit 1 del
puerto E/S 61h. Si se hace cambiar este bit (manteniéndolo durante cierto tiempo
alto y durante cierto tiempo bajo, repitiendo el proceso a gran velocidad) se
puede generar una onda cuadrada de sonido. Cuanto más deprisa se realice el
proceso, mayor será la frecuencia del sonido. Por fortuna, la baja calidad del
altavoz del PC redondea la onda cuadrada y produce un sonido algo más
musical de forma involuntaria. No existe, en cualquier caso, control sobre el
volumen, que dada la calidad del altavoz también está en función de la
frecuencia.
ASSUME CS:SOUNSG,DS:SOUNSG,SS:SOUNSG
ORG 100H
;----------------------------------------------------------
----------------------
;----------------------------------------------------------
----------------------
PUSH AX ; y guardar
POP AX ;restablecer
RET
MAIN ENDP
B30:
B40:
B50:
RET
B10SPKR ENDP
SOUNSG ENDS
END BEGIN
CONCLUSIÓN
Las tablas se utilizan a menudo para convertir datos de una forma a otra.
Una tabla esta formada en la memoria como una lista de datos que se
consultan por un procedimiento para efectuar conversiones.
• http://books.google.com/books?ct=result&hl=es&id=vPmSWr-
wDt8C&dq=invocacion+a+subrutinas+%2B+tecnicas+de+programacion
&pg=PA368&lpg=PA368&sig=ACfU3U1JlKb81_PbnyATtfvsHTUnpxTipQ
&q=paginas+369+a+372#PPR1,M1
• http://www.it.uc3m.es/ttao/html/SUB.html#sub:sec:subroutines
• http://perso.wanadoo.es/pictob/tecprg.htm
• http://www.rinconsolidario.org/eps/asm8086/asm.html
• http://homepage.mac.com/eravila/asmix862.html
ANEXOS