La pregunta esta muy clara, se supone que por algun motivo necesito saber que caracter o caracteres estan visualizados en la pantalla en algun momento.
Bueno, a mi la verdad no se me ocurre ningun problema para esta solucion, pero ya he visto esta pregunta dos veces asi que tal vez nos pueda servir algun dia.
El siguiente codigo fue escrito por nuestro amigo Diego Romero.
ch=record
linmemvideo=array[1..80] of ch;
var
begin
   car,att:byte;
end;
pantmemvideo=array[1..25] of linmemvideo;
    pantalla:pantmemvideo absolute $b800:00;
    A: char;
    A:=chr(Pantalla[1][1].car);
end;
Esta es la explicacion que el da:
Lo que hice fué crear una estructura igual a la de la memoria de video en modo texto de 80 x 25 y fuerzo que se cree en la posición de esa memoria ($b800:00), sin más la matriz así creada es la pantalla no tenga mas que asignar la posición que deseo a una variable char y listo.
El programa de abajo, es un pequeño ejemplo de como funciona el codigo, las lineas marcadas con **, son lineas que yo añadi.
Program Leer_Caracteres; {**}
type {**}
     linmemvideo=array[1..80] of ch;
var
begin
     for j:=1 to 3 do
{El primer numero indica las filas, el segundo las columnas}
     gotoxy(1,24);{**}
readkey;{**}
uses crt; {**}
     ch=record
     car,att:byte;
     end;
     pantmemvideo=array[1..25] of linmemvideo;
     pantalla:pantmemvideo absolute $b800:00;
     A: char;
     j,i:byte; {**}
clrscr; {**}
       for i:=1 to 255 do
           write(chr(i));
     A:=chr(Pantalla[1][1].car);
     write(a); {**}
end.
El programa escribe en la pantalla, 3 veces todos los caracteres del codigo ASCII, cambiando las coordenadas en la linea " A:=chr(Pantalla[1][1].car) ", se puede obtener el caracter de la coordenada deseada.