Prova de Sistemas Microprogramados 2017-01 Simulado Prova P2 NOME: Utilize o programa fonte em linguagem assembly abaixo para responder as questões seguintes. 01 #INCLUDE <P16F628A.INC> 02 CONFIG _BOREN_OFF & _CP_OFF & _PWRTE_ON & _WDT_OFF 03 TEMP EQU 0X20 04 ENTRADA EQU 0X21 05 SAIDA EQU 0X22 06 VETOR_DE_RESET CODE 0x0000 07 ORG 0x0000 08 GOTO INICIO 09 VETOR_DE_INTERRUPCAO 10 ORG 0x0004 11 RETFIE 12 INICIALIZA 13 MOVLW 0x03 14 MOVWF TEMP 15 MOVLW 0x10 16 MOVWF ENTRADA 17 MOVWF SAIDA 18 RETURN 19 CALCULOS 20 CALL INICIALIZA 21 INCF TEMP,W 22 ADDWF ENTRADA,W 23 MOVWF SAIDA 24 INCF SAIDA,F 25 RETURN 26 INICIO 27 CALL CALCULOS 28 GOTO INICIO 29 END 1) Após a compilação deste programa qual será a instrução armazenada no endereço 15 (0x0F) de memória de programa (Flash do PIC)? Indique a alternativa que descreve a linha do programa fonte e a instrução corretamente. a) 24 INCF SAIDA,F b) 25 RETURN c) 27 CALL CALCULOS d) 28 GOTO INICIO e) Nenhuma das alternativas está correta
2) A respeito dos registradores de propósito geral 0x20, 0x21, 0x22 e do registrador W foram feitas as seguintes afirmativas sobre seus valores imediatamente após execução da linha 25 RETURN? I. O registrador 0x20 possui o valor 0x03 II. III. IV. O registrador 0x21 possui o valor 0x10 O registrador 0x22 possui o valor 0x15 O registrador W possui o valor 0x14 Agora indique qual a resposta correta: a) Todas as afirmativas estão correta. b) Nenhuma das afirmativas está correta. c) Apenas uma está correta. d) Apenas duas estão corretas. e) Apenas três estão corretas. 3) Sabe-se que o PIC16F628A possui uma estrutura de pilha circular de 8 posições para o tratamento de sub-rotinas. A respeito de como as sub-rotinas estão organizadas neste programa, foram feitas as afirmativas abaixo: a) O programa poderá provocar o estouro desta pilha uma vez que sua lógica não impede que sub-rotinas sejam invocadas mais de 8 (oito) vezes. b) O programa poderá provocar o estouro da pilha porque não há tratamento adequado do retorno. c) O programa não causará estouro da pilha, pois a forma como as chamadas de sub-rotinas estão organizadas só ocupará no máximo 2 posições da pilha. d) O programa não causará estouro da pilha, pois se trata de uma pilha circular e desta forma não depente da forma como as chamadas de sub-rotinas estão organizadas. e) Nenhuma das alternativas está correta. 4) A instrução 23 MOVWF SAIDA atualizará dados em qual dos bancos de e) Hora o banco 0 hora o banco 2.
5) Veja o trecho de programa assembly do PIC16F628A com as instruções abaixo: BCF STATUS, RP0 BSF STATUS, RP1 MOVLW 0xB5 MOVWF 0x20 Indique em qual banco de memória será gravado o valor 0xB5. a) Na posição 0x20 do Banco 0. b) Na posição 0x20 do Banco 1. c) Na posição 0x20 do Banco 2. d) Na posição 0x20 do Banco 3. e) Nenhuma das alternativas, pois o valor é gravado apenas no registrador W que não pertence a nenhum dos 4 bancos. 6) Converta as instruções que você encontrar no programa fonte em linguagem assembly da linha 22 até a linha 25 para linguagem de máquina. Em cada instrução convertida para linguagem de máquina preencha a tabela abaixo: Linha 22 23 24 25 Código Fonte Assembly Endereço Mem. Prog. Instrução em linguagem de máquina Instrução Hexadecimal Instrução Traduzida Dec. Hexa. Binário ADDWF 0x21, 0 13 0x0D 00011100100001 0x0721 ADDWF ENTRADA,W MOVWF SAIDA INCF SAIDA,F RETURN
Utilize o programa fonte em linguagem assembly abaixo para responder as questões seguintes. 01 #INCLUDE <P16F628A.INC> 02 CONFIG _BOREN_OFF & _CP_OFF & _PWRTE_ON & _WDT_OFF 03 VERDE EQU 0X20 04 AMARELO EQU 0X21 05 VERMELHO EQU 0X22 06 VETOR_DE_RESET CODE 0x0000 07 ORG 0x0000 08 CALL LIMPEZA 09 BSF STATUS, RP0 10 CALL LIMPEZA 11 GOTO INICIO 12 VETOR_DE_INTERRUPCAO 13 ORG 0x0004 14 RETFIE 15 LIMPEZA 16 CLEARF VERDE 17 CLEARF AMARELO 18 CLEARF VERMELHO 19 RETURN 20 GRUPO1 21 BSF STATUS, RP0 22 MOVLW 0xAA 23 MOVWF VERDE 24 MOVLW 0xBB 25 MOVWF AMARELO 26 BCF STATUS, RP0 27 RETURN 28 GRUPO2 29 BCF STATUS, RP0 30 MOVWF VERMELHO 31 RETURN 32 INICIO 33 CALL GRUPO1 34 CALL GRUPO2 35 GOTO INICIO 36 END 7) Após a compilação deste programa qual será a instrução armazenada no endereço 20 (0x14) de memória de programa (Flash do PIC)? Indique a alternativa que descreve a linha do programa fonte e a instrução corretamente. a) 31 RETURN b) 32 INICIO c) 33 CALL GRUPO1 d) 34 CALL GRUPO2 e) Nenhuma das alternativas está correta
8) A instrução 16 CLEARF VERDE atualizará dados em qual dos bancos de e) Hora o banco 0 hora o banco 1. 9) A instrução 30 MOVWF VERMELHO atualizará dados em qual dos bancos de e) Hora o banco 0 hora o banco 1. 10) Converta as instruções que você encontrar no programa fonte em linguagem assembly da linha 21 até a linha 24 para linguagem de máquina. Em cada instrução convertida para linguagem de máquina preencha a tabela abaixo: Código Fonte Assembly Endereço Mem. Prog. Instrução em linguagem de máquina Linha Instrução Instrução Traduzida Dec. Hexa. Binário Hexadecimal 21 BSF STATUS, RP0 BSF 0x03, 5 09 0x09 01011010000011 0x1683 22 MOVLW 0xAA 23 MOVWF VERDE 24 MOVLW 0xBB