EEL7030 - Microprocessadores Prof. Raimes Moraes GpqCom – EEL UFSC
Pilha Região da memória RAM utilizada pelo programador e processador; Pelo programador: armazenar dados temporários; Pelo processador: armazenar endereços e flags qdo da alteração do fluxo de execução do programa (subrotina e interrupção); No 8085, a transferência de dados e endereços para a pilha acontece em par de bytes.
Registradores do 8085
Pilha Programador deve informar o processador sobre área de memória RAM disponível para a pilha, inicializando o registrador Stack Pointer (ponteiro de pilha)*. Exemplo: LXI SP, 20C0H *OBS: Qdo o processador executa sistema operacional, este gerencia a pilha.
Pilha Exemplo de utilização da pilha pelo programador: END. DADO SP-1 20BCH FB [E] 20BDH 4C [D] 20BEH 3F [C] 20BFH 2A [B] SP 20C0H Exemplo de utilização da pilha pelo programador: P U S H D [B] = 2AH ; [C] = 3FH [D] = 4CH ; [E] = FBH SP = 20C0H; P U S H B PUSH B PUSH D
Pilha Exemplo de utilização da pilha pelo programador: POP B POP D END. DADO SP+1 20BCH FB 20BDH 4C 20BEH 3F 20BFH 2A SP 20C0H Exemplo de utilização da pilha pelo programador: P O B POP B POP D P O D [B] = 4CH ; [C] = FBH [D] = 2AH ; [E] = 3FH SP = 20C0H;
Pilha Exemplo de utilização da pilha pelo programador: END. DADO 20BCH FB 20BDH 4C SP-+1 20BEH 06 20BFH SP 20C0H Exemplo de utilização da pilha pelo programador: [A] = 4CH ; [FLAGS] = 06H [B] = 08H ; SP = 20C0H; PUSH PSW MVI A,30H ADD B MOV B,A POP PSW P U S H P O [A] = 4CH ; [FLAGS] = 06H [B] = 38H SP = 20C0H; 7
SUBROTINA Conjunto de instruções para o qual o fluxo de execução do programa é desviado pela instrução: CALL (endereço) A instrução RET faz com que o microprocessador retorne à executar instrução que se segue à chamada da subrotina. CALL Ninst fim do programa Ninst: RET
SUBROTINA CALL Ninst Conjunto de N instruções repetidas CALL Ninst Programa Sem Subrotina Programa Com Subrotina SUBROTINA CALL Ninst Conjunto de N instruções repetidas CALL Ninst Ninst: CALL Ninst RET
SUBROTINA Vantagens: Menor volume de código; Código mais inteligível; Programa Sem Subrotina Programa Com Subrotina SUBROTINA Vantagens: Menor volume de código; Código mais inteligível; Desvantagem: Menor velocidade de execução CALL Ninst CALL Ninst Ninst: RET CALL Ninst
SUBROTINA Exemplo END. CÓDIGO 200A CALL 2028H 200D MOV A,B 1 Salva atual PC (200Dh) na pilha. (O PC é atualizado ao obter o código da instrução CALL); 2 Sobrescreve PC com endereço da subrotina; (PC = 2028H) 3 Executa subrotina; 4 Retorna à instrução que se segue ao CALL no programa principal (instrução RET retira endereço da pilha (incrementando SP) e sobrescreve PC). PILHA END. DADO SP-1 20BEH 0DH [PC LSB] 20BFH 20H [PC MSB] SP 20C0H
Subrotina modifica Regs cujo conteúdo se quer preservar? PILHA END. DADO SP+1 20CCH FB [E] 20CDH 4C [D] 20CEH C7 [Flg] 20CFH 4C [A] SP 20D0H Subrotina modifica Regs cujo conteúdo se quer preservar? P U S H D LXI SP,20D0H PUSH PSW PUSH D CALL 1234H POP D POP PSW P U S H PSW [A] = 4CH ; [Flg] = C7H [D] = 2AH ; [E] = 3FH SP = 20C0H;
Diagrama de Blocos Kit Telemática
Instruções para acesso a dispositivos de entrada e saída IN (end.): conteúdo do endereço especificado pela instrução é carregado no acumulador; OUT (end.): conteúdo do acumulador carregado no registrador do endereço especificado; OBS: end.: 00 a FFH
Pino IO/M
8 1 5
Registrador de controle do 8155 (20H)
Endereço de Acesso a Registradores do 8155
Endereço de Acesso a Registradores do 8155 no kit telemática e Abacus COMMAND 20H CHAVES (PORTA A) 21H LEDS (PORTA B) 22 H