¿Configuración de gráficos x86 asm para resoluciones superiores a 640x480?

Acabo de comenzar a usar lenguaje ensamblador (sentí como aprender algo nuevo), y me he encontrado con algunas preguntas (hasta ahora) que todos los tutoriales que he estado viendo no responden, o son demasiado viejos para saberlo.

1) He intentado algunas búsquedas (quizás no conozca las palabras clave adecuadas), pero no puedo encontrar una lista actualizada de modos gráficos para cambiar la resolución de la pantalla, etc. Lo mejor que he encontrado es:Tutorial de ensamblador, y casi no creo que 640x480 sea la mejor resolución que el lenguaje ensamblador puede usar.¿Alguien sabe de un tutorial más actualizado que pueda usar?

Edición: Interrumpir 10h es viejo, y no soporta más de 640x480

2) ¿Es posible "mover" un valor de una variable a otra variable sin moverlo primero a un registro? Ejemplo:

jmp start
  n1     dw 0
  n2     dw 0
  res    dw 0
start:
  mov n1,5
  mov n2,6
  mov res,n1
  add res,n2
...etc...

Edit: No es posible. No puede pasar de la memoria a la memoria sin utilizar registros.

3) Continuando con la pregunta 1, ¿hay una manera de detectar qué modo de gráficos está utilizando un usuario actualmente, para poder cambiarlo y volver a cambiarlo después? (Supongo que sí, pero no estoy seguro de cómo hacerlo).

Editar: Necesidad de consultar el sistema operativo para la configuración de gráficos.

Respuestas a la pregunta(4)

Su respuesta a la pregunta