Salto de línea (fasm16) y algo mas je

Iniciado por S3kh, 23 Agosto 2011, 03:31 AM

0 Miembros y 1 Visitante están viendo este tema.

S3kh

 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

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é:


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

Queta

#1
http://en.wikipedia.org/wiki/CRLF

Puedes hacer algo así:

Código (asm) [Seleccionar]
micad db '¡Cadena!', 13, 10, 0
"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.

fary

Código (asm) [Seleccionar]
org     100h

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

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


Un byte a la izquierda.

S3kh

 Ah, genial esa solución. Aunque la implementé de esta forma:


[...]
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

Queta

Es lo mismo que hemos hecho Drinky94 y yo, pero tú escribiste los valores en hexadecimal.
"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.

S3kh

ÇEs que me refería a que yo había usado dos cadenas de texto, no una :P