Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: S3kh en 23 Agosto 2011, 03:31 am



Título: Salto de línea (fasm16) y algo mas je
Publicado por: S3kh en 23 Agosto 2011, 03:31 am
 Qué tal gente? Estaba INTENTANDO hacer un programa que muestre "hola mundo", y en la línea siguiente que muestre "presione una tecla para continuar", y espere que se ingrese una tecla. Inicialmente había hecho esto

Código:
org	100h
use16

MOV      AH,9
MOV      DX,Texto
INT       21h             ;Muestro "Hola mundo!"
MOV      DX,Pausa
INT        21H            ;Muestro "Presione una tecla para continuar"
MOV      AH,1            ;Espero el ingreso de una tecla
INT        21H
INT        20h

Texto db 'Hola mundo!', 24h
Pausa db 'Presione una tecla para continuar.', 24h

Ahora, el mensaje "Presione una tecla para continuar" me aparece pegado al texto. La idea era que me quedara en la línea de abajo. Así que conté la cantidad de carácteresde "Hola mundo!", y la reste a la cantidad de columnas. Me dió 74, así que quise poner 74 espacios después del "Hola mundo!" asi el mensaje de pausa aparecía en la línea de abajo, intenté:

Código:
org 100h
use16

MOV      DX,Texto
MOV      AH,9
INT        21H
JMP        Espacios

Espacios:
MOV     DX,Espacio
MOV     CX,4A
INT       21h
DEC      CX
LOOP     Espacios
JMP       Pausa

Pausa:
MOV     AH,1
INT      21h
INT      20h


O sea, la idea es que inicie CX en 74, y vaya decrementando, y por cada ciclo, agregue un espacio. Al llegar a los 74, saltaría a la segunda línea y mostraría eso :P
(SI, soy un asco para esto)
La cosa es que tampoco me funciona así. Me estoy guiando por manuales viejos les aviso n.n

 Y también vi algo de "salto de línea" que tenía que ponerle 0D 0A al final del texto del que saltaría a la otra línea, y me tira sintáxis inválida :(

 Si alguien me puede decir como hacer funcionar eso, lo agradecería u.u


Título: Re: Salto de línea (fasm16) y algo mas je
Publicado por: Queta en 23 Agosto 2011, 10:08 am
http://en.wikipedia.org/wiki/CRLF (http://en.wikipedia.org/wiki/CRLF)

Puedes hacer algo así:

Código
  1. micad db '¡Cadena!', 13, 10, 0


Título: Re: Salto de línea (fasm16) y algo mas je
Publicado por: fary en 23 Agosto 2011, 13:40 pm
Código
  1. org     100h
  2.  
  3. MOV      AH,9
  4. MOV      DX,Texto
  5. INT       21h             ;Muestro "Hola mundo!"
  6. MOV      AH,1            ;Espero el ingreso de una tecla
  7. INT        21H
  8. INT        20h
  9.  
  10. Texto db 'Hola mundo!',10,13,'Presione una tecla para continuar.',24h
  11.  



Título: Re: Salto de línea (fasm16) y algo mas je
Publicado por: S3kh en 24 Agosto 2011, 02:32 am
 Ah, genial esa solución. Aunque la implementé de esta forma:

Código:
[...]
Texto db 'Hola xD', 0Dh, 0Ah, 24h
Pausa db 'Presione una tecla para continuar', 24h
[...]

Muchísimas gracias, ahora entendí mejor el por qué del 0Dh y 0Ah jeje...

Gracias n.n


Título: Re: Salto de línea (fasm16) y algo mas je
Publicado por: Queta en 24 Agosto 2011, 12:06 pm
Es lo mismo que hemos hecho Drinky94 y yo, pero tú escribiste los valores en hexadecimal.


Título: Re: Salto de línea (fasm16) y algo mas je
Publicado por: S3kh en 24 Agosto 2011, 23:51 pm
ÇEs que me refería a que yo había usado dos cadenas de texto, no una :P