Duda sobre e

Iniciado por Debci, 8 Noviembre 2009, 21:43 PM

0 Miembros y 3 Visitantes están viendo este tema.

Debci

Amigos tengo una duda existencial, me gustaria saber como poner dos cadenas de texto en consola, se como se hace con una, que seria algo asi:
Código (asm) [Seleccionar]
section .text
    global _start ;must be declared for linker (ld)

_start: ;tell linker entry point

mov edx,len ;message length
mov ecx,msg ;message to write
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel

mov eax,1 ;system call number (sys_exit)
int 0x80 ;call kernel

section .data

msg db 'Hello, world!',0xa ;our dear string
len equ $ - msg ;length of our dear string

Como podria poner 2?
Saludos

YST

No se si te entendi bien , pero podrias poner :
Código (asm) [Seleccionar]

msg db 'Hello, world!',10,13,"Nueva cadena en otra linea",10


Eso te escribiria en una segunda linea la segunda cadena


Yo le enseñe a Kayser a usar objetos en ASM

Debci

Cita de: YST en  8 Noviembre 2009, 21:46 PM
No se si te entendi bien , pero podrias poner :
Código (asm) [Seleccionar]

msg db 'Hello, world!',10,13,"Nueva cadena en otra linea",10


Eso te escribiria en una segunda linea la segunda cadena
Y esos numeros? 10,13, cadena2,10?
que son?
Y como se podria hacer en dos definiciones distintas?

Saludos

YST

#3
El 13,10 vendria a ser comop el "\n" de C o de PHP :P Hacen un salto de linea


La verdad tambien podria ser
Código (asm) [Seleccionar]

msg db 'Hello, world!',13,10
msg2 db   "Nueva cadena en otra linea",13,10
len equ $ - msg



PD : Me equivoque en el primer post es 13,10 no 10,13


Yo le enseñe a Kayser a usar objetos en ASM

Debci

Cita de: YST en  8 Noviembre 2009, 22:04 PM
El 13,10 vendria a ser comop el "\n" de C o de PHP :P Hacen un salto de linea


La verdad tambien podria ser
Código (asm) [Seleccionar]

msg db 'Hello, world!',13,10
msg2 db   "Nueva cadena en otra linea",13,10
len equ $ - msg



PD : Me equivoque en el primer post es 13,10 no 10,13
Bien gracias, y para que serviria el len   equ   $ - msg?
Y no habria que añadir en la parte de arriva del codigo alguna referencia al nuevo mensaje?

Saludos

YST

Lo que hace
Código (asm) [Seleccionar]

len   equ   $ - msg

es hacer que "len" tenga la cantidad de bytes desde msg hasta la posicion donde esta escritor el len equ $-msg , se entiende ?

No es necesario poner el msg2 ya que en len esta incluido ( ya que esta entre msg y len ) y tu lo que haces al escribir
Código (asm) [Seleccionar]

mov edx,len ;message length
mov ecx,msg ;message to write


Es decirle que escriba len bytes que estan luego desde la posición msg :P


Yo le enseñe a Kayser a usar objetos en ASM

Eternal Idol

Si queres hacerlo por separado mira el codigo original: sys_write es la clave (en las 5 primeras lineas se hace la escritura). Lo que queres hacer es llamar a la funcion write para que escriba en la consola otra vez.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Debci

Cita de: Eternal Idol en  8 Noviembre 2009, 23:34 PM
Si queres hacerlo por separado mira el codigo original: sys_write es la clave (en las 5 primeras lineas se hace la escritura). Lo que queres hacer es llamar a la funcion write para que escriba en la consola otra vez.
Gracias por vuestra ayuda!

Saludos

Eternal Idol

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón