Implementação de ula (unidade lógica e aritmética) na linguagem pascal
procedure debug(msg : string; nivel: integer); begin if nivel >= nivelDebug then writeln('DEBUG: ', msg); end; function potencia(base: integer; expoente: integer): integer; var i : integer; tempValor : integer; begin tempValor := base; if expoente = 0 then tempValor := 1 else begin expoente := expoente - 1; for i := 1 to expoente do begin tempValor := tempValor * base; end; end; return tempValor; end; procedure inicializa(); var strMaxPositiveDec : string; strMinPositiveDec : string; begin tamanhoBinario := 8; nivelDebug := 10; debug('Inicializando ULA', 1); maxPositiveDec := potencia(2, (tamanhoBinario)) -1; Str(maxPositiveDec, strMaxPositiveDec); minPositiveDec := (potencia(2, (tamanhoBinario)) -1) * -1; Str(minPositiveDec, strMinPositiveDec); FLAG_RESULTADO_POSITIVO := '000'; FLAG_RESULTADO_NEGATIVO := '001'; FLAG_OVERFLOW_POSITIVO := '010'; FLAG_OVERFLOW_NEGATIVO := '011'; FLAG_BINARIO_INVALIDO := '100'; FLAG_OPCAO_INVALIDA := '101'; FLAG_OPERACAO_INVALIDA := '110'; FLAG_OPERACAO_NAO_DEFINIDA := '111'; operacao := ''; debug('Maior Decimal Positivo: ' + strMaxPositiveDec, 1);