Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Microprogramación
“Tarea Ex Aula”
Integrantes:
Introducción………………………………………………………………………………………………………………………… 1
Objetivos……………………………………………………………………………………………………………………………… 2
Objetivo General…………………………………………………………………………………………………………………. 2
Objetivos Específicos…………………………………………………………………………………………………………… 2
Problema a Resolver……………………………………………………………………………………………………………. 3
Análisis del Problema………………………………………………………………………………………………………….. 4
MODULO PRINCIPAL……………………………………………………………………………………………………………. 5
MODULO LEER STRING (LEERS)……………………………………………………………………………………. 7
MODULO IMPRIMIR CADENAS (PRINT)……………………………………………………………………….. 8
MODULO CREAR ARCHIVO (CRARCH)………………………………………………………………………….. 9
MODULO ESCRIBIR EN ARCHIVO (WRARCH)………………………………………………………………... 10
MODULO CERRAR ARCHIVO (CLARCH)………………………………………………………………………… 11
MODULO LIMPIAR PANTALLA (CLR)……………………………………………………………………………. 12
Solución del Problema………………………………………………………………………………………………………… 13
MODULO PRINCIPAL…………………………………………………………………………………………………… 13
MODULO LEER STRING………………………………………………………………………………………………… 14
MODULO IMPRIMIR CADENAS……………………………………………………………………………………. 14
MODULO CREAR ARCHIVO………………………………………………………………………………………….. 15
MODULO ESCRIBIR ARCHIVO………………………………………………………………………………………. 15
MODULO CERRAR ARCHIVO………………………………………………………………………………………… 16
LIMPIAR PANTALLA………………………………………………………………………………………………………. 16
Codificación de la Solución………………………………………………………………………………………………….. 17
Conclusiones……………………………………………………………………………………………………………………….. 21
Recomendaciones……………………………………………………………………………………………………………….. 22
Bibliografía…………………………………………………………………………………………………………………………… 23
Introducción
La tecnología ha avanzado a pasos agigantados en los últimos años, y al mismo ritmo las
computadoras y los lenguajes de programación se fueron convirtiendo en algo común para la
mayoría de las personas es así como, surgió la necesidad de crear nuevos lenguajes que son mas
amigables al Usuario ,es decir , de Alto Nivel y que facilitan la programación.
1
Objetivos
Objetivo General
Resolver el problema planteado por medio del método solucionador de problemas, utilizando
lenguaje ensamblador del modelo de microprocesador 8086-8088.
Objetivos Específicos
2
Problema a Resolver
3
Análisis del Problema
El programa consiste en copiar de una ubicación a otra una cadena con terminación nula,
para resolver el problema de manera conveniente se han tomado las siguientes consideraciones:
Como Ubicación origen se tomara la de una cadena que se podrá ingresar en la ejecución
del programa y estará ubicada en el Registro de Datos (DS).
Esta cadena leída tendrá un máximo de 255 caracteres siendo el ultimo el carácter ENTER
y posteriormente modificado para agregarle la terminación nula.
Como Ubicación destino hemos elegido un archivo de texto plano el cual se creará al
seleccionar la opción copiar la cadena a un Archivo. Este archivo tendrá el nombre que
desee y se podrá guardar en el directorio que se quiera, siempre y cuando exista.
Para dar solución al problema se utilizará para el análisis el método de la caja negra para conocer
las entradas, salidas y procesos y poder aplicar correctamente la programación estructurada, se
describirá cada debidamente cada variable así como también las restricciones pertinentes y
también se hará uso de la modularidad aprovechando los beneficios que conlleva su utilización.
4
MODULO PRINCIPAL
Planteamiento Del Problema
a) Variables de Salida
b) Variables de Entrada
c) Restricciones
CAD <= 254 caracteres RUTA <= 254 caracteres (Formato Ej: A:\archivo.txt)
d) Proceso
5
e) Variables de Proceso
6
MODULO LEER STRING (LEERS)
a) Variables de Salida
b) Variables de Entrada
c) Restricciones
No Hay.
d) Proceso
7
MODULO IMPRIMIR CADENAS (PRINT)
Proceso
a) Variables de Salida
b) Variables de Entrada
c) Restricciones
No Hay.
d) Proceso
8
MODULO CREAR ARCHIVO (CRARCH)
a) Variables de Salida
b) Variables de Entrada
c) Restricciones
RUT debe ser ASCIIZ
d) Proceso
9
MODULO ESCRIBIR EN ARCHIVO (WRARCH)
Planteamiento del Problema
a) Variables de Salida
No Hay.
b) Variables de Entrada
c) Restricciones
No Hay.
d) Proceso
10
MODULO CERRAR ARCHIVO (CLARCH)
Planteamiento del Problema
a) Variables de Salida
No Hay.
b) Variables de Entrada
c) Restricciones
No Hay.
d) Proceso
11
MODULO LIMPIAR PANTALLA (CLR)
Planteamiento del Problema
Variables de Salida
No Hay.
Variables de Entrada
No Hay.
Restricciones
No Hay.
Proceso
12
Solución del Problema
MODULO PRINCIPAL
13
MODULO LEER STRING
14
MODULO CREAR ARCHIVO
15
MODULO CERRAR ARCHIVO
LIMPIAR PANTALLA
16
Codificación de la Solución
;------------------------------------------------------------------------------
; Alumnos: Carlos Aaron Romero Delgado MIP-115
; Oscar Orlando Vásquez Martínez
;
; TAREA 23
;
; Escriba un programa en TASM que copie una cadena con terminación nula, de una
; ubicación de origen a una ubicación destino. Debe asegurarse que el operando
; destino es lo suficientemente grande como para poder almacenar la cadena que
; se va a copiar.
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
;Definicion del segmento de pila
;------------------------------------------------------------------------------
PILA SEGMENT STACK
DW 64 DUP (?)
PILA ENDS
;------------------------------------------------------------------------------
;Definicion de las macros
;------------------------------------------------------------------------------
;-----------------------------------------
;Macro que se encarga de la lectura de una
;cadena con la funcion 10 de la int21h
;----------------------------------------
LEERS MACRO BUFFER,LEN,CAD
LEA DX,BUFFER ;Lee la cadena y la guarda en cad
MOV AH,10 ;con un valor maximo de 255bytes
INT 21H ;la cadena termina con enter
XOR CX,CX
MOV CL,[LEN]
MOV SI,CX
MOV CAD[SI],00H ;Se le asigna el caracter nulo al final de la cadena
ENDM
;---------------------------------------
;Macro que imprime una cadena de memoria
;---------------------------------------
PRINT MACRO CADENA
LEA DX,CADENA
MOV AH,9
INT 21H
ENDM
;----------------------------------------
;Macro que lee una variable sin eco
;utilizada para realizar una pausa
;----------------------------------------
GETCH MACRO
MOV AH,8
17
INT 21H
ENDM
;----------------------------------------
;Macro que borra el contenido en pantalla
;----------------------------------------
CLR MACRO
MOV AX,0003H
INT 10H
ENDM
;----------------------------------------
;Macro que Abre un Archivo
;----------------------------------------
CRARCH MACRO RUT,MODO,MANARCH
MOV AH,3CH
XOR CX,CX
MOV CL,MODO
LEA DX,RUT
INT 21H
MOV MANARCH,AX
ENDM
;----------------------------------------
;Macro que escribe una cadena de texto en
;un archivo abierto
;----------------------------------------
WRARCH MACRO MANARCH,LONG,CADENA
MOV AH,40H
MOV BX,MANARCH
XOR CX,CX
MOV CL,LONG
LEA DX,CADENA
INT 21H
ENDM
;----------------------------------------
;Macro que cierra un archivo
;----------------------------------------
CLARCH MACRO MANARCH
MOV AH,3EH
MOV BX,MANARCH
INT 21H
ENDM
;----------------------------------------
;Fin Definicion de Macros
;----------------------------------------
;------------------------------------------------------------------------------
;Definicion del segmento de datos
;------------------------------------------------------------------------------
DATOS SEGMENT
PRESENTACION DB ' UNIVERSIDAD DE EL SALVADOR',10,13
DB ' FACULTAD DE INGENIERIA Y ARQUITECTURA',10,13
DB ' ESCUELA DE INGENIERIA DE SISTEMAS INFORMATICOS',10,13
DB ' MICROPROGRAMACION CICLO I/2010',10,10,13
DB 'TAREA23.ASM',10,13
DB 'Programa que captura una cadena y la guarda en una',10,13
DB 'ubicaciOn destino.',10,10,13
18
DB'Creado por: Romero Delgado, Carlos Aaron',10,13
DB' Vasquez Martinez, Oscar Orlando',10,10,10,13
DB'Presiona cualquier tecla para continuar...$'
DIGCAD DB10,10,13,'Digite una cadena',10,10,13,'-> $'
MENOPC DB10,10,13,'Seleccione la opcion que desea:',10,10,13
DB'1. Leer una nueva cadena de Texto',10,13
DB'2. Copiar Cadena a un Archivo de Texto',10,10,10,13
DB'Presione ESC para salir',10,10,13
DB'-> $'
CADEXITO DB10,10,13,'Cadena copiada con Exito.$'
CADRUTA DB 10,10,13,'Escriba la Ruta del Archivo donde desea
copiar la cadena:',10,13
DB 'Ejemplo: C:\archivo.txt',10,10,13
DB '-> $'
BUF1 DB 255
LEN1 DB ?
RUTA DB 255 DUP (32)
ERROR DB 'Se ha producido un error: $'
CODERR1 DB 'La ruta especificada no fue encontrada.$'
CODERR2 DB 'No hay handles disponibles para asignar.$'
CODERR3 DB 'Acceso Denegado.$'
MANEJO DW ?
BUF2 DB 255
LEN2 DB ?
CAD DB 255 DUP (0),0
DATOS ENDS
;------------------------------------------------------------------------------
;Definicion del segmento de codigo
;------------------------------------------------------------------------------
CODE SEGMENT
ASSUME CS:CODE, DS:DATOS, SS:PILA
CIC1: CLR
PRINT PRESENTACION ;Imprime Presentacion
GETCH
CLR
PRINT DIGCAD ;Imprime La cadena Digite Texto
LEERS BUF2,LEN2,CAD
MENU: CLR
PRINT MENOPC ;Se Imprime el menú
MOV AH,1 ;Se lee un caracter
INT 21H ;caracter leido en AL
CMP AL,31H ;Se compara el carcacter con '1'
JE OPC1
CMP AL,32H ;Se compara el carcacter con '2'
JE OPC2
CMP AL,1BH ;Se compara el carcacter con tecla ESC
JE SALIR1
19
OPC1: PRINT DIGCAD ;Imprime La cadena Digite Texto
LEERS BUF2,LEN2,CAD
JMP MENU
RETURN: GETCH
JMP MENU
CODE ENDS
END MAIN
20
Conclusiones
Lenguaje ensamblador es y será uno de los lenguajes más potentes en programación y desarrollo
de software. Su potencia radica en 3 características fundamentales: Velocidad, Eficiencia de
Tamaño, y Flexibilidad; trabajando directamente con el microprocesador al ejecutar un programa,
ocupando menor espacio en memoria que un lenguaje de alto nivel, y porque todo lo que puede
hacerse con una máquina, puede hacerse en el lenguaje ensamblador.
El método solucionar de problemas es un medio conveniente y eficaz para resolver los problemas
planteados cuando utilizamos lenguaje ensamblador, pues definimos las variables y procesos
necesarias para llevar a cabo la solución y su correspondiente diseño facilitando de gran forma la
programación y el análisis de flujos de datos.
Sin duda el lenguaje ensamblador es una herramienta poderosa, por medio de la cual se puede
desarrollar programas y aplicaciones eficientes, mucho más rápidas que al utilizar un lenguaje de
alto nivel y de calidad tomando en cuenta que se pueden utilizar menos recursos y explotándolos
al máximo.
21
Recomendaciones
El lenguaje ensamblador puede resultar un arma de doble filo si no se usa
adecuadamente. La flexibilidad del lenguaje ensamblador es una de sus características
más poderosas, sin embargo, puede ser fatal para el equipo pues podemos afectar
recursos inesperadamente y es posible y sencillo realizar secuencias de instrucciones
inválidas o que afecten datos del sistema siendo este un riesgo.
Al ser de bajo nivel, el Lenguaje Ensamblador requiere más instrucciones para realizar un
mismo proceso, que al realizar el mismo proceso en un lenguaje de alto nivel. Por tanto
requiere el empleo de mayor tiempo de programación.
Debido a que requerimos más instrucciones primitivas para realizar procesos equivalentes
que en un lenguaje de alto nivel, crece el código fuente (el numero de instrucciones). Esto
es una desventaja porque dificulta el mantenimiento de los programas, y reduce la
productividad de los programadores.
22
Bibliografía
23