“Conocimiento Hardware>Dispositivos de Entrada y Salida

¿Escribir a la memoria VDU en modo de texto?

2011/6/27
Escribir directamente a la memoria VDU (unidad de visual visual) en el modo de texto es una operación de bajo nivel que es altamente específica del sistema y generalmente desalentada en la programación moderna. El método depende en gran medida del sistema operativo (OS), la tarjeta de video y el modo de video. No hay una sola solución portátil.

Aquí hay un desglose de por qué es difícil y qué enfoques podría considerar, junto con sus limitaciones:

Por qué es difícil y desanimado:

* Capas de abstracción: Los sistemas operativos modernos resumen el acceso de memoria directa al hardware de video. Esto es por razones de estabilidad y seguridad. La manipulación de memoria directa puede bloquear fácilmente su sistema si se realiza incorrectamente.

* Dependencia del hardware: La dirección de memoria donde reside Video RAM (VRAM) varía drásticamente dependiendo de la tarjeta de video y su configuración.

* Mapeo de memoria: Incluso si pudiera encontrar la dirección VRAM, necesitaría comprender cómo se asigna la memoria de video (por ejemplo, cuántos bytes por carácter, atributos del personaje, resolución de pantalla). Esto depende en gran medida del modo de video.

* Mecanismos de protección: Los sistemas operativos a menudo emplean la protección de la memoria para evitar que los programas escriban a ubicaciones de memoria arbitraria, incluido VRAM.

* Tarjetas gráficas modernas: Con tarjetas gráficas modernas y controladores, el acceso directo a la memoria al FrameBuffer es prácticamente imposible. La GPU maneja toda representación.

Enfoques (con advertencias significativas):

1. BIOS Interrupts (sistemas muy antiguos): En sistemas extremadamente antiguos (piense en DOS o versiones muy tempranas de Windows), * podría * poder usar interrupciones de BIOS para escribir directamente a la memoria de video. Sin embargo, estas interrupciones no están estandarizadas y son altamente dependientes del sistema. Este enfoque es casi completamente obsoleto.

2. API específicas del sistema operativo (uso limitado): Algunos sistemas operativos (como versiones muy antiguas de Windows o sistemas integrados específicos) pueden proporcionar API de bajo nivel para acceder a la memoria de video. Estas API son extremadamente raras y generalmente no se recomiendan.

3. Uso de una biblioteca de gráficos: En lugar de acceso directo a la memoria, siempre debe usar una biblioteca de gráficos (como SDL, SFML o una biblioteca GUI de nivel superior). Estas bibliotecas manejan las complejidades de interactuar con el hardware gráfico y proporcionan una forma mucho más segura y portátil de mostrar texto. Abrazan los detalles específicos del hardware.

Ejemplo (ilustrativo, altamente específico del sistema y es probable que falle):

Esto es solo un ejemplo * conceptual * y lo hará no Trabajar en la mayoría de los sistemas modernos. Se proporciona únicamente para ilustrar la complejidad:

`` `C ++

// Este código es altamente específico del sistema y probablemente no funcionará.

// es solo para fines ilustrativos.

#Include

int main () {

// Esta es una dirección completamente arbitraria y seguramente estará equivocado.

unsigned char* videOmemory =(unsigned char*) 0xb8000; // Ejemplo para sistemas muy antiguos

// Suponiendo 2 bytes por personaje (carácter y atributo)

VideOmemory [0] ='H'; // Personaje

VideOmemory [1] =0x07; // atributo (por ejemplo, blanco sobre negro)

VideOmemory [2] ='e'; // Personaje

VideOmemory [3] =0x07; // Atributo

regresar 0;

}

`` `` ``

En resumen, evite el acceso directo a la memoria a VRAM. Usar una biblioteca de gráficos; Es la única forma confiable y portátil de representar el texto en la pantalla en un contexto moderno. La manipulación de memoria directa es arriesgada, dependiente del sistema y es propensa a causar inestabilidad del sistema o bloqueos.

Dispositivos de Entrada y Salida
Cómo solucionar el Latencia Con la US-122 y Ableton
¿Cuáles son los dispositivos de salida de la computadora de segunda generación?
Cómo rellenar los cartuchos de tinta HP 80
¿Cuántos dispositivos de salida básicos hay?
Cómo utilizar y formatear un disco en blanco CDR
¿Dar 7 ejemplo de dispositivo de entrada y explicar cada dispositivo?
¿Cuáles son los dispositivos de entrada y salida disponibles hoy?
Cómo utilizar el análisis de fase con la Enpac 2500
Conocimiento de la computadora © http://www.ordenador.online