Home       Pesquisar       Contacto       Guestbook       Links Úteis       Webmaster

 
 
 

English version

 
 

 

 

 

 

Aumentar o tamanho do texto   Diminuir o tamanho do texto
hardware

 

Monitores e Circuitos de Vídeo

Circuitos de Vídeo

 

 

Vamos escrever na memória RAM da placa gráfica com o Debug

C:\ cls                                                É

C:\ Debug                                       É

- R DS                                               É

      1CE6: B800                                   É

- R                                                    É

- E0                                                  É

E0 20.41 [ ]    ; a em (0,0) (41=A)         É

E0 20.41 07.0F  ; atributo                   É

E0 20.41 07.0F 20.43  ; (43=D)           É

E0 20.41 07.0F 20.43 07.78                É

 

Para monitores monocromáticos há quatro possibilidades de apresentação de caracteres:

-   Normal;

-   Intensificado;

-   Vídeo invertido (texto preto e fundo branco)

-  Blinking (o digito a piscar)

 

·    07.0F à branco intenso sobre preto.

·    07.07 à branco normal sobre preto.

 

Byte de Atributo

Bit 0

Cor do digito

000 à preto

 

111 à branco

Bit 1

Bit 2

Bit 3

Intensidade

0 à Normal : 1 à Intenso

Bit 4

Cor de fundo

000 à preto

 

111 à branco

Bit 5

Bit 6

Bit 7

Blinking

0 à Normal : 1 à Blinking

 

Vamos criar um programa que escreva directamente na memória RAM da placa de vídeo, com o MASM. Para isso escrevemos o programa no editor de texto.

 

 

Janela Segment

Assume CS:Janela

; limpa o monitor com a função scrool up

MOV AH,06h                                           ; coordenada do deslocamento das linhas e o atributo dos dígitos

MOV AL,00h                                             ; nº de linhas a deslocar, 00h todas as linhas

MOV CH,00H                                            ; coordenada do canto superior esquerdo no monitor

MOV CL,00H                                            ;           “

MOV DH,24                                              ; coordenada do canto inferior direito no monitor

MOV DL,79                                               ;            ”

MOV BH,07H                                            ; o atributo é em BH

INT 10H                                                    ; para executar a função

;posiciona o cursor no canto inferior esquerdo

POS_CURS:

*         MOV AH,02H                                            ; o número da função em AH

MOV DH,16                                              ; linha 16

MOV DL,30                                               ; coluna 30

MOV BH,00H                                            ; o número da pagina

*          INT 10H

;lê caracteres do teclado;

MOV CX,20d                                             ; para cada linha só ter 20 dígitos

LE_CHAR:

MOV AH,01H

INT 21H

CMP AL,03H                                               ; código ASCII à AL, Ctrl + C à 03h para sair

JZ FIM

LOOP LE_CHAR                                         ; lê o próximo dígito, até 20 dígitos

; sobe uma linha

MOV AH,06H

MOV AL,01H                                              ; o número de linhas a subir

MOV CH,08H                                              ; canto superior esquerdo

MOV CL,30

MOV DH,16

MOV DL,50

MOV BH,07H                                              ; atributo normal

INT 10H

JMP POS_CURS

FIM

INT 20H                                                      ; estabelece os valores iniciais

JANELA ENDS

END

 

 

Assemble o programa.

Na utilização do programa não carregue no enter , pois leva o cursor para fora da janela.

 

O byte de atributo dos caracteres em modo de texto nas placas de cor é diferente. Nestas placas pode-se descodificar até 16 cores de cada conjunto de 4 bits, nible , e como temos 2 nibles por byte , o byte atributo é dividido em dois conjuntos de 4bits , 2 nibles .

A cada nible é atribuído um conjunto de 4 bits que correspondem as cores pela ordem IRGB da tabela seguinte. Os 4 bits de menor peso é a cor da letra e os 4 bits de maior peso é a cor de fundo.

 

Cor

IRG

Para escrever azul sobre vermelho, o atributo é formado pelo bit azul 1001, nible de menor peso e pelo bit vermelho 0100 que é o nible de maior peso, o byte fica então, 01001001 (binário) que corresponde a 49 (hexadecimal)

Preto

0000

Azul

0001

Verde

0010

Azul-Claro

0011

Vermelho

0100

Violeta

0101

Castanho

0110

Cinzento-Claro

0111

Cinzento-escuro

1000

Azul intensificado

1001

Verde intensificado

1010

Azul-Claro intensificado

1011

Vermelho intensificado

1100

Violeta intensificado

1101

Amarelo

1110

Branco

1111

 

 

 
 


© 2007 - 2010 - Miguel Moreira | Todos os direitos reservados