diff --git a/MEPA b/MEPA
index 0ec3c42a665241694a37dad35ee29c209d9d6278..1e347b2094fc5d6c126922d71cfef9b7b9c8d04c 100644
--- a/MEPA
+++ b/MEPA
@@ -5,14 +5,11 @@ R01: ENPR 1
      AMEM 1
      DSVS R02
 R02: NADA 
-     CRVL 1,-5
      ARMZ 1,0
      DMEM 1
 R00: NADA 
      CRCT 8
      ARMZ 0,0
-     CRVL 0,0
-     CRCT 2
      CHPR R01,0
      DMEM 0
      PARA
diff --git a/compilador.y b/compilador.y
index 566bdbb6367c30e619242a3d2facb8c1ebd3c710..028be4367f7bd50a4a51cd8accbbad82ad290f78 100644
--- a/compilador.y
+++ b/compilador.y
@@ -273,6 +273,7 @@ chamada_procedimento:
                   // Gera código para chamar o procedimento
                   empilha(l_elem->ident, proc);
                }
+               num_param = 0; // Reinicia a contagem de parâmetros reais   
             }
 
             lista_parametros
@@ -283,6 +284,16 @@ chamada_procedimento:
                mostra_ts(ts);
                desempilha(buffer, proc);
                l_elem = busca(buffer, ts);
+
+               // Verifica se o número de parâmetros reais bate com os formais
+               if (num_param != l_elem->info.pr.quant) {
+                  char error_msg[100];
+                  sprintf(error_msg, "Erro: número de parâmetros incorreto. Esperado: %d, recebido: %d.",
+                           l_elem->info.pr.quant, num_param);
+                  yyerror(error_msg);
+               }
+
+               // Gera o código de chamada do procedimento
                sprintf(buffer, "CHPR %s,%d", l_elem->info.pr.rot, nivel_lexico);
                geraCodigo(NULL, buffer);
             }
@@ -295,7 +306,13 @@ lista_parametros: ABRE_PARENTESES
 ;
 
 lista_parametros_parenteses: lista_parametros_parenteses VIRGULA expressao_simples
+               {
+                  num_param++; // Incrementa para cada parâmetro real
+               }
                | expressao_simples
+               {
+                  num_param++; // Conta o primeiro parâmetro real
+               }
 ;
 
 leitura: READ ABRE_PARENTESES lista_leituras FECHA_PARENTESES
diff --git a/teste7.pas b/teste7.pas
index 2b0fec6d8cff0addd0f5313f079560c981579aec..c3801a15d8d85f1eb240a035c2bf5f35a565e745 100644
--- a/teste7.pas
+++ b/teste7.pas
@@ -1,10 +1,11 @@
 program proc1 (input, output);
     var x: integer;
-    procedure p(a,b: integer; c:boolean);
+    procedure p;
     var z: integer;
     begin
         z := a;
     end;
 begin
     x := 8;
+    p;
 end.
\ No newline at end of file