La verdad que no tengo ni idea de como hacerlo lo que mas me hacerco es esto:
.text
.global main
main:
movl 1, %eax
movl %eax, u
movl $u, %ecx
addl $48, %ecx
movl $3, %edx
movl $1, %ebx
movl $4, %eax
int $0x80
.data
u:
.string "0"
Quisiera mostrar lo que hay en la direccion 1 de la memoria, no se ni siquiera si se puede o esta protegido :-\
La direccion 1 seguro que no es valida, mejor intenta con la de tu main, asi sabras el codigo binario de las instrucciones ::)
PD. No mire el codigo pero depuralo con el gdb en todo caso.
para poner los bits seria una strig? mira el ccodigo porfa que seguro que lo tengo todo mal :(
Si, de unos y ceros ...
¿Y si usas la g/libc? Tenes disponible la funcion printf (http://www.cplusplus.com/reference/clibrary/cstdio/printf/) por ejemplo, seria mucho mas simple y podrias imprimirlo en hexadecimal ... cuando ya la domines podes incluso depurarla y ver que hace exactamente.
Hola , puedes hacer eso con este codigo:
http://foro.elhacker.net/asm/codigos_de_yuri_grille-t257809.0.html;msg1269217#msg1269217
saludos
Cualquier duda me dices!
siiiiiiii, gracias Yurix es justo lo que buscaba.
Perdon que he estado estos dias ocupado con examenes y no he mirado el foro casi.
Bueno ahora luego te digo que tal ;)
Para que ensamblador es el codigo?
EI: juntando mensajes.
buf no entiendo na :-[
Que es bt?
lpBinario es todo una variable?
numero seria la celdilla de memoria?
http://pdos.csail.mit.edu/6.828/2007/readings/i386/BT.htm
lpBinario es un puntero a cadena, numero es el entero (de un byte) a convertir.
Mira el ejemplo de llamada:
invoke IntToBin,0A0h,addr binario
Veo que este código no lo pillan mucho los novatos (eso no quiere decir que sea un master) , voy a poner otro código que es mas fácil de entender. Espéralo hoy mismo , lo estoy escribiendo .... :
Te lo explico con lujo de detalles ::
-----------------------------------------------------
mov eax, number ;<< El numero que se "convierte"
mov ecx,020h ; Longitud total de los bits + 1 , es decir 20h es 32 en decimal
mov ebx,offset buff - 1 ; Binario es la string donde se alojara el numero convertido
aun3:
shr eax,1 ; Esto es "botar" 1bit hacia la derecha.
adc BYTE PTR[ebx+ecx], 30h
loop aun3
-------------------------------------------------------
SHR , es lo mismo que hacer (>>) en otro lenguaje X , como C. Lo que hacemos es botar un bit hacia la derecha , cada bit expulsado activa el flag C *(carry flag) si es un 1 , si es un 0 no lo activa. Esto lo usamos para ir construyendo la cadena ASCII "01110101011".
ADC , es una suma común + el bit del flag C , es decir , sumas 30h *(que es el CERO) y si el flag C esta activo se suma 1bit , lo que da como resultado el 31h (el UNO)
El loop es mas fácil , tu mueves a ecx la cantidad de veces que quieres que se repita el show .Ej>
mov ecx,10
hola:
xor eax,eax < Se repite 10 veces..
loop hola
Loop comprobara que ecx no sea CERO , si no lo es saltara a hola: , con cada salto se decrementa en 1 ecx , hasta llegar un momento en que sea CERO .
-----
BYTE PTR[ebx+ecx] < Con esto lo que hago es apoyarme en ECX (que va de mayor a menor gracias al loop) para hacer el adc en ese lugar , la "base" es ebx que indica el lugar que reservamos para hacer esta operación.
Te recuero que TIENE QUE SER UN LUGAR QUE ESTE "BACIO" con 0000s
Gózalo
madre mia que lujo, tampoco hacia falta que te molestases tanto, hombre
ya casi lo pillo ;D
Lo del SRH me recuerda cuando en los bancos de micolegio ,hay unos que para hacerse hueco empujan la fila y se cae el del otro lado :xD :xD :xD :xD :xD :xD el que se queda fuera seria el que se queda en el registro de acarreo y el que empuja seria un CERO ¿lo he entendido?
IntToBin proc Numero:BYTE,lpBinario:DWORD
esto que es ??yo he provado a compilarlo y me da error en esa linea.
gracias
tuket: PROC (http://msdn.microsoft.com/en-us/library/01d2az3t(VS.80).aspx).
ah! es un macro de MASM? claro por es me daba error en esa linea(lo intentaba ensamblar con NASM)
Eso , es como en un banco o como en la vida ! unos salen y otros entran ;)
No es molestia para mi compartir con los demas la caca que se de asm! es mi deber como macho alfa :xD