Hola a todos.
Tengo que acceder a los registros de la UART del puerto com1 mediante ensamblador, trabajo con C++ builder en windows 98.
Lo primero que hago es conseguir la dirección del COM1 leyendo de la zona BIOS, consigo la dirección de memoria 0x3F8, que entiendo que es la dirección base de la UART del COM1.
Con esta dirección base, usando distintos desplazamientos, accederé a los registros de la UART, ¿es correcto?
Mi problema es que al intentar hacer esto, obtengo un error:
Esto es lo que he intentado:
También he intentado acceder a esa posición de memoria de más formas, usando el registro bx, escribiendo directamente la dirección (literal) pero no consigo acceder, siempre el mismo error:
Tengo que acceder a los registros de la UART del puerto com1 mediante ensamblador, trabajo con C++ builder en windows 98.
Lo primero que hago es conseguir la dirección del COM1 leyendo de la zona BIOS, consigo la dirección de memoria 0x3F8, que entiendo que es la dirección base de la UART del COM1.
Con esta dirección base, usando distintos desplazamientos, accederé a los registros de la UART, ¿es correcto?
Mi problema es que al intentar hacer esto, obtengo un error:
Código [Seleccionar]
raised Exception class EAccessViolation with message 'Access violation at address 00401300. Read of address FFFFFFFF'
Esto es lo que he intentado:
Código [Seleccionar]
[...]
asm{
push es;
mov ax, 3f8h;
mov es, ax; //ERROR
mov ax, es:[0h]
}
[...]
También he intentado acceder a esa posición de memoria de más formas, usando el registro bx, escribiendo directamente la dirección (literal) pero no consigo acceder, siempre el mismo error:
Código [Seleccionar]
raised Exception class EAccessViolation with message 'Access violation at address 00401300. Read of address FFFFFFFF'