Ensamblador - AYUDA CON UN PROGRAMA

   
Vista:

AYUDA CON UN PROGRAMA

Publicado por AURA NAYELY (1 intervención) el 08/05/2008 01:09:43
HOLA KISIERA SABER SI ME PODRIAN AYUDAR CON UN PROGRAMA EN ENSAMBLADOR (ASM)

EL PROGRAMA TIENE QUE HACER LO SIGUIENTE:

EL USUARIO INTRODUCE UNA CADENA QUE PUEDE SER DE HASTA 200 CARACTERES
CADA QUE EL USUARIO INTRODUCE <ENTER> SE PRESENTA AL USUARIO UN MENU EN DONDE ELIGE:

1.- SI DESEA CAMBIARLO A MINUSCULAS
2.- SI DESEA VISIALIZARLA AL REVES

LA CADENA SE VISUALIZA COMO SE SELECCIONA, SE VUELVE A INTRODUCIR UNA CADENA NUEVA Y SE VUELVE A PRESENTAR EL MENU Y ASI SUCESIVAMENTE.

ESPERO Y ME PUEDAD AYUDAR
YA QUE ME URGE ESTE PROGRAMA Y POR MAS QUE LE HE INTENTADO NO HE PODIDO.....

ESTE PROGRAMA ES TODA UNA MATERIA Y LO QUE ES PEOR QUE ES PARA MAÑANA

POR FAVOR AYUDENME!!!!

GRACIAS
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:AYUDA CON UN PROGRAMA

Publicado por William (1 intervención) el 09/05/2008 06:55:45
Hola, espero estar a tiempo, te sugiero declarar unas variable del tipo db de la siguiente manera:

cad_original db dup('$') ; esto tiene que ir en el area donde defines el .data
cad_resultante db dup('$')
menu db '1. Convertir a Mayusculas $'
db '2. Invertir $'

para poder desplegar el menu utiliza la funcion 9h de la int 21h

ej.
mov dx,offset menu
mov ah,09h
int 21h

para esperar un caracter puedes usar la int 21h con la funcion 01h
ej.
mov ah,01h
int 21h

compara la entrada con un salto condicional

ej.
cmp al,0Dh ; o 13 toma en cuenta que 0Dhexadecimal=13decimal
je convertircadena ; o a la etiqueta que hara la conversion
jmp addchar

puedes definir una variable mas para recibir la operacion a realizar 1 ó 2 si la varible vale 1 que convierta a mayusculas y si vale 2 entonces que invierta la cadena, a continuacion la logica para estas operaciones:

invertir:
dec si
mov al,[cad_original+si]
mov [cad_resultante+di],al ;hay que tomar en cuenta que si tiene guardado el tamaño de la cadena media ves lo hayamos definidoy di en el primer avance vale 0
inc di
cmp si,0
je mostrar
jmp invertir

mostrar:
mov dx.offset cad_resultante
mov ah,09h
int 21h
jmp salir

mayusculas:
cmp si,0
je mostrar
dec si
mov al,[cad_original+si]
cmp al,61h
jg restar
mov [cad_resultante+si],al
jmp mayusculas

restar:
cmp al,7Ah
jg intermedio
add al,20h
mov [cad_resultante+si],al
jmp mayusculas

intermedio:
mov [cad_resultante+si],al
jmp mayusculas

salir:
mov ax,4C00h
int 21h

lo unico ke hace falta es hacer que aparezca el menu despues de cada operacion, saludos y exitos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar