• Viernes 29 de Marzo de 2024, 09:21

Autor Tema:  Ayuda Con Codigo  (Leído 2217 veces)

SAJOSUE

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Ayuda Con Codigo
« en: Viernes 10 de Septiembre de 2004, 22:07 »
0
Tengan ustede buenas tardes tengo el siguietne codio de ensamblador que lo que realiza es la captura de un nombre y lo centra en la pantalla pero hay un error que no logro descrifar si alguno de ustedes me pudiera ayudar se lo agradecere mucho el codigo es el siguiente:


PAGE   60,132
TITLE   P09CTRN
   .MODEL SMALL
   .STACK 64
        .DATA
NAMEPAR LABEL BYTE
MAXNLEN   DB 20
NAMELEN   DB ?
NAMEFLD DB 21 DUP (' ')
PROMPT    DB 'NAME ?','$'
   .CODE
BEGIN PROC FAR
   MOV AX,@DATA
   MOV DS,AX
   MOV ES,AX
   CALL Q10CLR
A20LOOP:
   MOV AX,0000
   CALL Q20CURS
   CALL B10PRMP
   CALL D10INPT
   CALL Q10CLR
   CMP NAMELEN,00
   JE A30
   CALL E10CODE
   CALL F10CENT
   JMP A20LOOP
A30:
   MOV AX,4C00H
   INT 21H
BEGIN ENDP
B10PRMP PROC NEAR
   MOV AH,09H
   LEA DX,PROMPT
   INT 21H
   RET
B10PRMP ENDP
D10INPT PROC NEAR
   MOV AH,0AH
   LEA DX,NAMEPAR
   INT 21H
   RET
D10INPT ENDP
E10CODE PROC NEAR
   MOV BH,00
   MOV BL,NAMELEN
        MOV NAMEFLD[BX],07
        MOV NAMEFLD[BX+1],'$'
   RET
E10CODE ENDP
F10CENT PROC NEAR
   MOV DL,NAMELEN
   SHR DL,1
   NEG DL
   ADD DL,40
   MOV DH,12
   CALL Q20CURS
   MOV AH,09H
   LEA DX,NAMEFLD
   INT 21H
   RET
F10CENT ENDP
Q10CLR PROC NEAR
   MOV AX,0600H
   MOV BX,30
   MOV CX,0000
   MOV DX,184FH
   INT 10H
   RET
Q10CLR ENDP
Q20CURS PROC NEAR
   MOV AH,02H
   MOV BH,00
   INT 10H
   RET
Q20CURS ENDP
END BEGIN

gracias por todo.

misterwilliam

  • Miembro MUY activo
  • ***
  • Mensajes: 291
    • Ver Perfil
Re: Ayuda Con Codigo
« Respuesta #1 en: Sábado 11 de Septiembre de 2004, 07:08 »
0
Sajosue, le sugiero que sea un poco más específico respecto al error que le aparece, pues quizás algún desarrollador no tenga al momento un compilador para probarlo. Podría analizarse el código, pero pues...si es un poco extenso y sería de mucha ayuda si coloca el inconveniente que se le presenta ó el segmento de código que no entiende bien. Le aseguro que de esa manera, recibirá alguna ayuda más pronto.

Éxitos y Chao! :clown:
¡ Todo está en la mente !

Logan

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Ayuda Con Codigo
« Respuesta #2 en: Viernes 17 de Septiembre de 2004, 15:47 »
0
Hola SaJosue:

Acabo de checar tu programa, y el error que tienes no es grave, lo unico que estaba sucediendo es que al momento de LIMPIAR PANTALLA estabas cometiendo un error en la siguiente instruccion MOV BX,30 que se ubica en este procedimiento.

Q10CLR PROC NEAR
MOV AX,0600H
MOV BX,30               ;por esta instruccion tu programa no te permitia ver nada
MOV CX,0000
MOV DX,184FH
INT 10H
RET
Q10CLR ENDP

Lo correcto es MOV BH,30h la parte alta del registro BX es la que almacena el color de "fondo de texto" y del "texto". En este caso el numero 3 establece un color Verde turquesa como fondo de texto y el numero 0 establece un color Negro para el texto. puedes modificar estos valores (3 y 0) para buscar una mejor combinacion de fondo y texto.

Ojo, si al final de numero 30 escribes la letra H (es decir:  mov bh,30h) obtienes diferente colores que si no la escribes, prueba para que lo veas.

Suerte y no pares en el esfuerzo!!!.  :kicking:
Estamos aqui porque jamás terminaremos de aprender....

SAJOSUE

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Ayuda Con Codigo
« Respuesta #3 en: Viernes 17 de Septiembre de 2004, 19:22 »
0
Quiero darles las gracias por informar el error que no sabia, cual era ya que soy inexperto en la materia, Gracias Logan

Logan

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Ayuda Con Codigo
« Respuesta #4 en: Viernes 17 de Septiembre de 2004, 19:42 »
0
Ha sido un placer Sajosue , yo tambien agradezco a todos los que aportan sus conocimientos en este foro ya que a mi me ha servido mucho y me ha sido de gran apoyo. Estamos aprendiendo unos de otros, retroalimentandonos y eso en muy gratificante.

Saludos a todo el Foro.

 :hola:
Estamos aqui porque jamás terminaremos de aprender....