es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Intentando centrar 4 líneas de cadenas en lenguaje ensamblador.

Entonces, soy nuevo en lenguaje ensamblador y estoy tratando de centrar 4 cadenas. Pero no sé por qué no funciona.

Estas son las 4 cadenas que estoy usando en el código. Cuando ejecuto el programa, str1 es la única que se va al centro. El resto está a la izquierda.

str1 db "ADRIAN PAUL", 0AH, 0DH, "$"
str2 db "BS Computer Science", 0AH, 0DH, "$"
str3 db "09462524725", 0AH, 0DH, "$"
str4 db "macatopaul@gmail.com", 0AH, 0DH, "$"

Aquí está el código que estoy utilizando:

 MOV AX, @DATA
 MOV DS, AX

 MOV AX, 0600H
 MOV BH, 07H
 MOV CX, 0000H ;BORRAR PANTALLA
 MOV DX, 184FH
 INT 10H

 MOV AX, 0600h
 MOV BH, 07h
 MOV CX, 0000h
 MOV DX, 184Fh
 INT 10h

 MOV AH, 02h
 MOV BH, 00h
 MOV DH, 0Ch
 MOV DL, 24h
 INT 10h

MOV AH,09h
MOV DX, OFFSET str1
INT 21h
MOV CX,001Ah
MOV AH, 02h
INT 21h

MOV AH,09h
MOV DX, OFFSET str2
INT 21h
MOV CX,001Ah
MOV AH, 02h
INT 21h

MOV AH,09h
MOV DX, OFFSET str3
INT 21h
MOV CX,001Ah
MOV AH, 02h
INT 21h

MOV AH,09h
MOV DX, OFFSET str4
INT 21h
MOV CX,001Ah
MOV AH, 02h
INT 21h
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Una posible razón por la que las cadenas no se centran correctamente es que el código no alinea adecuadamente la posición del cursor antes de imprimir cada cadena. Dado que el tamaño de la pantalla es de 80×25 caracteres y cada cadena tiene una longitud máxima de 16 caracteres, debes calcular la coordenada x para el centro de la pantalla (40 – 8) = 32 y utilizar este valor para posicionar el cursor antes de imprimir cada cadena.

    Puedes modificar el código de cada cadena de la siguiente manera:

    Para str1:

     MOV AH, 02h
     MOV BH, 00h
     MOV DH, 0Ch
     MOV DL, 20h ;mover cursor a la coordenada x 32
     INT 10h
    
     MOV AH, 09h
     MOV DX, OFFSET str1
     INT 21h
     MOV CX, 001Ah
     MOV AH, 02h
     INT 21h
    

    Para str2:

     MOV AH, 02h
     MOV BH, 00h
     MOV DH, 0Eh ;mover hacia abajo en la pantalla
     MOV DL, 20h ;mover cursor a la coordenada x 32
     INT 10h
    
     MOV AH, 09h
     MOV DX, OFFSET str2
     INT 21h
     MOV CX, 001Ah
     MOV AH, 02h
     INT 21h
    

    Para str3:

     MOV AH, 02h
     MOV BH, 00h
     MOV DH, 10h ;mover hacia abajo en la pantalla
     MOV DL, 20h ;mover cursor a la coordenada x 32
     INT 10h
    
     MOV AH, 09h
     MOV DX, OFFSET str3
     INT 21h
     MOV CX, 001Ah
     MOV AH, 02h
     INT 21h
    

    Para str4:

     MOV AH, 02h
     MOV BH, 00h
     MOV DH, 12h ;mover hacia abajo en la pantalla
     MOV DL, 20h ;mover cursor a la coordenada x 32
     INT 10h
    
     MOV AH, 09h
     MOV DX, OFFSET str4
     INT 21h
     MOV CX, 001Ah
     MOV AH, 02h
     INT 21h
    

    Al alinear adecuadamente el cursor para cada cadena, deberías poder centrar las cuatro cadenas en la pantalla.

Comments are closed.