¿OpenBSD? Y por que no un FreeBSD. Esto que dicen de la seguridad de OpenBSD... Hay varios estudios sobre el performance de FreeBSD, que es un poco más alto. No se... mi opinión.
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úmov bx, pnum
mov ax, pnum+2
mov ds, ax
Cita de: Eternal Idol en 19 Agosto 2010, 17:49 PMMmm... Muchas gracias por responder. No se si lo entendí bien...Cita de: farresito en 19 Agosto 2010, 17:28 PMMe podriais explicar que ocurre en este ejemplo? Que es exactamente lo que se transfiere al registro AL?
Se mueve el byte contenido en la direccion de memoria calculada mediante la suma de BX + SI + 4.
BX es la base, SI el indice y 4 el offset al miembro de la estructura.
MOV AL, [BX+SI+4]
#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;
}