Autor
|
Tema: Escribir 'A' en mi primer programa : ¿No funciona? (Leído 9,535 veces)
|
Garfield07
Desconectado
Mensajes: 1.121
¡Este año voy a por todas! JMJ 2011
|
Bueno, tengo un code sencillo, sencillamente escribe una A en la terminal... Por algo se empieza La cosa es que no escribe nada... global _start section .code _start: mov eax, 0x4 ; write (1, "A", 1); mov ebx, 0x1 mov ecx, 0x42 mov edx, 0x2 int 80H mov eax, 1 // return 0; xor ebx, ebx int 80H
nano code.s nasm -f elf -o code.o code.s ld -m elf_i386 -o code code.o chmod 777 * ./code
Bueno, donde esta el fallo? Recuerden que es mi primer code xD... Alguna idea en algo tan simple? Pd: De paso, ahora mismito me voy a leer un libro de ASM, a ver si descubro algo
|
|
|
En línea
|
* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente. * No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado. * Si compila esta bien, si arranca es perfecto. ¡Wiki elhacker.net!Un saludo
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
El segundo parametro (ecx) es una CADENA y no un caracter. http://linux.die.net/man/2/write
|
|
|
En línea
|
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
|
|
|
Garfield07
Desconectado
Mensajes: 1.121
¡Este año voy a por todas! JMJ 2011
|
Entonces como lo hago para escribir una sola A? Y para poner la cadena sin usar data?
|
|
|
En línea
|
* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente. * No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado. * Si compila esta bien, si arranca es perfecto. ¡Wiki elhacker.net!Un saludo
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
Con pasar una direccion de memoria donde haya una 'A' (0x41) y que count (edx) sea 1 es suficiente. Para no usar .data podrias usar la pila ... proba ... no uso *NIX y encima es 31 de Diciembre
|
|
|
En línea
|
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
|
|
|
Garfield07
Desconectado
Mensajes: 1.121
¡Este año voy a por todas! JMJ 2011
|
Pero como paso una direccion, algo asi como un puntero? le meto la A en la pila y le paso el ESP? push 0x42 pop ebx
Feliz nochevieja y gracias ! Ahora modifico !
|
|
|
En línea
|
* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente. * No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado. * Si compila esta bien, si arranca es perfecto. ¡Wiki elhacker.net!Un saludo
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
Como te dije no uso *NIX asi que lo vas a tener que probar vos el codigo: push ecx ;no importa lo que haya, despues ponemos la 'A' ;no sera una cadena terminada correctamente ;pero como especificamos el tamaño en count no importa mov byte ptr [esp], 041h ;sintaxis MASM mov eax, 0x4 ; write (1, "A", 1); mov ebx, 0x1 ;fd << mov ecx, esp ;buffer << mov edx, 0x1 ;count << int 80H pop ecx
Feliz año nuevo.
|
|
« Última modificación: 31 Diciembre 2010, 19:23 pm por Eternal Idol »
|
En línea
|
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
|
|
|
Garfield07
Desconectado
Mensajes: 1.121
¡Este año voy a por todas! JMJ 2011
|
Bueno, muchisimas gracias por el code de nuevo xD... pero no me va... juntando codes: global _start section .code _start: push ecx mov byte ptr [esp], 041h mov eax, 0x4 mov ebx, 0x1 mov ecx, esp mov edx, 0x1 int 80H pop ecx mov eax, 1 xor ebx, ebx int 80H
La cosa es que me da fallo de segmentación. Con la compilacion de antes... Como es? (perdooooona) Esto de ASM es buscar nuevas formas de hacer las cosas. En C la cosa no es tan dificil, pero ASM me resulta muchisimo mas entretenido ... Bueno, poco a poco se agranda el expediente !!! PD1: Feliz año nuevo otra vez! PD2: Ahora que lo pienso, muchisimas gracias ... Ahora que me doy cuenta tu me has ayudado a empezar tanto en ASM como en C. Jaja cuando desaparezcas como Rojodos dire que fuistes tu quien me enseño lo que era un programa xD....
|
|
« Última modificación: 1 Enero 2011, 01:11 am por Sagrini »
|
En línea
|
* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente. * No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado. * Si compila esta bien, si arranca es perfecto. ¡Wiki elhacker.net!Un saludo
|
|
|
08l00D
Desconectado
Mensajes: 168
|
global _start section .code _start: push ecx mov byte [esp], 041h mov eax, 0x4 mov ebx, 0x1 mov ecx, esp mov edx, 0x1 int 80H pop ecx mov eax, 1 xor ebx, ebx int 80H
La sintaxis no es igual en masm y nasm ... la linea que te puso eternal idol para copiar la letra a la pila es para masm, incluso lo puso como comentario en el codigo... en nasm para especificar el tamaño del dato a apuntar es con la palabra byte sola (en el caso de un byte obviamente)... PD: Un buen libro que podes leer es Professional Assembly Language... es muy completo y de lectura facil y comprensible.. Saludos y feliz año nuevo
|
|
|
En línea
|
|
|
|
Garfield07
Desconectado
Mensajes: 1.121
¡Este año voy a por todas! JMJ 2011
|
Feliz año nuevo y muchas gracias xD!!! Pd: Me confundi al leer el comentario crei que ponia nasm fallo mio xD..
|
|
|
En línea
|
* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente. * No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado. * Si compila esta bien, si arranca es perfecto. ¡Wiki elhacker.net!Un saludo
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
De nadas
|
|
|
En línea
|
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
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Cómo escribir y ejecutar un programa simple Perl
Scripting
|
Dr.SysCrack
|
0
|
3,262
|
19 Noviembre 2007, 03:06 am
por Dr.SysCrack
|
|
|
Mi primer programa en VB
« 1 2 »
Programación Visual Basic
|
Pedro_madrid
|
12
|
5,708
|
31 Mayo 2008, 11:56 am
por Pedro_madrid
|
|
|
Como escribir un programa en C (CCs) para pic 16f877a
Electrónica
|
BrusAngel
|
6
|
12,750
|
2 Enero 2010, 16:27 pm
por xtermsh
|
|
|
Programa crashea al escribir
Ingeniería Inversa
|
x64core
|
0
|
2,017
|
23 Septiembre 2012, 02:07 am
por x64core
|
|
|
Escribir un programa que determine si un año es bisiesto en c++
Ejercicios
|
luzlazul
|
4
|
11,383
|
6 Agosto 2013, 23:05 pm
por Alien-Z
|
|