Sintaxis FASM

Iniciado por ferk93, 8 Julio 2009, 17:43 PM

0 Miembros y 1 Visitante están viendo este tema.

Erik#

Cita de: YST en  8 Julio 2009, 22:55 PM
Cita de: ferk93 en  8 Julio 2009, 22:41 PM
Ok, todo bien, pero un par de cosas:

ese "xor cl, cl" pone a cero el registro verdad?
porque usas el registro "cl"?
porque pones "byte" delante de [Numero1]?
que hace exactamnt ese "ret"?

Gracias, y por cierto, en primer codigo q ha posteado Erik# no lo compila el FASM,
de hecho tengo la duda de que se pueda hacer un "pop" a una variable definida en .data
es posible?

Gracias y un saludo!
Estan caros los manuales de ASM que no se leen uno ? ¬¬'

xor cl,cl pone cl en 0.

Uso el registro cl por que se me da la regalada gana , podria usar al ,ah,ch,etc.. ( Siempre de tamaño de un byte ya que estoy trabajdno con un byte)

El byte antes de los corchetes es para expesificar el tamaño que quiero.

ret según lo que yo se saca EIP de la pila  y lo restaura :P


xD ¿Regalada gana? que vocabulario tan completo. (vés como al es de 1 byte :P(8 bits)).

Código (asm) [Seleccionar]
format pe console
entry start
include 'win32ax.inc'
Numero1 dd 3
Numero2 dd 9
Numero3 dd ?
formato db '%d',0
.code
start:
xor cl,cl
mov cl,byte[Numero1]
add cl,byte[Numero2]
mov byte[Numero2],cl
push [Numero2]
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'


¿Porque no trabajas con dd? son usados para numeros, van genial, ya te digo que con db no vas a poder sumar mucho (:

ferk93

Ok,  gracias a los dos y ya nos veRemos q me da q voy a tener muchas dudas con esto del ASM.

Erik#

Cita de: ferk93 en  8 Julio 2009, 23:38 PM
Ok,  gracias a los dos y ya nos veRemos q me da q voy a tener muchas dudas con esto del ASM.

De nada, ya sabes, cualquier duda, todos los programadores de asm (no me incluyo xD) te podran ayudar y los usuarios noobs como yo en asm tambien :) ¬¬ ya no soy tan noob xd

YST

#13
Es ridiculo usar cl si estas trabajando con dword :xD .
Código (asm) [Seleccionar]

format pe console
entry start
include 'win32ax.inc'
Numero1 dd 3
Numero2 dd 9
Numero3 dd ?
formato db '%d',0
.code
start:
xor ecx,ecx
mov ecx,dword[Numero1]
add ecx,dword[Numero2]
mov [Numero3],ecx
cinvoke printf,formato,[Numero3]
invoke getchar
ret
section '.idata' import data readable
library msvcrt,'msvcrt.dll'
import msvcrt,printf,'printf',getchar,'_fgetchar'                   


Yo le enseñe a Kayser a usar objetos en ASM

Erik#

Cita de: YST en  9 Julio 2009, 04:03 AM
Es ridiculo usar cl si estas trabajando con dword :xD .
Código (asm) [Seleccionar]

format pe console
entry start
include 'win32ax.inc'
Numero1 dd 3
Numero2 dd 9
Numero3 dd ?
formato db '%d',0
.code
start:
xor ecx,ecx
mov ecx,dword[Numero1]
add ecx,dword[Numero2]
mov [Numero3],ecx
cinvoke printf,formato,[Numero3]
invoke getchar
ret
section '.idata' import data readable
library msvcrt,'msvcrt.dll'
import msvcrt,printf,'printf',getchar,'_fgetchar'                   


Pero sin indicarle que son dword, funciona :P

YST

Pero es lo mismo solamente que el ensamblador te lo detecta , no ahorras ni un byte :P .


Yo le enseñe a Kayser a usar objetos en ASM

Erik#

#16
Cita de: YST en  9 Julio 2009, 09:50 AM
Pero es lo mismo solamente que el ensamblador te lo detecta , no ahorras ni un byte :P .

Tambien es una forma de economizar xD! Voy a mirarlo en los procesos.

EDIT: La diferencia de uso de bytes es muy pequeña, casi ni se nota :)