Forum

Z PMD 85 Infoserver

:: späť na začiatok témy :: späť na zoznam tém ::
Správa
Autor  Autor ::  Roman Bórik
Poslaná  Poslaná ::  14.07.2009 09:07:39
Predmet  Predmet ::  Re: Popis instrukci
Tabuľka pre DAA je tiež dopredu vygenerovaná a v kóde je ako pole wordov:

// Tabulka pre instrukciu DAA.
// bity 7:0 indexu predstavuju hodnotu z A pred vykonanim DAA
// bit 8 indexu je CY pred vykonanim DAA
// bit 9 indexu je AC pred vykonanim DAA
// vyssi byte hodnoty predstavuje hodnotu A po vykonani DAA
// nizsi byte hodnoty predstavuje nastavenie priznakov (F) po vykonani DAA
//
// Tabulka bola vytvorena nasledujucim algoritmom
/*
  int ii;
  WORD af;
  BYTE byte;

  for (ii = 0; ii < 0x400; ii++) {
    byte = (ii & 0xFF);
    af = 0;
    if ((ii & 0x200) || (byte & 0x0F) > 9) { // AC
      if ((byte & 0x0F) > 9)
        af |= FLAG_AC;
      byte += 6;
    }
    if ((ii & 0x100) || (byte & 0xF0) > 0x90) { // CY
      byte += 0x60;
      af |= FLAG_CY;
    }
    af |= ((byte << 8) | sz53p1Table[byte]);

    daaTable[ii] = af;
  }
*/
WORD ChipCpu8080::daaTable[0x400] = { ... };

Pochopiteľne, jednotlivé inštrukcie sú spracovávané osobitne a predošlé tabuľky sú používané pre spoločné "vlastnosti".
:: späť na začiatok témy :: späť na zoznam tém ::