| 405 | } |
| 406 | |
| 407 | void aas(CPU* cpu) { |
| 408 | cpu->lazyFlagType=FLAGS_NONE; |
| 409 | if ((AL & 0x0f)>9) { |
| 410 | cpu->setSF(AL>0x85); |
| 411 | AX -= 0x106; |
| 412 | cpu->removeOF(); |
| 413 | cpu->addCF(); |
| 414 | cpu->addAF(); |
| 415 | } else if (cpu->getAF()) { |
| 416 | cpu->setOF((AL>=0x80) && (AL<=0x85)); |
| 417 | cpu->setSF((AL<0x06) || (AL>0x85)); |
| 418 | AX -= 0x106; |
| 419 | cpu->addCF(); |
| 420 | cpu->addAF(); |
| 421 | } else { |
| 422 | cpu->setSF(AL>=0x80); |
| 423 | cpu->removeOF(); |
| 424 | cpu->removeCF(); |
| 425 | cpu->removeAF(); |
| 426 | } |
| 427 | cpu->setZF(AL == 0); |
| 428 | cpu->setPFonValue(AL); |
| 429 | AL &= 0x0F; |
| 430 | } |
| 431 | |
| 432 | void aad(CPU* cpu, U32 value) { |
| 433 | AL = AH * value + AL; |