Considerações sobre a Linguagem

Mnemónicas e Opcodes

Programas executáveis são apenas filas de bits num ficheiro. Estes bits dizem ao CPU e ao Sistema Operativo o que fazer. A Maioria dos computadores operam com 8 bit -bytes, significando que cada conjunto de 8 bits corresponde a um byte. Nas máquinas 80x86, os bytes são agregados em palavras. Dois bytes são uma palavra, quatro formam uma dupla palavra, etc. Num fi cheiro executável (que é uma cadeia de bytes), os bytes no ficheiro correspondem a dados, opcodes do processador, portos de I/O e endereços de memória.

Nos dias antigos, os programadores de linguagem assembly tinham que se lembrar do Opcode (fila d e bits) para cada instrução que eles quisessem usar nos seus programas. Isso não era lá muito divertido, por isso alguém veio com a ideia de utilizar um Assemblador. Um Assemblador traduz as mnemónicas nos opcodes próprios para o CPU descodificar ao nível das suas instruções de máquina. Uma mnemónica é apenas uma palavra ou abreviação que corresponde a um Opcode. Por exemplo, a mnemónica MOV AL,DL é convertida pelo assemblador para 8AC2 em Hexadecimal.

Muitas mnemónicas recebem operandos (argumento s) para realizar alguma operação sobre eles. No exemplo acima, "AL,DL" eram os argumentos dados à instrução MOV. Operandos para diferentes instruções podem ser registos, endereços ou localizações de memória. O Assemblador converte estes nos valo res Hex apropriados.

Arquitectura :

Portos e "Buses" (barramento)

O chip 80x86 possui um número de "buses&qu ot; que permitem-lhe comunicar com a memória , componentes e periféricos do sistema. Cada "bus" tem uma função. Genericamente, existe um bus de endereços, um bus de controlo e um bus de dados. Muitos utlizadores de DOS ou de Windows estão famili arizados com a ideia de um porto COM. Conflitos muitas vezes surgem entre modems e ratos acerca de qual utilizar um porto COM especifíco ou IRQ. No DOS, um porto COM é actualmente um endereço no bus de endereços. Alguns conflitos são resultado dos dois di spositivos a tentar utlizar o mesmo endereço. Endereços num 80x86 são normalmente dois bytes no fomato Hexadecimal. Por exemplo, COM1 em DOS é usualmente 03F8H (o H no fim representa um valor Hex).

Outra parte importante na arquitectura do teu computador é Interrupt Request Line (IRQ). IRQ's são activados quando um dispositivo requere a atenção do CPU. Um exemplo claro é a UART n oteu modem ou placa Série. A UART envia e recebe dados via serial e notifica o CPU (bem, o controlador de interrupções)  que precisa de sua atenção. O CPU vai então executar uma rotina de interrupção.

É da responsabilidade da Rotina de resposta a interrupção, receber os dados ou caso contrário direccionar o dispositivo. No caso da UART, a rotina de resposta pode receber ou enviar um car acter dependendo da natureza da interrupção voltando ao processamento normal depois (executando depois a porção de código que foi interrompido).

No modo real, tu podes ver onde cada interrupção é depois executada fazendo o dumping do conteúdo 0:0 ( faz o dump deste endereço como double word se possível). Cada conjunto de 4 bytes especifica um endereço para o CPU começar a executar na ocorrência de uma interrupção. O salto para um endereço de 4 bytes é conhecido como uma far call. Numa
far call , tanto o segmento como o deslocamento da rotina são especificados.

Interrupções de software, são de alguma forma semelhantes a interrupções de hardware, em que o CPU pára a execução de um dado pedaço de código e salta para outra localização, mas estas estão embebidas nos programas e por isso previsíveis. São uma forma eficaz de extender as capacidades do sistema operativo. No DOS, a interrupção de software 21H "pede" ao DOS para executar um função do sistema operativo.

Este Web Site designed com:

Comentários e
Sugestões: