Red de conocimiento informático - Conocimiento sistemático - ¿Cómo mostrar el contenido del búfer de visualización en lenguaje ensamblador?

¿Cómo mostrar el contenido del búfer de visualización en lenguaje ensamblador?

En primer lugar, debe saber que cuando escribe el código ASCII correspondiente a un carácter en el búfer de visualización, se mostrará en la pantalla.

El búfer de visualización 1 * * * tiene 8 páginas (aquí solo la primera página es suficiente, la mencionaré)

Cada página puede almacenar 2000 palabras, una palabra El bit alto es el carácter que se va a mostrar y el bit bajo es el color del carácter.

En otras palabras, una página puede mostrar hasta 2000 caracteres, como el dígito 0: 41 y el dígito 1: 02. El bit donde se encuentra aquí el 41 es el bit 0 (bit par), por lo que se convertirá en el carácter correspondiente y se mostrará en pantalla, seguido del bit impar (1 bit), su contenido se convertirá en caracteres y control. el bit 0.

Y cada línea puede contener 80 palabras, es decir, 80 caracteres (bits de carácter + bits de color = 160 bytes), y cada página puede mostrar 25 líneas.

Podemos usar el número de filas * 160 = la dirección en memoria relativa al número de filas (porque una fila tiene 160 bytes, multiplíquela por 160).

Podemos usar el número de columnas * 2 = la dirección en la memoria relativa al número de columnas (porque cada fila usa 2 bytes para almacenar caracteres y colores respectivamente).

Si se usa SI para almacenar el número de filas y DI para almacenar el número de columnas, y necesita mostrar los datos en 13 filas y 40 columnas en la pantalla, entonces su dirección de desplazamiento es : si*16di *2 (Aquí es donde se almacenan los caracteres). Si desea configurar el color, solo necesita compensarlo en un bit: Si * 16.

Dicho todo esto, no puedo escribirte una explicación concreta.

El carácter X (texto verde sobre fondo negro) debe mostrarse en la pantalla en 13 filas y 40 columnas.

Asumir cs:code

Segmento de código

Inicio:

mov bx, 0b800h

mov es, bx; use el segmento ES para almacenar el búfer de visualización

mov bx, 13 * 1640 * 2; al compilar, el compilador lo ayudará a calcular la dirección de desplazamiento mostrada.

mov es:[bx],'X';Escribe el código ASCII del carácter "x" en la memoria del buffer de visualización.

mov es:[bx+1], 2h; mueve una posición hacia atrás aquí para controlar el color de X

mov ax, 4c00h

int 21h

Fin del código

Fin del inicio

Después de responder, comuniquémonos juntos en QQ544980123.