elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Temas
Páginas: 1 [2]
11  Programación / ASM / Direccionamiento indexado ASM en: 19 Agosto 2010, 17:28 pm
Veréis, me estoy iniciando en ensamblador, pues creo que es fundamental. Ya conozco otros lenguajes, asi que pensé que era hora de meterme en ello.

Compré el libre de Francisco Charte Ojeda, llamado Lenguaje Ensamblador (El Pequeño) y en general, todo bien, se va entendiendo, pero tengo un pequeño problema, no llego a entender un modo de direccionamiento (estuve buscando por google y todavía lo entiendo peor; será que soy tonto). Es el llamado "Indexado" (me pasa lo mismo con el escalado que es parecido). Ahi explica que se le puede sumar desplazamiento. A que se refiere esto? Un ejemplo del que me muestra es el siguiente:
Código:
MOV AL, [BX+SI+4]

Me podriais explicar que ocurre en este ejemplo? Que es exactamente lo que se transfiere al registro AL?

También os muestro el primer ejercicio práctico que me propone hacer(esto es el resultado, es decir, la solución), por si necesitais un poco más de contexto de código (no es necesario que me lo expliqueis, no os preocupeis):

Código:
#include <stdafx.h>
#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
struct Incidencia {
char carretera[8];
short kilometro;
char descripcion[128];
};
Incidencia hoy[] = {
{ "A44", 32, "Nieve"},
{ "A6", 173, "Accidente"},
{ "M30", 8, "Retenciones" }
};
char *via, *problema;
short altura;
__asm {
                      ;EBX apunta al inicio del vector
lea ebx, hoy
                        ; y esi tiene tamaño por elemento
mov esi, SIZE Incidencia

                      ; se recupera puntero a la cadena carretera
lea eax, [ebx+esi*2]
mov via, eax

                        ;se recupera dato 16 bits que indica kilometro
mov ax, [ebx+esi*2+8]
mov altura, ax
                       ; se recupera puntero cadena descripcion
lea eax, [ebx+esi*2+10]
mov problema, eax
}
cout << problema << " a la altura del KM " << altura << " en la " << via << endl;
return 0;
}

Saludos! Gracias de antemano. Se que os he metido un rollazo, pero es que no puedo avanzar y alli me quedaré si alguien no me lo soluciona...  :(
12  Programación / ASM / Assembler PowerPC en: 3 Agosto 2010, 23:20 pm
Alguien conoce algun ensamblador para PowerPC? Y si no es mucho pedir, algun manual para este?

Gracias, les gradeceré! Quiero iniciarme en este aspecto, y si lo hago, mejor comenzando con PPC.

Saludos!
13  Programación / ASM / Libreria en ensamblador (FASM) en: 2 Agosto 2010, 22:11 pm
Soy un poco novato en este aspecto, pero quizás a muchos les sea útil para adjuntar librerias a sus programas.

Yo, de hecho llevaba tiempo buscando como crear una DLL en FASM, y toqué con el código para hacerlo. Asi podrán usar FASM, que es un ensamblador inmejorable, sin escusas.

Código:
; DLL creation example

format PE GUI 4.0 DLL
entry DllEntryPoint

include 'win32a.inc'

section '.code' code readable executable

proc DllEntryPoint hinstDLL,fdwReason,lpvReserved
mov eax,TRUE
ret
endp

; VOID ShowErrorMessage(HWND hWnd,DWORD dwError);

proc ShowErrorMessage hWnd,dwError
  local lpBuffer:DWORD
lea eax,[lpBuffer]
invoke FormatMessage,FORMAT_MESSAGE_ALLOCATE_BUFFER+FORMAT_MESSAGE_FROM_SYSTEM,0,[dwError],LANG_NEUTRAL,eax,0,0
invoke MessageBox,[hWnd],[lpBuffer],NULL,MB_ICONERROR+MB_OK
invoke LocalFree,[lpBuffer]
ret
endp

; VOID ShowLastError(HWND hWnd);

proc ShowLastError hWnd
invoke GetLastError
stdcall ShowErrorMessage,[hWnd],eax
ret
endp

section '.idata' import data readable writeable

  library kernel,'KERNEL32.DLL',\
  user,'USER32.DLL'

  import kernel,\
GetLastError,'GetLastError',\
SetLastError,'SetLastError',\
FormatMessage,'FormatMessageA',\
LocalFree,'LocalFree'

  import user,\
MessageBox,'MessageBoxA'

section '.edata' export data readable

  export 'ERRORMSG.DLL',\
ShowErrorMessage,'ShowErrorMessage',\
ShowLastError,'ShowLastError'

section '.reloc' fixups data discardable

Espero que les sea útil. Este código se encuentra entre uno de los ejemplos de FASM. Las funciones exportadas, en este caso son ShowErrorMessage y ShowLastError.

Saludos!

PD: Si ya sabian hacer esto, porfavor, no critiquen. Comparto lo que puedo a la comunidad; a algunos les será util, a otros quizás no.
14  Programación / Programación C/C++ / MinGW en: 2 Agosto 2010, 03:14 am
Hola,
Perdonen mi ignorancia pero tengo una pequeña duda respecto a MinGW. Es MinGW un compilador distinto a GCC o es el mismo pero adaptado a windows?

Saludos! Gracias!
15  Informática / Hardware / Disco Duro: Pérdida Datos en: 8 Julio 2010, 13:18 pm
Hola,

Lo que pregunto ahora es mera curiosidad. Leí por un sitio que los discos duros si no los enciendes cada cierto tiempo, no se si era medio año, perdían datos.

Alguien ha leído algo por el estilo que pudiera responderme? Por favor, intenten abstenerse de 'creo que'. Si alguien tiene una hipótesis contundente exponerla-

Gracias y saludos!
Páginas: 1 [2]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines