¿Cómo mostrar el contenido del búfer de visualización en lenguaje ensamblador?
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.