Introdução à Maleta MK-904 de Microprocessador Informações Exibidas no Display LCD No display acima, o caractere designador “H”, “@”, “L”, “#” ou “,” aparece automaticamente quando necessário. Os usuários não precisam digitar esses caracteres. Sistema de Numeração Hexadecimal Decimal Binário Hexadecimal 0 0 0 1 1 1 2 10 2 3 11 3 4 100 4 5 101 5 6 110 6 7 111 7 8 1000 8 9 1001 9 10 1010 A 11 1011 B 12 1100 C 13 1101 D 14 1110 E 15 1111 F Prática de Microprocessadores II Prof. Ricardo de Macedo Para facilitar nesta apostila, os números são representados pelo seguinte sistema de numeração: Números decimais: Como de costume Números binários: Exemplo: Dentro de parênteses: (0010) para números de 4 bits (00001111) para números de 8 bits Números hexadecimais: Um número sucedido pela letra “H” AH é igual (1010) 3FH é igual a (00111111) REFÊNCIA Conjunto de Instruções Nesta seção, todas as instruções disponíveis neste kit são classificadas e listadas na seguinte ordem: Instruções de Entrada / Saída Instrução de Mover Instruções Aritméticas Instruções de Deslocamento Instruções de Incremento / Decremento Instruções de Saltar Instruções de Comparação Instruções de Beep Instruções de Controle de Tempo Outras Instruções IN, OUT MOV ADD, SUB ROR, ROL INC, DEC JMP, JZ, JNZ, JC, JNC CMP BOM, BOF TM1, TM2 STP, NOP, SEC, HEX Cada grupo de instrução é descrito pela instrução com os seguintes conteúdos: Código: Código de instrução (mnemônico). Descrição: É fornecida uma descrição geral das funções. Formato: Descreve o formato ou a orde de entrada do código de instrução e operandos no microprocessador. Algumas instruções tem dois ou mais formatos diferentes, identificados por números de sufixo seqüenciais. Função: Descreve o significado do formato. Exemplo: Mostra uma referência. Indicadores de “Vai-Um” (Carry-Flag) e de Zero (Zero-Flag) Quando dois valores de dados são adicionados e sua soma excede o máximo valor FF em hexadecimal, ou se a subtração de um dado B de um dado A resulta em um valor negativo, este fato é armazenado em um flip-flop chamado indicador de “Vai-UM” (Carry-Flag) para referências posteriores no programa. Em outras palavras, se alguma operação aritmética causou um transbordo ( o resultado ultrapassa o valor máximo FF em hexadecimal permitindo para armazenamento numa memória de 8 bits), o Carry-Flag recebe o valor 1. Se nenhum transbordo ocorreu, o Carry-Flag recebe o valor 0. Prática de Microprocessadores II Prof. Ricardo de Macedo O indicador de “Vai-Um” (Carry-Flag) também é usado para armazenar dados de 1 bit quando você executa alguma instrução de deslocamento (ROR ou ROL). Se dois valores de dados comparados pela instrução CMP são iguais, a subtração dos dois dados resulta um zero (este calculo é feito internamente sem modificar nenhum dado nos registradores). Similarmente, se uma instrução lógica AND é executada para dois dados, por exemplo (00011000) e (11100111), o resultado será zero (o valor resultante do registrador será (00000000)). Esses fatos também são armazenados num flip-flop chamado de indicador de Zero (Zero-Flag) para referências posteriores no programa. A condição dos indicadores de “Vai-Um” e de Zero é critica para qualquer programa e é determinada por instruções como JC (Salta se Carry-Flag é 1) ou JNZ (Salta se Zero-Flag é 0). Prática de Microprocessadores II Prof. Ricardo de Macedo Instruções de Entrada / Saída Código: IN Descrição: Transfere dados de uma porta de entrada para o acumulador A ou registrador. Porta de Entrada Dado de Entrada IN1 bit-0 IN2 bit-1 IN3 bit-2 IN4 bit-3 Formato 1: IN A Obtém dados de entrada para o acumulador A. Ex. IN A Formato 2: IN mem Obtém dados de entrada para a memória. Ex. IN C Código: OUT Descrição: Transfere dados do acumulador A ou registrador para a porta de saída Dado de Saída Porta de Saída bit-0 OUT1 bit-1 OUT2 bit-2 OUT3 bit-3 OUT4 bit-4 OUT5 bit-5 OUT6 bit-7 OUT7 Formato 1: OUT A Transfere os dados do acumulador A para a porta de saída. Ex. OUT A Formato 2: IN mem Transfere o conteúdo de um registrador (B a F) para a porta de saída. Ex. OUT F Prática de Microprocessadores II Prof. Ricardo de Macedo Instruções de Mover Código: MOV Descrição: Move valores de dados de um registrador para outro. Cinco formatos de instrução são disponíveis. Formato 1: Mov A, #n8 Move dados de 8 bits para o acumulador A. Ex. MOV A, #2FH Formato 2: Mov men, #n8 Move dados de 8 bits para o acumulador A ou registrador (B a F). Ex. MOV B, #03H Formato 3: Mov A, men Move o conteúdo de um registrador (B a F) para o acumulador A. Ex. MOV A,C Formato 4: Mov men, A Move o conteúdo do acumulador A para um registrador (B a F). Ex. MOV F,A Formato 5: Mov A, @ mem Move o conteúdo da posição do registrador (B a F) para o acumulador A. Como os dados são movidos indiretamente, este formato de instrução é chamado especificamente de modo de instrução de endereçamento indireto. Ex. MOV A, @B Prática de Microprocessadores II Prof. Ricardo de Macedo Instruções de Aritmética Código: ADD Descrição: Executa uma adição aritmética entre o acumulador A e um registrador (B a F) ou entre registrador e um dado de operando. Formato 1: ADD A, mem Adiciona o conteúdo de um registrador (B a F) ao acumulador A. Ex. ADD A,D Formato 2: ADD A, #n8 Adiciona dados de 8 bits ao acumulador A. Ex. ADD A, #02H Código: SUB Descrição: Executa uma subtração aritmética entre o acumulador A e um registrador (B a F) ou entre um registrador e um dado de operando. Formato 1: SUB A, mem Subtrai o conteúdo de um registrador (B a F) do acumulador A. Ex. ADD A,D Formato 2: SUB A, #n8 Subtrai dados de 8 bits do acumulador A. Ex. ADD A, #02H Prática de Microprocessadores II Prof. Ricardo de Macedo Instruções de Deslocamento Código: ROR Descrição: Desloca o conteúdo do acumulador ou registrador (B a F) um bit para a direita. O bit deslocado para fora é armazenado no indicador de “vai-um”, que é determinado pela instrução JNC ou JC. b7 b0 Indicador de vai 1 Formato 1: ROR A Desloca o conteúdo do acumulador A um bit para a direita. Ex. ROR A Formato 2: ROR mem Desloca o conteúdo do registrador (B a F) um bit para a direita Ex. ROR C Código: ROL Descrição: Desloca o conteúdo do acumulador ou registrador (B a F) um bit para a esquerda. O bit deslocado para fora é armazenado no indicador de “vai-um”, que é determinado pela instrução JNC ou JC. b7 b0 Indicador de vai 1 Formato 1: ROL A Desloca o conteúdo do acumulador A um bit para a esquerda. Ex. ROR A Formato 2: ROR mem Desloca o conteúdo do registrador (B a F) um bit para a esquerda. Ex. ROR C Prática de Microprocessadores II Prof. Ricardo de Macedo Instruções de Incremento / Decremento Código: INC Descrição: Incrementa 1 ao conteúdo do acumulador A ou ao registrador (de B a F). Formato 1: INC A Adiciona o dado 1 ao acumulador A. Ex. INC A Formato 2: INC mem Adiciona o dado 1 à memória (B a F) Ex. INC F Código: DEC Descrição: Decrementa 1 ao conteúdo do acumulador A ou ao registrador (de B a F). Formato 1: DEC A Subtrai o dado 1 ao acumulador A. Ex. INC A Formato 2: DEC mem Subtrai o dado 1 à memória (B a F) Ex. DEC F Prática de Microprocessadores II Prof. Ricardo de Macedo Instruções de Saltar Código: JMP Descrição: Move incondicionalmente o fluxo de programa para o endereço do operando. Formato : JMP !endereço Ex. JMP L01H Código: JZ Descrição: Move o fluxo de programa para o endereço do operando se o indicador de zero (Zero-Flag) for 1 7 Formato : JZ !endereço Ex. JZ L01H Código: JNZ Descrição: Move o fluxo de programa para o endereço do operando se o indicador de zero (Zero-Flag) for 0 Formato : JNZ !endereço Ex. JNZ L01H Código: JC Descrição: Move o fluxo de programa para o endereço do operando se o indicador de “vai-um” (Carry-Flag) for 1 Formato : JC !endereço Ex. JC L01H Prática de Microprocessadores II Prof. Ricardo de Macedo Código: JNC Descrição: Move o fluxo de programa para o endereço do operando se o indicador de “vai-um” (Carry-Flag) for 0 Formato : JNC !endereço Ex. JNC L01H Prática de Microprocessadores II Prof. Ricardo de Macedo Instruções de Comparação Código: CMP Descrição: Compara o conteúdo do acumulador A com dados de 8 bits do operando ou do registrador (B a F), ou o conteúdo de um registrador (B a F) com dados de 8 bits do operando ou do registrador (B a F). O resultado da comparação pode ser determinado pela verificação dos indicadores de zero (Zero-Flag) ou de “vai-um” (Carry-Flag). Os conteúdos do acumulador A ou dos registradores não mudam. Formato 1: CMP A,#8 Compara o conteúdo do acumulador A com dado de operando de 8 bits. Ex. CMP A,#08H Formato 2: CMP A,mem Compara o conteúdo do acumulador A com um registrador (B a F). Ex. CMP A,C Formato 3: CMP mem,#8 Compara o conteúdo de um registrador (B a F) com um dado de operando de 8 bits. Ex. CMP D,#08H Formato 4: CMP mem,A Compara o conteúdo de um registrador (B a F) com acumulador A. Ex. CMP C,A Prática de Microprocessadores II Prof. Ricardo de Macedo Instruções de Beep Código: BON Descrição: Começa a emitir um beep de uma escala musical especificada pelo valor do operando como segue: Valor do Operando 1 2 3 4 5 6 7 8 9 A B C D Freqüência do Som (Hz) 500 530 562 595 630 667 707 750 794 840 890 944 1000 Escala Musical dó dó# ré ré# mi fá fá sol sol# lá lá# si dó Formato : BON #n4 Ex. BOM #1H Código: BOF Descrição: Termina a emissão de beep como visto no exemplo acima. Formato : BOF Ex. BOF Prática de Microprocessadores II Prof. Ricardo de Macedo Instruções de Controle de Tempo Código: TM1 Descrição: Aguarda por um período de tempo especificado pelo valor do operando * 10 mili-segundos, antes de executar a instrução. Formato : TM1 #n8 Ex. TM1 #32H Código: TM2 Descrição: Aguarda por um período de tempo especificado pelo valor do operando * 1 segundos, antes de executar a instrução. Formato : TM2 #n8 Ex. TM2 #03H Prática de Microprocessadores II Prof. Ricardo de Macedo Outras Funções Código: STP Descrição: Interrompe o fluxo de programa. Formato : STP Ex. STP Código: NOP Descrição: Não faz nada. Cada instrução gasta em média 2 mili-segundos Formato : NOP Ex. NOP Código: SEC Descrição: Coloca o indicador de “vai-um” (Carry-Flag) para 1. Formato : SEC Ex. SEC Código: CLC Descrição: Limpa o indicador de “vai-um” (Carry-Flag), deixando-o com valor 0 (zero) Formato : CLC Ex. CLC Código: HEX Descrição: Define um dado com tamanho de 8 bits na linha onde ele aparece. Formato : HEX #n8 Ex. HEX #01H Prática de Microprocessadores II Prof. Ricardo de Macedo