• Domingo 16 de Mayo de 2021, 01:22

Autor Tema:  ERROR: BUSQUEDA,CONCATENACION,IGUALDAD  (Leído 1014 veces)

angel_acero

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
ERROR: BUSQUEDA,CONCATENACION,IGUALDAD
« en: Viernes 8 de Octubre de 2010, 16:29 »
0
EL SIGUIENTE CODIGO SE SUPONE QUE BUSCA CONCATENA Y IGUALA
EL PROBLEMA ES QUE NO CONCATENE BIEN ESPERO QUE ALGUIEN ME PUEDE AYUDAR.

B10PRMP MACRO MSG
        MOV   AH,09H
        LEA   DX,MSG
        INT  21H
        ENDM

STACK SEGMENT STACK
      DW  64 DUP (?)
STACK ENDS

DATA SEGMENT PARA 'DATA'
      CAD1    LABEL  BYTE    ;LISTA DE PARAMETROS NOMBRE
      MAXCAD1  DB    20      ;LONGITUD MAXIMA DE NOMBRE
      NAMECA1  DB    ?       ;NO. DE CARACTERES INTRODUCIDOS      
      NAMCAD1  DB    21 DUP(' ')  ;NOMBRE INTRODUCIDO
      PROMC1   DB   'PRIMER CADENA? ','$'

      CAD2     LABEL BYTE       ;LISTA DE PARAMETROS NOMBRE
      MAXCAD2  DB    20      ;LONGITUD MAXIMA DE NOMBRE
      NAMECA2  DB    ?       ;NO. DE CARACTERES INTRODUCIDOS      
      NAMCAD2  DB    21 DUP(' ')  ;NOMBRE INTRODUCIDO
      PROMC2   DB   'SEGUNDA CADENA? ','$'
      CAR      DB     0
      CARM     DB    'INTRODUSCA EL CARACTER ','$'
      IGUAL    DB    'LAS CADENAS SON IGUALES','$'
      DIFER    DB    'LAS CADENAS SON DIFERENTES','$'
      ENCON    DB    'SI SE ENCONTRO','$'
      NNCON    DB    'NO SE ENCONTRO','$'
      NAMCAD3  DB    41 DUP (' ')    ;CONCATENAR

DATA ENDS

CODE SEGMENT PARA 'CODE'
      ASSUME CS:CODE,DS:DATA,SS:STACK
INICIO:
PRINCIPAL PROC NEAR
     MOV   AX,DATA
     MOV   DS,AX
     MOV   ES,AX
     CALL  Q10CLR   ;LIMPIAR PANTALLA

A20LOOP:
     CALL    Q10CLR
     MOV     DH,00  ;FIJAR CURSOR EN 00,00
     MOV     DL,00
     CALL    Q20CURS
     B10PRMP PROMC1   ;EXIBIR INDICACION
     CALL    D10INPT    ;PROPORCIONA ENTRADA DEL NOMBRE
     
     MOV     DH,01  ;FIJAR CURSOR 01,00
     MOV     DL,00
     CALL    Q20CURS
     B10PRMP PROMC2
     CALL    D10INPT1   ;PROPORCIONA LA ENTRADA DEL NOMBRE
     
     MOV  DH,02  ;FIJAR CURSOR 02,00
     MOV  DL,00
     CALL Q20CURS
     B10PRMP CARM
     MOV AH,1  ;INVESTIGAR ESAT INTERRUPCION
     INT 21H
     MOV CAR,AL
     CALL    COMPARA
     CALL    CONCAT
     CALL    BUSCA
     MOV     AH,1
     INT     21H
     CMP     AL,27
     JE      A30
     JMP     A20LOOP

A30:
    MOV  AH,4CH
    INT 21H
PRINCIPAL     ENDP

;ACEPTA ENTRADA NOMBRE

D10INPT   PROC   NEAR
   MOV   AH,0AH          ;entrada del teclado mediate el bufer
   LEA   DX,CAD1       ;carga la entrada de cadena
   INT   21H
   RET
D10INPT   ENDP

COMPARA PROC NEAR
       MOV  DH,03
       MOV  DL,00
       CALL Q20CURS
       CLD
       MOV  CX,20
       LEA  DI,NAMCAD2
       LEA  SI,NAMCAD1
       REPE CMPSB
       JNE   G20
       B10PRMP IGUAL
       JMP   G21

G20:
    B10PRMP  DIFER
G21:
     RET
COMPARA ENDP

CONCAT  PROC NEAR
        MOV  DH,04
        MOV  DL,00
        CALL Q20CURS
        CLD
        MOV  CH,00
        MOV  CL,NAMECA1
        LEA  DI,NAMCAD3
        LEA  SI,NAMCAD2
        REP  MOVSB

        MOV  CH,00
        MOV  CL,NAMECA2
        LEA  SI,NAMCAD2
        REP  MOVSB

        MOV     BH,00        ;REMPLAZA EL CARACTER ENTER(0D)
        MOV     BL,NAMECA1   ;POR EL (07)
        ADD     BL,NAMECA2
        MOV     NAMCAD3[BX],07
        MOV     NAMCAD3[BX+1],'$' ;DELIMITADOR DE IMPRESION
        B10PRMP NAMCAD3
        RET
CONCAT  ENDP

BUSCA  PROC  NEAR
       MOV   DH,05
       MOV   DL,00
       CALL  Q20CURS
       CLD
       MOV   AL,CAR
       MOV   CH,00 ;REMPLAZA CARACTER ENTER
       MOV     CL,NAMECA1
       ADD     CL,NAMECA2
       LEA     DI,NAMCAD3
       REPNE   SCASB    ;INVESTIGAR ESTO
       JNE     G201
       B10PRMP ENCON
       JMP     G211
G201:
     B10PRMP  NNCON
G211:
      RET
BUSCA ENDP

D10INPT1    PROC    NEAR
            MOV     AH,0AH
            LEA     DX,CAD2  ;ENTRADA
            INT     21H
            RET
D10INPT1    ENDP

Q10CLR     PROC     NEAR
           MOV      AX,0600H
           MOV      BH,30
           MOV      CX,0000
           MOV      DX,184FH
           INT      10H
           RET
Q10CLR     ENDP

Q20CURS    PROC     NEAR
           MOV      AH,02H        ;PETICION DE FIJAR CURSOR
           MOV      BH,00         ;PAGINA NO.0
           INT      10H
           RET
Q20CURS    ENDP

CODE ENDS
     END   INICIO            ;FIN DE SEGMENTO DE CODIGO