Esempio n. 1
0
File: bit.cpp Progetto: iver6/BA
BX_INSF_TYPE BX_CPP_AttrRegparmN(1) BX_CPU_C::SETZ_EbM(bxInstruction_c *i)
{
  bx_address eaddr = BX_CPU_CALL_METHODR(i->ResolveModrm, (i));

  Bit8u result_8 = getB_ZF();
  write_virtual_byte(i->seg(), eaddr, result_8);

  BX_NEXT_INSTR(i);
}
Esempio n. 2
0
void
bx_cpu_c::MOV_ObAL(BxInstruction_t *i)
{
    Bit8u  temp_8;
    Bit32u addr_32;

    addr_32 = i->Id;

    /* read from register */
    temp_8 = AL;

    /* write to memory address */
    if (!BX_NULL_SEG_REG(i->seg)) {
        write_virtual_byte(i->seg, addr_32, &temp_8);
    }
    else {
        write_virtual_byte(BX_SEG_REG_DS, addr_32, &temp_8);
    }
}
Esempio n. 3
0
void BX_CPU_C::MOV_EbIb(bxInstruction_c *i)
{
  Bit8u op2 = i->Ib();

  if (i->modC0()) {
    BX_WRITE_8BIT_REGx(i->rm(), i->extend8bitL(), op2);
  }
  else {
    write_virtual_byte(i->seg(), RMAddr(i), &op2);
  }
}
Esempio n. 4
0
void
bx_cpu_c::MOV_EbIb(BxInstruction_t *i)
{
    Bit8u op2;

    op2 = i->Ib;

    /* now write op2 back to destination */
    if (i->mod == 0xc0) {
        BX_WRITE_8BIT_REG(i->rm, op2);
    }
    else {
        write_virtual_byte(i->seg, i->rm_addr, &op2);
    }
}
Esempio n. 5
0
void
bx_cpu_c::MOV_EbGb(BxInstruction_t *i)
{
    Bit8u op2;

    /* op2 is a register, op2_addr is an index of a register */
    op2 = BX_READ_8BIT_REG(i->nnn);

    /* now write op2 to op1 */
    if (i->mod == 0xc0) {
        BX_WRITE_8BIT_REG(i->rm, op2);
    }
    else {
        write_virtual_byte(i->seg, i->rm_addr, &op2);
    }
}
Esempio n. 6
0
void BX_CPU_C::SETNB_Eb(bxInstruction_c *i)
{
  Bit8u result_8;

  if (get_CF()==0)
    result_8 = 1;
  else
    result_8 = 0;

  /* now write result back to destination */
  if (i->modC0()) {
    BX_WRITE_8BIT_REGx(i->rm(), i->extend8bitL(), result_8);
  }
  else {
    write_virtual_byte(i->seg(), RMAddr(i), &result_8);
  }
}
Esempio n. 7
0
  void
bx_cpu_c::SETB_Eb(BxInstruction_t *i)
{
#if BX_CPU_LEVEL < 3
  BX_PANIC(("SETB: not available on < 386"));
#else
  Bit8u result_8;


  if (get_CF())
    result_8 = 1;
  else
    result_8 = 0;

  /* now write result back to destination */
  if (i->mod == 0xc0) {
    BX_WRITE_8BIT_REG(i->rm, result_8);
    }
  else {
    write_virtual_byte(i->seg, i->rm_addr, &result_8);
    }
#endif
}
Esempio n. 8
0
void BX_CPU_C::MOV_OdAL(bxInstruction_c *i)
{
  write_virtual_byte(i->seg(), i->Id(), &AL);
}
Esempio n. 9
0
void BX_CPU_C::MOV_EEbGb(bxInstruction_c *i)
{
  write_virtual_byte(i->seg(), RMAddr(i), &BX_READ_8BIT_REGx(i->nnn(),i->extend8bitL()));
}