|
231
|
Programación / ASM / Re: Sintaxis FASM
|
en: 8 Julio 2009, 22:20 pm
|
include 'win32ax.inc' .data Numero1 db 3 Numero2 db 9 .code start: xor cl,cl mov cl,byte[Numero1] add cl,byte[Numero2] mov byte[Numero2],cl ret .end start
Esew coded te deja el primer byte de Numero2 en 12 cl son instrucciones de 16 bits? o eran 8? CL no es una instruccion si no que es un registro YST marica tu sabes que siempre me confundo xD, de cuanto es ese registro: 8,16 bits?
|
|
|
232
|
Programación / ASM / Re: Sintaxis FASM
|
en: 8 Julio 2009, 22:01 pm
|
include 'win32ax.inc' .data Numero1 db 3 Numero2 db 9 .code start: xor cl,cl mov cl,byte[Numero1] add cl,byte[Numero2] mov byte[Numero2],cl ret .end start
Esew coded te deja el primer byte de Numero2 en 12 cl son instrucciones de 16 bits? o eran 8?
|
|
|
233
|
Programación / ASM / Re: Sintaxis FASM
|
en: 8 Julio 2009, 19:04 pm
|
include 'C:\fasm\INCLUDE\WIN32AX.inc' .data num1 db 3 num2 db 2 .code start: mov eax, num1 add eax, num2 push eax pop num2 .end start
|
|
|
234
|
Programación / ASM / Re: Error en practica
|
en: 8 Julio 2009, 15:15 pm
|
Para equilibrar la pila, empujaste dos DWORDs eax y formato. Asi tiene que funcionar bien: format pe console entry start include 'win32ax.inc' .data formato db "Media %d", 13, 10, 0 .code start: xor eax,eax xor edx,edx add eax,6 add eax,9 add eax,3 add eax,9 add eax,5 add eax,6 mov ecx, 6 div ecx push eax push formato call [printf] add esp, 8 call [getchar] ret section '.idata' import data readable library msvcrt,'MSVCRT.dll' import msvcrt,printf,'printf',getchar,'_fgetchar'
Si y claroooo, cada dword esta formado por 4 bytes por eso empujamos con add 8 que bien eternal, muchas gracias
|
|
|
235
|
Programación / ASM / [H] Arrays
|
en: 8 Julio 2009, 15:08 pm
|
Bueno, he buscando info y más o menos es haciendo structs en FASM, pero un poco más detallado? struc POINT { .x dd ? .y dd ? .size = $ - .x } POINT POINT
Encontre esto en ASMCOMMUNITY. EDIT: Mirando el FAQ de FASM encontre esto: StrucArray: rept 100 { local s s MYSTRUC }
Me acerca más, pero aun no entiendo el funcionamiento.
|
|
|
236
|
Programación / ASM / Re: Error en practica
|
en: 8 Julio 2009, 15:01 pm
|
ExitProcess no es necesario, a menos que no arregles la pila correctamente como en este caso, si empujas dos parametros entonces tenes que usar add esp, 08h. Y en getchar no hace falta empujar nada, no tiene parametros Me sigue saltando error si no le pongo exitprocess. EDIT: Aun continuaba con el push 0 del exitprocess por eso me saltaba el error. ¿Por que se usa add esp,08h?
|
|
|
237
|
Programación / ASM / Re: Error en practica
|
en: 8 Julio 2009, 14:42 pm
|
Perdon me olvide de arreglar la pila con: add esp, 0Ch
Y acabar con ExitProcess: format pe console entry start include 'win32ax.inc' .data formato db "Media %d", 13, 10, 0 .code start: xor eax,eax xor edx,edx add eax,6 add eax,9 add eax,3 add eax,9 add eax,5 add eax,6 mov ecx, 6 div ecx push eax push formato call [printf] add esp, 0Ch push 0 call [getchar] push 0 call [exp] section '.idata' import data readable library msvcrt,'MSVCRT.dll',k32,'kernel32.dll' import msvcrt,printf,'printf',getchar,'_fgetchar' import k32,exp,'ExitProcess'
|
|
|
238
|
Programación / ASM / Re: Error en practica
|
en: 8 Julio 2009, 14:13 pm
|
Muchísimas gracias idol, eres un crack. EDIT: Entonces el uso de variables es inecesario EDIT2: Código final: format pe console entry start include 'win32ax.inc' .data formato db "Media %d", 13, 10, 0 .code start: xor eax,eax xor edx,edx add eax,6 add eax,9 add eax,3 add eax,9 add eax,5 add eax,6 mov ecx, 6 div ecx push eax push formato call [printf] push 0 call [getchar] ret section '.idata' import data readable library msvcrt,'MSVCRT.dll' import msvcrt,printf,'printf',getchar,'_fgetchar'
|
|
|
239
|
Programación / ASM / Error en practica
|
en: 8 Julio 2009, 12:39 pm
|
Hola, bueno soy yo de nuevo el noob de siempre xD. Os muestro esto: format pe console entry start include 'win32ax.inc' .data nt db ? .code start: xor eax,eax add eax,6 add eax,9 add eax,3 add eax,9 add eax,5 add eax,6 mov [nt],eax xor eax,eax xor ebx,ebx mov eax,6 div [nt] push nt call[printf] push 0 call [getchar] ret section '.idata' import data readable library msvcrt,'MSVCRT.dll' import msvcrt,printf,'printf',getchar,'_fgetchar'
Estoy intentando hacer que entre 6 resultados de examenes los divida y me de la media, pero me salta error al intentar masar del eax al nt (nota total). ¿Que puede ocurrir? EI: juntando mensajes.En cambio, si pongo directamente 34 no me salta error, me muestra el codigo ascii (&) pero igualmente no me salta error
|
|
|
|
|
|
|