Ensamblador - convierte minusculas a mayusculas [ayuda]

 
Vista:

convierte minusculas a mayusculas [ayuda]

Publicado por CarlosNuel (1 intervención) el 30/10/2005 02:30:01
pues necesito ayuda, para mi examen de ensamblador necesito un programa que convierta una cadena de caracteres en mayusculas y en minusculas entiendase que transforme la cadena...
pero no me sale el codigo fuente

lo que llevo es esto, espero puedan ayudarme, gracias


PILA SEGMENT PARA STACK "STACK"
DB 128 DUP (0)
PILA ENDS

DATOS SEGMENT PARA "DATA"
MSS1 DB "mi nombre en minusculas es: luisito", 13,10
DB "en mayusculas es: ", "$"
NOMBRE DB "luisito"
DATOS ENDS

CODIGO SEGMENT PARA "CODE"
EMPIEZA PROC FAR
ASSUME CS: CODIGO, DS: DATOS, SS: PILA

MOV AX, DATOS
MOV DS, AX
MOV AH, 9
MOV DX, OFFSET MSS1
MOV BX, OFFSET NOMBRE

ETIQUETA:
MOV AH, 9
MOV AL, [BX]
AND AH, 11011111B
LOOP ETIQUETA
MOV AH, 9
INT 21H
MOV AH,4CH
INT 21H

EMPIEZA ENDP
CODIGO ENDS
END EMPIEZA
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:convierte minusculas a mayusculas [ayuda]

Publicado por sesur (10 intervenciones) el 01/11/2005 15:29:51
Hola, mira puede que le sirva:
page 60,120
TITLE mayusculas minusculas
.MODEL small
.STACK 64
.DATA

Titulo DB 'CAMBIAR MAYUS MINUS$'
Cadena DB 'CaDeNa a CambiAr$'

.CODE
BEGIN PROC FAR

MOV AX,@DATA
MOV DS,AX

MOV CX,25
LEA DX,Titulo
CALL IMPRIMIR
CALL SALTARLINEA
CALL PASAR
CALL SALTARLINEA
LEA DX,Cadena
CALL IMPRIMIR

MOV AX,4C00H
INT 21H

LIMPIAR PROC NEAR

MOV AX,0600H
MOV BH,0FH
MOV CX,0000H
MOV DX,184FH
INT 10H
RET

LIMPIAR ENDP

SALTARLINEA PROC NEAR

MOV AH,02 ; función 2 de la interrupción 21H

MOV DL,10 ; Salta una linea desplegando el caracter 10
INT 21H ; Despliega el caracter

MOV DL,13 ; Produce un retorno de carro desplegando el caracter 13
INT 21H ; Despliega el retorno de carro
RET

SALTARLINEA ENDP

IMPRIMIR PROC NEAR

MOV AX,0900H
INT 21H
RET

IMPRIMIR ENDP

PASAR PROC NEAR

MOV SI,0

CICLO:
MOV AL,Cadena[SI]
CMP AL,'$' ;por si llega al final de la cadena
JZ FIN ;si llega va al fin
CMP AL,7AH ;aqui comienza a mirar que el codigo ascii del caracter
JAE FIN1;este entre el intervalo de las minusculas
CMP AL,61H
JB FIN1

SUB AL,20H;pasa a mayusculas
FIN1:
;aqui va imprimiendo letra por letra la cadena
;si se quiere se puede cambiar la cadena
;MOV Cadena[SI],AL y despues imprimes la cadena pero en mayusculas toda
MOV DX,AL
MOV AH,2
INT 21H

INC SI

LOOP CICLO

FIN:
RET

PASAR ENDP

END BEGIN

lo que hace este programa es que si encuentra una letra en minuscula la cambia a mayucula, no lo hace por operaciones logicas (AND que usas), lo hace por codigo ASCII, entre mayusculas y minusculas hay una diferencia de 20H osea que para pasar una letra de minuscula a mayuscula restas 20H y de mayuscula a minuscula suma 20H, espero le sirva.
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