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:
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
No se si te entendi bien , pero podrias poner :
msg db 'Hello, world!',10,13,"Nueva cadena en otra linea",10
Eso te escribiria en una segunda linea la segunda cadena
Cita de: YST en 8 Noviembre 2009, 21:46 PM
No se si te entendi bien , pero podrias poner :
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
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
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
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
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
Lo que hace
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
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
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.
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
De nadas ::)