Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Eternal Idol

#3371
W (de working) es el registro acumulador, no esta mappeado a ninguna direccion de memoria, F se refiere a un registro de archivo (file), en el caso del ejemplo que das es PORTB, pero podria ser cualquier otro de esos que aparecen en la imagen que viene aca:

http://www.hobbyprojects.com/pic_tutorials/tutorial2.html

Efectivamente el $ terminador de cadena no tiene nada que ver con el uso del $ para identificar la instruccion actual.
#3372
ASM / Re: duda 16 o 32 bits
16 Julio 2009, 10:51 AM
Interrupciones hay siempre (para una u otra cosa), la API de Windows las usa en versiones antiguas para pasar al Kernel (int 2Eh, ahora existen instrucciones especificas como sysenter/syscall) y la interfaz de Linux siempre que yo sepa (int 0x80). Mi recomendacion seria que arranques con 16 bits pero no inviertas demasiado tiempo en aprender todas las interrupciones de la BIOS (y menos de MS-DOS) existentes, siempre habra tiempo para pasar a 32 y 64 bits.
#3373
ASM / Re: Codigos Inutiles !!!
13 Julio 2009, 20:46 PM
Compara el valor final de ecx en estos dos casos:

Código (asm) [Seleccionar]
xor ecx, ecx
mov cl, 0FFh
inc cl


Código (asm) [Seleccionar]
xor ecx, ecx
mov cl, 0FFh
inc ecx




XOR EAX, EAX
Para despues poner en eax la direccion de una funcion de la API no tiene utilidad.
#3374
ASM / Re: Assembler en AMD Athlon Neo
13 Julio 2009, 17:22 PM
Si usas un S.O. de 32 bits no vas a tener ningun problema en lo absoluto, si usas uno de 64 desde ya esa version del MASM y el LINK son de 16 bits y no te van a funcionar ya que no se soportan los programas de 16 bits. En cuanto a los entornos para PIC deberian funcionar pero mejor fijarse en el manual ...
#3375
ASM / Re: Que compilador recomiendan?
13 Julio 2009, 17:21 PM
Para Windows te recomiendo el paquete MASM32.
#3376
ASM / Re: Error en practica
8 Julio 2009, 15:12 PM
Para equilibrar la pila, empujaste dos DWORDs eax y formato.

Asi tiene que funcionar bien:
Código (asm) [Seleccionar]
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'
#3377
ASM / Re: Error en practica
8 Julio 2009, 14:59 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  ;D
#3378
ASM / Re: Error en practica
8 Julio 2009, 14:27 PM
De nada; fijate que la pila sigue estando mal, el programa da una excepcion en lugar de terminar correctamente.
#3379
ASM / Re: Error en practica
8 Julio 2009, 13:51 PM
nt es db (un byte) y eax es un registro de 32 bits, tenes que declarar nt como dd.

Y la division:
Código (asm) [Seleccionar]
xor edx, edx
mov eax,[nt]
mov ecx, 6
div ecx


¿Sabes usar printf? El primer parametro tiene que ser un puntero a una cadena, no un entero.

Por ejemplo en .data:
Código (asm) [Seleccionar]
formato db "Total %d Media %d", 13, 10, 0

Y se llama asi en este caso:
Código (asm) [Seleccionar]
push eax ;ese el resultado de la division
push [nt]
push formato
call [printf]
add esp, 0Ch ;hay que arreglar la pila, 3 parametros x 4 bytes cada uno = 12 = 0Ch


Mas facil:
Código (asm) [Seleccionar]
cinvoke printf, formato, [nt], eax

PD. No te olvides de usar cinvoke o arreglar la pila cuando llames a funciones con convencion de llamada C.
#3380
ASM / Re: [Ayuda] Hook
7 Julio 2009, 23:01 PM
Si, una funcion (o lo que sea) se puede escribir en el espacio de memoria de otro proceso perfectamente ...