/**
   * Nessa classe eu simplesmente seto um valor para cada condição lógica (0 ou 0; 0 ou 1; 1 ou 1; 1
   * ou 0) e verifico se a saida é a esperada, caso não for eu boto como teste falho
   */
  @Test
  public void testeIORLW() {

    Memoria mem = new Memoria();
    CPU cpu = new CPU();

    mem.set(15, (byte) 0x00);

    cpu.setW((byte) 0x00);
    Instrucao i1 = new IORLW();
    i1.setup("000100001111");

    i1.run(mem, cpu);

    // Passando 0 e 0
    if (cpu.getW() == (byte) 0x01) {
      fail("Erro na 1° instrucao, esperado: 0, obtido: " + cpu.getW());
    }

    mem.set(15, (byte) 0x01);

    cpu.setW((byte) 0x00);
    Instrucao i2 = new IORLW();
    i2.setup("000000000001");

    i2.run(mem, cpu);

    // Passando 0 e 1
    if (cpu.getW() != (byte) 0x01) {
      fail("Erro na 2° instrucao, esperado: 1, obtido: " + cpu.getW());
    }

    mem.set(15, (byte) 0x01);

    cpu.setW((byte) 0x01);
    Instrucao i3 = new IORLW();
    i3.setup("000100001111");

    i3.run(mem, cpu);

    // Passando 1 e 1
    if (cpu.getW() != (byte) 0x0f) {
      fail("Erro na 3° instrucao, esperado: 1, obtido: " + cpu.getW());
    }

    mem.set(15, (byte) 0x00);

    cpu.setW((byte) 0x01);
    Instrucao i4 = new IORLW();
    i4.setup("000000000001");

    i4.run(mem, cpu);

    // Passando 0 e 1
    if (cpu.getW() != (byte) 0x01) {
      fail("Erro na 4° instrucao, esperado: 1, obtido: " + cpu.getW());
    }
  }
示例#2
0
  /**
   * * O registrador 'W' é carregado em um literal 'k' de 8 bits
   *
   * @param mem memória a ser alterada
   * @param cpu serve para usar os registradores do processador
   */
  public void run(Memoria mem, CPU cpu) {
    cpu.setW((byte) this.k);

    /** * e depois a Instrução volta o PCL pro inicio da pilha (setando o PCL como zero) */
    mem.setPCL((byte) (0));
  }