Programa en codigo asembler

Solo disponible en BuenasTareas
  • Páginas : 6 (1367 palabras )
  • Descarga(s) : 32
  • Publicado : 23 de julio de 2010
Leer documento completo
Vista previa del texto
;CODIGO FUENTE
;PROGRAMA EN TURBO ASSEMBLER
;buscanom

.MODEL SMALL

; definición del segmento de datos

DATOS SEGMENT

titulo1 db "BIENVENIDOS A LA ULTIMA TAREA DE ASSEMBLER",13,10,13,10
creador1 db "HECHO POR: ",10,13
db " Maria Estela Aguilar Cardona ",13,10
creador2 db " Blanca Maria Aguilar Cardona ",13,10, "$"

tabuladordb 13,10,"$"

titulo2 db "- B U S C A N O M B R E - "
db "(Distingue entre MAYUSCULAS y minusculas)",13,10, "$"
instruccion1 db "A continuacion debe ingresar 10 nombres de pila. (Presione ENTER)", "$"

no_enc db "NOMBRE NO ENCONTRADO",10,13,"$"
enc db "NOMBRE ENCONTRADO EN LA LISTA",13,10,"Ubicado en la Posicion # ","$"
texto2 db "Presione ENTER para continuar","$"adios db 13,10,"ADIOS",13,10,"$"
posicion10 db "10",13,10,"$"

n1 db 13,10,"1-. $"
nombre1 db 80 dup (0)
n2 db "2-. $"
nombre2 db 80 dup (0)
n3 db "3-. $"
nombre3 db 80 dup (0)
n4 db "4-. $"
nombre4 db 80 dup (0)
n5 db "5-. $"
nombre5 db 80 dup (0)
n6 db "6-. $"
nombre6 db 80 dup (0)
n7 db "7-. $"
nombre7 db 80 dup (0)
n8 db "8-. $"
nombre8 db 80 dup (0)
n9 db"9-. $"
nombre9 db 80 dup (0)
n10 db "10-. $"
nombre10 db 80 dup (0)

mensaje db "LISTA DE NOMBRES COMPLETADA",13,10, "(Presione ENTER para continuar) ", "$"
mensaje2 db "LISTA DE NOMBRES INGRESADA:",13,10, "$"

instruccion2 db "Ahora, ingrese el nombre que desea buscar: $"
nom_buscar db 80 dup (0)

long_nom1 dw 0
long_nom2 dw 0
long_nom3 dw 0
long_nom4 dw 0
long_nom5dw 0
long_nom6 dw 0
long_nom7 dw 0
long_nom8 dw 0
long_nom9 dw 0
long_nom10 dw 0
long_nom_bus dw 0

bandera_encontrado db "0"
posicion db "0"

titulo3 db "OPCIONES:",13,10,13,10
seguir db "b.- Para buscar un nombre presione b",13,10
terminar db "s.- Para salir del programa presione s",13,10,13,10
texto db "Ingrese letra de la opcion: ","$"
opcion db 80 dup (0)Borrar_Pantalla MACRO
mov ah,6 ;código de función para borrar pantalla
mov al,0 ;borrar la pantalla completa
mov bh,07h ;atributo de relleno
mov cx,0 ;esquina superior izquierda (ch:fila,cl columna)
mov dx,24*256+79 ;esquina inferior derecha (dh:fila,dl:columna)
int 10h ;llamada a la interrupción de la bios 10h

;situa el cursor en unacoordenada determinada
mov ah,2 ;código de función
mov bh,0 ;pagina de video
mov dh,3 ;fila
mov dl,0 ;columna
int 10h ;llamada a la interrupción de la bios 10h
ENDM

Imprimir_Encabezado MACRO
mov ah,09h ;función para imprimir cadenas
lea dx,titulo1 ;dirección del texto a imprimir
int 21h ;llamada a la interrupción deldos 21h
lea dx,tabulador
int 21h
lea dx,titulo2 ;dirección del texto a imprimir
int 21h ;llamada a la interrupción del dos 21h
lea dx,tabulador ;se da un retorno de carro y se baja una linea
int 21h ;llamada a la interrupción del dos 21h
ENDM

Ingresa_Nombre MACRO num, nombre, longitud
LOCAL leyendo ; se declara una etiquetalocal para el macro
;imprime numero
mov ah,09h
lea dx,num ;dirección del texto a imprimir
int 21h ;llamada a la interrupción del dos 21h

;almacena el nombre tecleado
mov bl,0dh ;desigamos la tecla enter
mov si,00d ;inicio del contador del string
mov ah,1

leyendo:
int 21h
mov nombre[si],al ;almacenamos nombre ingresado carácter por caracter
inc si;incremento variable si
cmp al,bl ;comparamos el caracter ingresado con el enter
jne leyendo
sub si,2d ;la variable si se pasa en dos posiciones a la longitud real del nombre
mov longitud,si ;almacenamos el largo en una variable

;tabulador
mov ah,09h ;función para imprimir cadenas
lea dx,tabulador
int 21h ;llamada a la interrupción del dos 21h
ENDM...
tracking img