Autor
|
Tema: Abril Negro 2008: Taller de ASM (Leído 74,269 veces)
|
elmeister
Desconectado
Mensajes: 43
|
muchas gracias, ahora ha quedado claro, aunque debería estar puesto eso en el post principal para evitar dudas de más gente.
Saludos
|
|
|
En línea
|
|
|
|
elmeister
Desconectado
Mensajes: 43
|
te dejo los ejercicios hechos por MP, no se si el 4º (el del IF) está bien, pero lo demás supongo que si
|
|
|
En línea
|
|
|
|
elmeister
Desconectado
Mensajes: 43
|
Mejor pega el source en el post y asi se comentan dudas y eso Por q es q como me los tenga q dar a mi todo el mundo me puedo aburrir a corregirlos xD Salu2 para que no diga nadie que le fastidié los ejercicios, posteo aquí el código por petición de E0N: Ejercicio 1: include 'H:\archivos de programa\fasm\include\win32ax.inc' .code start: mov eax, 12 ;Puede ser cualquier valor, yo les he dado estos porque me apetecía mov ebx, 8 ;Usar esos numeros add eax, ebx .end start
ejercicio 2 include 'H:\archivos de programa\fasm\include\win32ax.inc' .data miByte db ? .code start: mov [miByte], 8 mov al, 7 add al, 8 add al, 5 add al, 2 add al, 9 add al, 1 add al, 0 add al, 3 div [miByte] ; el resultado aparecerá en AL y el resto en AH .end start
ejercicio 3 include 'H:\archivos de programa\fasm\include\win32ax.inc' .code start: push 1 pop eax push 2 pop ebx push 3 pop ecx push 4 pop edx push 5 pop edi push 6 pop esi .end start
Ejercicio 4 (no se si lo tengo bien o no) include 'H:\Archivos de programa\FASM\INCLUDE\WIN32AX.inc' .code start: mov eax, 23 mov ebx, 39 cmp eax,ebx je iguales jne distintos iguales: invoke MessageBox, 0, 'eax y ebx son iguales', '', 0 invoke ExitProcess, 0 distintos: invoke MessageBox, 0, 'eax y ebx son distintos', '', 0 invoke ExitProcess, 0 .end start
Ejercicio 5: (se que es así, pero no se si he elegido bien los saltos, creo que si) include 'H:\archivos de programa\fasm\include\win32ax.inc' .code start: mov eax, 7 mov ebx, 1 add eax, ebx cmp eax, 5 JBE salir JG mensaje mensaje: invoke MessageBox, 0, 'Mayor que 5', '', 0 salir: invoke ExitProcess, 0 .end start
Aquí podeis descargar los códigos fuente y los ejecutables compilados, lo he resubido porque vi que el código del primer ejercicio estaba en balco a la hora de postearlo: http://www.megaupload.com/?d=Y1O3BY3K
|
|
|
En línea
|
|
|
|
SheKeL_C$
Desconectado
Mensajes: 549
_-=[Sh3K3L_C$]=-_
|
Creo que estan todos bien...los he mirado por encima. Tan solo decir que para simplificar un poco el codigo en el ejecicio 4 yo haria asi mov eax, 23 mov ebx, 39 cmp eax,ebx jne distintos invoke MessageBox, 0, 'eax y ebx son iguales', '', 0 invoke ExitProcess, 0 distintos: invoke MessageBox, 0, 'eax y ebx son distintos', '', 0 invoke ExitProcess,0
Pero sabiendo que se trata de utilizar muchos saltos... esta bien como esta
|
|
|
En línea
|
|
|
|
Rozor
Desconectado
Mensajes: 270
As I Walk Through The Valley Of The Shadow Of Dead
|
Yo usaria JE o JNE para hacer los saltos despues de un CMP o como dijo SheKel es mas correcto si es JNE que salte y si es JE no hacerle el salto si no que las siguientes instrucciones sea el si pasa.
|
|
|
En línea
|
out in the streets they call it murder....
|
|
|
elmeister
Desconectado
Mensajes: 43
|
Yo usaria JE o JNE para hacer los saltos despues de un CMP o como dijo SheKel es mas correcto si es JNE que salte y si es JE no hacerle el salto si no que las siguientes instrucciones sea el si pasa.
no pasa nada, ya está hecho y tambien es correcto no?, pues ya está, no le demos más vueltas al asunto
|
|
|
En línea
|
|
|
|
krackwar
Desconectado
Mensajes: 900
|
Pues no se que mas quieres que profundice, son instruccioes básicas y viene un ejemplillo de cada una. Lo mejor es que hagas una prueba de cada una y mires con un debugger (el olly mismo q es el que yo he explicado o con los que a dicho Eternal Idol) para ver bien como funcionan. Una vez las entiendas intenta hacer los ejercicios y si te salen es q ya las tienes casi dominadas Salu2 y si no entiendes alguna pregunta Despues de leer 3 veces XD pude hacer los ejercicios . una pregunta como se puede hacer que si la respuesta de un mensage es "si" hacer tal cosa i si la respuesta es "no" hacer otra cosa
|
|
|
En línea
|
Mi blogBienvenido krackwar, actualmente tu puntuación es de 38 puntos y tu rango es Veteran. El pollo número 1, es decir yo, (krackwar), adoro a Shaddy como a un dios.
|
|
|
~~
|
Pues lo comparas igual que si fuese un número pero con la cadena, piensa que comparas bytes, solo eso, como ya puse lo q hace cmp en realidad es esto: CMP Valor1, Valor2
CMP compara dos valores. En realidad lo que hace esta instrucción es restar el Valor2 del Valor1 y activar el Flag correspondiente a el resultado. Por ejemplo si son iguales, si uno es mayor que el otro… (un Flag es como un registro pero que solo almacena 1 bit). Usaremos esta instrucción para los saltos condicionales que se explicarán a continuación. Seria asi: mov eax, 'SI' cmp eax, 'SI' jne NO invoke MessageBox, 0, 'Es si', '', 0 NO: invoke ExitProcess
Claro, que en eax tendrías que obtener el valor pidiendosolo al usuario, ya sea creando un formulario, una aplicación de consola o como tu quieras Salu3
|
|
|
En línea
|
|
|
|
elmeister
Desconectado
Mensajes: 43
|
si te refieres al típico mensaje con los botones de si y no usa este (lo he sacado del código al que le quería meter el icono y lo he retocado un poco) include 'H:\archivos de programa\fasm\include\win32ax.inc' ;He usado H: porque es mi unidad de disco donde tengo el FASM, tu usa la tuya .code start: invoke MessageBoxA,0,'aqui va el mensaje','y aqui el titulo de la ventanita',MB_YESNO cmp eax,IDYES jne no invoke MessageBoxA,0,'le has dado al si','SI',0 invoke ExitProcess no: invoke MessageBoxA,0,'le has dado al no','NO',0 invoke ExitProcess .end start
|
|
« Última modificación: 24 Abril 2008, 17:34 pm por elmeister »
|
En línea
|
|
|
|
krackwar
Desconectado
Mensajes: 900
|
muchas gracias me funciono ,por cierto eso de MB_YESNO sirve = como en VB? s4lu2!
|
|
|
En línea
|
Mi blogBienvenido krackwar, actualmente tu puntuación es de 38 puntos y tu rango es Veteran. El pollo número 1, es decir yo, (krackwar), adoro a Shaddy como a un dios.
|
|
|
|
|