ensamblador
Publicado por Fernanda (2 intervenciones) el 26/04/2010 17:46:07
Disculpen las molestias, estoy haciendo el codigo de convertir de mayuscula a minuscula en asm, pero no me imprime la cadena convertida aki les dejo mi codigo.
CADENAIMPR MACRO cad
MOV AH,9
LEA DX,cad
INT 21H
ENDM
LEER MACRO datos
MOV AH,0AH
LEA DX,datos
INT 21H
MOV BH,0
MOV BL,Longr
MOV Buffer[BX],24H
ENDM
IMPRCARAC MACRO carac
MOV AH,9
MOV AL,carac
MOV BH,0
MOV BL,04
MOV CX,1
INT 10H
ENDM
CARAC MACRO dato
MOV AH,9
MOV AL,dato
MOV BH,0
MOV BL,07
MOV CX,1
INT 10H
ENDM
limpiar MACRO
MOV AH,6
MOV CX,0
MOV DH,23
MOV DL,79
MOV BH,07
INT 10H
ENDM
STACK SEGMENT PARA 'stack'
DW 64 DUP(0)
STACK ENDS
DATA SEGMENT PARA 'data'
CAD1 DB 'Menu:$'
CAD2 DB 'F1 Escribir$'
CAD3 DB 'F2 Imprimir$'
CAD4 DB 'ESC Salir$'
CAD5 DB 'Elige opcion$'
MESO DB 'Ingresa cadena:$'
ren DB 0
col DB 0
cimpr db ?
CADENA LABEL BYTE
Longc DB 10
Longr DB 0
Buffer DB 20 DUP(20H)
DB '$'
DATA ENDS
CODE SEGMENT PARA 'code'
ASSUME DS:DATA,CS:CODE,SS:STACK
BEGIN PROC FAR
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
menu:limpiar
call cursor
CADENAIMPR CAD1
call cursor
CADENAIMPR CAD2
call cursor
CADENAIMPR CAD3
call cursor
CADENAIMPR CAD4
call cursor
CADENAIMPR CAD5
call cursor
MOV AH,10H
INT 16H
CMP Ax,3B00h
JE pedir_cadena
CMP AX,3C00H
JE imprimir
CMP AX,011BH
JE salir
jmp menu
pedir_cadena:
call cursor
CADENAIMPR MESO
call cursor
LEER CADENA
JMP menu
imprimir:
call cursor
call CONVERT_MINUSCULAS
call cursor
jmp menu
salir:ret
BEGIN ENDP
cursor proc
mov ah,2
mov bh,0
mov dh,ren
mov dl,5
int 10h
inc dh
mov ren,dh
ret
cursor endp
cursor2 proc
mov ah,2
mov bh,0
mov dh,ren
mov dl,col
int 10h
inc dl
mov col,dl
ret
cursor2 endp
CONVERT_MINUSCULAS proc
mov col,5
LEA SI,Buffer
ETIQ: call cursor2
MOV BL,[SI]
CMP BL,24H
JE FIN
ADD BL,20H
IMPRCARAC BL
INC SI
JMP ETIQ
FIN:RET
CONVERT_MINUSCULAS endp
CODE ENDS
END BEGIN
CADENAIMPR MACRO cad
MOV AH,9
LEA DX,cad
INT 21H
ENDM
LEER MACRO datos
MOV AH,0AH
LEA DX,datos
INT 21H
MOV BH,0
MOV BL,Longr
MOV Buffer[BX],24H
ENDM
IMPRCARAC MACRO carac
MOV AH,9
MOV AL,carac
MOV BH,0
MOV BL,04
MOV CX,1
INT 10H
ENDM
CARAC MACRO dato
MOV AH,9
MOV AL,dato
MOV BH,0
MOV BL,07
MOV CX,1
INT 10H
ENDM
limpiar MACRO
MOV AH,6
MOV CX,0
MOV DH,23
MOV DL,79
MOV BH,07
INT 10H
ENDM
STACK SEGMENT PARA 'stack'
DW 64 DUP(0)
STACK ENDS
DATA SEGMENT PARA 'data'
CAD1 DB 'Menu:$'
CAD2 DB 'F1 Escribir$'
CAD3 DB 'F2 Imprimir$'
CAD4 DB 'ESC Salir$'
CAD5 DB 'Elige opcion$'
MESO DB 'Ingresa cadena:$'
ren DB 0
col DB 0
cimpr db ?
CADENA LABEL BYTE
Longc DB 10
Longr DB 0
Buffer DB 20 DUP(20H)
DB '$'
DATA ENDS
CODE SEGMENT PARA 'code'
ASSUME DS:DATA,CS:CODE,SS:STACK
BEGIN PROC FAR
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
menu:limpiar
call cursor
CADENAIMPR CAD1
call cursor
CADENAIMPR CAD2
call cursor
CADENAIMPR CAD3
call cursor
CADENAIMPR CAD4
call cursor
CADENAIMPR CAD5
call cursor
MOV AH,10H
INT 16H
CMP Ax,3B00h
JE pedir_cadena
CMP AX,3C00H
JE imprimir
CMP AX,011BH
JE salir
jmp menu
pedir_cadena:
call cursor
CADENAIMPR MESO
call cursor
LEER CADENA
JMP menu
imprimir:
call cursor
call CONVERT_MINUSCULAS
call cursor
jmp menu
salir:ret
BEGIN ENDP
cursor proc
mov ah,2
mov bh,0
mov dh,ren
mov dl,5
int 10h
inc dh
mov ren,dh
ret
cursor endp
cursor2 proc
mov ah,2
mov bh,0
mov dh,ren
mov dl,col
int 10h
inc dl
mov col,dl
ret
cursor2 endp
CONVERT_MINUSCULAS proc
mov col,5
LEA SI,Buffer
ETIQ: call cursor2
MOV BL,[SI]
CMP BL,24H
JE FIN
ADD BL,20H
IMPRCARAC BL
INC SI
JMP ETIQ
FIN:RET
CONVERT_MINUSCULAS endp
CODE ENDS
END BEGIN
Valora esta pregunta
0