Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Fundamentos de
programacin.
Para mantener un control sobre los perifricos la CPU utiliza pequeos periodos de
tiempo en los cuales realiza una serie de acciones cuyo propsito es cumplir tareas que
han sido organizadas de forma secuencial, estas tareas son las instrucciones y la forma
secuencial es el programa, este concepto se aplica a cualquier sistema basado en
microprocesadores o Microcontroladores.
Programas
Los programas contienen una secuencia de instrucciones, estas instrucciones debe poder
ser almacenada en algn lugar del sistema, se habla de memoria de programa como el
lugar donde se almacenaran las instrucciones cada una de ellas dispuesta en uno o varios
contenedores denominados registros, compuestos a su vez por celdas de
almacenamiento, cada una de ellas con capacidad de almacenar un bit que puede
presentar uno de dos estados estables posibles cero o uno.
Las instrucciones y datos del programa al ejecutarse en la CPU generan datos con
significado dentro del contexto de la solucin del problema, estas instrucciones y datos
se expresan en conjuntos de bits, como los denominados Nibbles (4 bits), Bytes
(8 bits), W-palabra (16 bits), DW- doble palabra (32 bits) y QW- cudruple
palabra (64 bits).
El programa es el centro nervioso de los sistemas electrnicos modernos, en los que es
igualmente importante el desarrollo de componentes, su interconexin y los programas
orientados a la solucin de problemas utilizando dichos componentes.
Los algoritmos
En trminos generales los algoritmos son el conjunto finito de instrucciones o la serie de
pasos que deben seguirse para solucionar un problema, en la programacin de
microprocesadores o Microcontroladores, se debe cumplir que cada paso o instruccin
del algoritmo debe estar bien definido sin ambigedades, la claridad es vital para que
cualquier persona pueda entenderlo y realizarlo. Aunque hay varias formas de
solucionar un problema, cada paso o instruccin debe regirse por la claridad y simpleza
de su accin y la efectividad en conjunto para llegar a una solucin.
En la programacin de microprocesadores un algoritmo debe tener un principio y un
final, se espera que la entrada sea procesada y produzca una salida. En los sistemas
basados en microcontroladores los algoritmos pueden seguir trayectorias cerradas bien
definidas hacindolos parece que no tuvieran un final.
Programador
El programador es el sujeto que interfiere en el proceso de creacin de programas
teniendo como bases fundamentales la lgica, los algoritmos y el conocimiento del
lenguaje con el que se pretende desarrollar la solucin. Entones el objetivo del
programador es el de entender el problema a solucionar, disear el algoritmo que lo
resuelve, escribir la secuencia de instrucciones requeridas en el lenguaje apropiado,
almacenar la secuencia de las instrucciones en la memoria interna del dispositivo con
capacidad de procesamiento automtico para finalmente ejecutarlo.
Lenguaje maquina
Los microprocesadores y los circuitos digitales que los conforman y complementan
responden a un conjunto de operaciones que se denomina programa maquina, el cual
contiene un conjunto de instrucciones o set de instrucciones que realizan operaciones
sobre un bit o los bits que conforman las palabras, las instrucciones se expresan tambin
como conjuntos de bits ya que estos conforman el lenguaje propio de la maquina.
Se entiende que el lenguaje mquina solo se escribe con ceros y unos, llamado
lenguaje binario, por lo que la escritura de los datos se hace compleja e incmoda. Este
inconveniente impulso la idea de representar la secuencias de unos y ceros con
smbolos que fueran ms comprensibles y fciles de manipular, utilizando equivalencias
en hexadecimal u octal.
Un ejemplo de cdigo maquina y una forma compacta de expresarlo con cdigo
hexadecimal se muestra a continuacin:
DIR.SEGMENT DIR.
O
MEM
17A3
0100
COD.BINARIO
1011010000001000
COD.HEX
A
B408
0102
1000000011000100000000
11
80C403
17A3
0105
1000000011101100000001
00
80EC04
17A3
0108
17A3
1100110100100000
CD20
DIR.SEGMENT DIR.
O
MEM
17A3
COD.BINARIO
0100
1011010000001000
COD.HEX MNEMOTECNIC
A
O
B408
MOV AH, 08
0102
1000000011000100000000
11
80C403
ADD AH, 03
17A3
0105
1000000011101100000001
00
80EC04
SUB AH, 04
17A3
0108
17A3
1100110100100000
CD20
INT 20
Programa en ensamblador
Los programas escritos en lenguaje ensamblador deben pasar por una fase donde se
traducen a lenguaje mquina o lenguaje binario para que el computador o
microcomputador lo ejecute directamente, esta tarea la realiza un software especializado
llamado programa ensamblador.
El proceso de crear un programa se divide en tres partes:
Cdigo fuente:
Es el conjunto de lneas de texto que representan las instrucciones que debe seguir la
CPU para ejecutar el programa, este cdigo describe completamente el funcionamiento
del programa, aunque no es directamente ejecutable teniendo que pasar por un
compilador para ser traducido a lenguaje maquina o cdigo objeto.
Cdigo objeto:
El cdigo objeto es el resultado de la compilacin del cdigo fuente, consiste en
lenguaje maquina que puede estar distribuido en varios archivos correspondientes a
varios cdigos fuente que son enlazados con un programa enlazador o linker para
producir el programa ejecutable.
Cdigo ejecutable:
Es comn que se confunda el cdigo objeto con el cdigo ejecutable, la diferencia
radica en que el cdigo objeto presenta una estructura comprendida como smbolos,
mientras el cdigo ejecutable es un empaquetado listo para ser ejecutado en una
computadora, generalmente tiene la extensin .COM o .EXE, es el resultado de la
compilacin y el enlazamiento linker de los cdigos objetos,
Compilador e intrprete
Los intrpretes son programas encargados de procesar y traducir cada instruccin o
sentencia de un programa que esta escrito en lenguaje de alto nivel a cdigo maquina
para despus ejecutarla, cada instruccin se ejecuta despus de traducir y comprobar
que no posee errores en sintaxis. Las tareas de un intrprete son leer, examinar, traducir
y ejecutar cada instruccin del programa fuente, los intrpretes incorporan un editor por
medio del cual se hace la edicin, interpretacin y ejecucin del programa, el principal
inconveniente de los intrpretes surge con en la lentitud ocasionada en
sucesivas ejecuciones del programa. Como ejemplo de interprete tenemos el Debugger.
Los compiladores tambin se encargan de traducir el programa fuente en cdigo
maquina, pero a diferencia de los interpretes la traduccin se realiza sobre la totalidad
del programa fuente que despus de convertirse a cdigo maquina es ejecutado, las
ejecuciones sucesivas no necesitan generar nuevamente el cdigo maquina lo que
acelera el tiempo de ejecucin. Uno de los compiladores mas conocidos en la
programacin de microcontroladores es el MASM o versiones similares como FASM,
TASM y NASM, se concluye entonces que los compiladores tienen lo mejor de los
ensambladores y los interpretes.
Existen dos formas de crear programas:
Pseudocodigo
Es una mezcla de lenguaje de programacin y lenguaje nativo (espaol), se emplea en la
programacin para realizar el diseo del algoritmo, consiste en una estructura narrativa
respecto a los pasos a seguir en un algoritmo para solucionar un problema. El
pseudocdigo no sigue la rigidez de la sintaxis de cada instruccin, tampoco la fluidez
del lenguaje humano, es un lenguaje intermedio que permite codificar de forma sencilla
al lenguaje de programacin utilizado, este lenguaje se emplea en las primeras etapas
del anlisis o diseo del software, en lo que se conoce como diseo del algoritmo.
Para realizar un pseudocdigo se debe considerar partir de una serie de pasos simples
que lleven a la solucin del problema estos pasos se convierten en secuencias
simplificadas utilizando pocas palabras o frases sencillas describiendo tareas simples,
observe el ejemplo de Pseudocdigo: para poder hallar el rea de un cuadrado.
INICIA:
LADO, AREA: ENTERO
PONER EN BLANCO LA PANTALLA
ESCRIBIR: DIGITE LA LONGITUD DEL LADO
LEER: LADO
AREA = LADO * LADO
ESCRIBIR: AREA DEL CUADRADO = LADO
TERMINA
La representacin de un algoritmo
utilizando diagramas de bloques
puede no ser lo suficientemente clara
para representar el algoritmo de
programacin, en la mayora de casos
e recomienda nombrar
cada programa y
subprograma (subrutina)
de manera que al
convertirlo en lenguaje
ensamblador, es acorde
con el diagrama de flujo.
Ejemplo de diagrama de flujo:
INICIA:
PONER EN BLANCO LA PANTALLA
PREGUNTAR POR LA FUNCION A
REALIZAR
PREGUNTAR POR EL
NOMBRE DEL ARCHIVO
IF FUNCION ES E
THEN OCULTAR ARCHIVO
ELSE
MOSTRAR EL ARCHIVO
END IF
TERMINA
Es hora de comenzar:
-A
17A3:0100
Debug despliega los registros con los resultado intermedios, se observa comparando el
estado inicial y final de los registros con respecto a AX en su parte alta, es decir, AH
que tiene un valor inicial AX=0000, pasando por AX=0800, sumando 3, AX=0B00 y
restando 4, AX=0700 que es el resultado final de este programa. Debug ejecuta la
interrupcin 20 int 20 termina el programa y regresa el control al DOS.
Desensamblar
Para desensamblar un programa que se acaba de escribir se utiliza el comando U que
desensambla lo que e digita partiendo de la localidad de memoria especificada y la
cantidad de bytes especificados con L que significa longitud (length), lo que muestra
tanto el cdigo digitado con nemotcnicos como el cdigo en hexadecimal de cada
instruccin.
Existe tambin un comando que ayuda a rastrear la ejecucin del programa haciendo un
paso a paso este comando es el Trace (t).
Para cargar el archivo anterior u otro archivo, se debe seguir los siguientes pasos: