SISTEMAS DIGITAIS II UNIVERSIDADE DA BEIRA INTERIOR FOLHAS DE APOIO: CONJUNTO DE INSTRUÇÕES DO µP8085 • Símbolos e abreviaturas utilizadas na descrição das instruções acumulador addr data data 16 byte 2 byte 3 port r, r1, r2 rp rh rl PC SP Ai F PSW () ← ↔ ∧ ∨ ⊕ + – ¯ n registo A endereço de 16 bits quantidade de 8 bits quantidade de 16 bits segundo byte da instrução terceiro byte da instrução endereço de 8 bits de um dispositivo de entrada/saída (I/O) um dos registos A, B, C, D, E, H, L um dos pares de registos: B ≡ par B, C (byte mais signif. - B; byte menos signif. - C) D ≡ par D, E (byte mais signif. - D; byte menos signif. - E) H ≡ par H, L (byte mais signif. - H; byte menos signif. - L) ou o ponteiro da pilha (stack pointer) SP (registo de 16 bits) o primeiro registo (mais significativo) de um par de registos o segundo registo (menos significativo) de um par de registos registo contador de programa (program counter)de 16 bits: PCH - byte mais significativo; PCL - byte menos significativo registo ponteiro da pilha (stack pointer) de 16 bits: SPH - byte mais significativo; SPL - byte menos significativo bit i do acumulador (LSB – i = 0; MSB – i = 7) byte que inclui o valor dos flip-flops das flags de condição: Z – flag zero bit 6 do byte F S – flag sinal bit 7 do byte F P – flag paridade bit 2 do byte F CY – flag carry (transporte) bit 0 do byte F AC – flag carry auxiliar bit 4 do byte F os outros bits de F são dont cares, ou seja F ≡ S Z – AC – P – CY palavra de estado do microprocessador de 16 bits, constituída por: A - byte mais significativo; F - byte menos significativo conteúdo da posição de memória cujo endereço está entre parênteses ou conteúdo de registos que figuram entre parênteses transferência de informação entre registos ou entre registos e memória troca de informação AND (produto lógico) OR (soma lógica) EXOR adição subtracção (supõe-se uma representação em complemento para 2) complementação lógica ou complemento para 1 aritmético número de reinicialização (RST - restart) de 0 a 7 1/12 SISTEMAS DIGITAIS II UNIVERSIDADE DA BEIRA INTERIOR FOLHAS DE APOIO: CONJUNTO DE INSTRUÇÕES DO µP8085 • Formatos de instruções e dados A memória utilizada num sistema baseado no µP8085 está organizada em bytes. A cada byte corresponde uma posição na memória, definida por um endereço binário de 16 bits, pelo que o µP8085 pode endereçar até 64 KBytes (1 K = 210) de memória. Esta memória pode ser de leitura/escrita (tipo RAM) ou só de leitura (tipo ROM). Os dados são armazenados na forma de binários inteiros de 8 bits (Fig. 1). Fig. 1 Fig. 2 Uma instrução do µP8085 tem um comprimento variável, podendo ser constituída por um, dois ou três bytes. As instruções com mais de um byte devem ser armazenadas em posições de memória consecutivas; o endereço do primeiro byte é sempre utilizado como o endereço da instrução. O formato exacto da instrução depende da operação que se pretende executar (Fig. 2). • Modos de endereçamento Os dados sobre os quais uma determinada instrução vai operar estão armazenados ou na memória ou nos registos do µP8085. Quando são utilizados dados numéricos com mais de um byte, os dados, tal como as instruções, são armazenados em posições consecutivas da memória, com o byte menos significativo em primeiro lugar. O µP8085 tem quatro modos diferentes para endereçar dados armazenados na memória ou em registos: Directo – Os bytes 2 e 3 da instrução contêm o endereço de memória exacto do dado (os bits menos significativos do endereço estão no byte 2 e os mais significativos no byte 3) Por registo – A instrução especifica o registo ou par de registos onde se encontram os dados 2/12 SISTEMAS DIGITAIS II UNIVERSIDADE DA BEIRA INTERIOR FOLHAS DE APOIO: CONJUNTO DE INSTRUÇÕES DO µP8085 Indirecto através de registo – A instrução especifica um par de registos que contem o endereço de memória onde se localiza o dado (os bits mais significativos do endereço estão no primeiro registo do par e os menos significativos no segundo) Imediato – A própria instrução contem o dado. Pode ser uma quantidade de 8 ou 16 bits (neste caso primeiro o byte menos significativo e segundo o menos significativo) Excepto ser for condicionado por uma interrupção ou instrução de bifurcação, a execução das instruções de um programa desenvolve-se sequencialmente através de posições consecutivamente incrementadas da memória. Uma instrução de bifurcação pode especificar o endereço da próxima instrução a ser executada por um de dois modos: Directo – A instrução de bifurcação contem o endereço da próxima instrução a ser executada (excepto para a instrução RST, o byte 2 contem a parte baixa do endereço e o byte 3 a parte alta) Indirecto através de registo – A instrução de bifurcação indica um par de registos o qual contem o endereço da próxima instrução a ser executada (a parte alta do endereço está no primeiro registo do par e a parte baixa no segundo) A instrução RST é uma instrução especial de chamada a subrotina com apenas um byte (normalmente utilizada em sequências de interrupção). A instrução RST inclui um campo de três bits; o controlo do programa é transferido para a instrução cujo endereço é oito vezes o conteúdo desse campo de três bits. • Flags de condição Há cinco flags de condição associadas à execução das instruções do µP8085: zero (Z), sinal (S), paridade (P), carry (CY) e carry auxiliar (AC). A cada uma dessas flags está associado um flipflop. Fazer o set da flag corresponde a fazer o set do respectivo flip-flop; o reset da flag corresponde ao reset do flip-flop. Caso não seja indicada outra acção, quando uma instrução afecta uma flag, afecta-a da seguinte maneira: Zero se o resultado da execução de uma instrução tem o valor zero, então faz-se o set desta flag; caso contrário, é feito o reset. Sinal se o bit mais significativo do resultado da operação for 1, então faz-se o set desta flag; caso contrário, é feito o reset. Paridade se o resultado da operação tiver paridade par, então faz-se o set desta flag; caso o resultado tenha paridade ímpar, é feito o reset da flag. Carry se da execução da instrução resultar um transporte (carry na adição e borrow na subtracção ou comparação) para além do bit mais significativo, então faz-se o set desta flag; caso contrário, é feito o reset. Carry auxiliar se a execução de uma instrução causou um transporte do bit 3 para o bit 4 do valor resultante, então faz-se o set desta flag; caso contrário, é feito o reset. Esta flag é afectada por adições, subtracções, incrementos, decrementos, comparações e operações lógicas, mas utiliza-se principalmente com adições e incrementos que precedem a instrução DAA (ajuste decimal do acumulador). 3/12 SISTEMAS DIGITAIS II UNIVERSIDADE DA BEIRA INTERIOR FOLHAS DE APOIO: CONJUNTO DE INSTRUÇÕES DO µP8085 • Grupos do conjunto de instruções Grupo de transferência de dados – Promove o movimento de dados entre registos ou entre registos e memória. Inclui movimentos, carregamentos, armazenamentos e trocas. Grupo aritmético – Soma, subtrai, incrementa ou decrementa dados em registos ou memória. Grupo lógico – Faz AND’s, OR’s, XOR’s, comparações, rotações ou complementação de dados em registos ou entre um registo e memória. Grupo de bifurcação – Inicia saltos condicionais ou incondicionais, chamadas a subrotinas, retornos das subrotinas e restarts (reinicializações). Grupo da stack (pilha), I/O e controlo da máquina – Inclui instruções para manutenção da pilha, leitura dos portos de entrada, escrita nos portos de saída, para ajuste e leitura das máscaras de interrupção, e para fazer o set e reset das flags. Em seguida apresentam-se quadros das instruções com as suas mnemónicas, seguindo o formato da linguagem assembly que é processada pelo assembler fornecido para desenvolvimento de sistemas microcomputadores baseados no µP8085. A última coluna destes quadros representa os seguintes tipos de ciclos máquina: Q S R W I O B Busca do código de operação com quatro períodos de relógio (Estados T). Busca do código de operação com seis períodos de relógio (Estados T). Leitura da memória. Escrita na memória. Leitura nos portos de entrada. Escrita nos portos de saída. Bus inactivo. 4/12 SISTEMAS DIGITAIS II UNIVERSIDADE DA BEIRA INTERIOR FOLHAS DE APOIO: CONJUNTO DE INSTRUÇÕES DO µP8085 5/12 SISTEMAS DIGITAIS II UNIVERSIDADE DA BEIRA INTERIOR FOLHAS DE APOIO: CONJUNTO DE INSTRUÇÕES DO µP8085 6/12 SISTEMAS DIGITAIS II UNIVERSIDADE DA BEIRA INTERIOR FOLHAS DE APOIO: CONJUNTO DE INSTRUÇÕES DO µP8085 7/12 SISTEMAS DIGITAIS II UNIVERSIDADE DA BEIRA INTERIOR FOLHAS DE APOIO: CONJUNTO DE INSTRUÇÕES DO µP8085 8/12 SISTEMAS DIGITAIS II UNIVERSIDADE DA BEIRA INTERIOR FOLHAS DE APOIO: CONJUNTO DE INSTRUÇÕES DO µP8085 9/12 SISTEMAS DIGITAIS II UNIVERSIDADE DA BEIRA INTERIOR FOLHAS DE APOIO: CONJUNTO DE INSTRUÇÕES DO µP8085 10/12 SISTEMAS DIGITAIS II UNIVERSIDADE DA BEIRA INTERIOR FOLHAS DE APOIO: CONJUNTO DE INSTRUÇÕES DO µP8085 11/12 SISTEMAS DIGITAIS II UNIVERSIDADE DA BEIRA INTERIOR FOLHAS DE APOIO: CONJUNTO DE INSTRUÇÕES DO µP8085 12/12