314 uint32_t address,
const uint8_t* data, std::string& mnemonic,
315 std::string& operand_str, std::vector<uint8_t>& operands) {
316 uint8_t opcode = data[0];
321 mnemonic = absl::StrFormat(
"DB $%02X", opcode);
335 for (uint8_t i = 1; i < size; ++i) {
336 operands.push_back(data[i]);
391 const std::vector<uint8_t>& operands)
const {
398 if (operands.size() == 1) {
399 return absl::StrFormat(
"#$%02X", operands[0]);
400 }
else if (operands.size() == 2) {
401 return absl::StrFormat(
"#$%04X", operands[0] | (operands[1] << 8));
407 if (operands.size() == 1) {
408 return absl::StrFormat(
"#$%02X", operands[0]);
409 }
else if (operands.size() == 2) {
410 return absl::StrFormat(
"#$%04X", operands[0] | (operands[1] << 8));
415 if (operands.size() == 2) {
416 return absl::StrFormat(
"$%04X", operands[0] | (operands[1] << 8));
421 if (operands.size() == 3) {
422 return absl::StrFormat(
"$%02X%04X", operands[2],
423 operands[0] | (operands[1] << 8));
428 if (operands.size() == 2) {
429 return absl::StrFormat(
"$%04X,X", operands[0] | (operands[1] << 8));
434 if (operands.size() == 3) {
435 return absl::StrFormat(
"$%02X%04X,X", operands[2],
436 operands[0] | (operands[1] << 8));
441 if (operands.size() == 2) {
442 return absl::StrFormat(
"$%04X,Y", operands[0] | (operands[1] << 8));
447 if (operands.size() == 1) {
448 return absl::StrFormat(
"$%02X", operands[0]);
453 if (operands.size() == 1) {
454 return absl::StrFormat(
"$%02X,X", operands[0]);
459 if (operands.size() == 1) {
460 return absl::StrFormat(
"$%02X,Y", operands[0]);
465 if (operands.size() == 1) {
466 return absl::StrFormat(
"($%02X)", operands[0]);
467 }
else if (operands.size() == 2) {
468 return absl::StrFormat(
"($%04X)", operands[0] | (operands[1] << 8));
473 if (operands.size() == 1) {
474 return absl::StrFormat(
"($%02X,X)", operands[0]);
479 if (operands.size() == 1) {
480 return absl::StrFormat(
"($%02X),Y", operands[0]);
485 if (operands.size() == 1) {
486 return absl::StrFormat(
"[$%02X]", operands[0]);
491 if (operands.size() == 1) {
492 return absl::StrFormat(
"[$%02X],Y", operands[0]);
497 if (operands.size() == 1) {
498 return absl::StrFormat(
"$%02X,S", operands[0]);
503 if (operands.size() == 1) {
504 return absl::StrFormat(
"($%02X,S),Y", operands[0]);
509 if (operands.size() == 1) {
510 int8_t offset =
static_cast<int8_t
>(operands[0]);
511 uint32_t target = address + 2 + offset;
512 return absl::StrFormat(
"$%04X", target & 0xFFFF);
517 if (operands.size() == 2) {
518 int16_t offset =
static_cast<int16_t
>(operands[0] | (operands[1] << 8));
519 uint32_t target = address + 3 + offset;
520 return absl::StrFormat(
"$%04X", target & 0xFFFF);
525 if (operands.size() == 2) {
526 return absl::StrFormat(
"$%02X,$%02X", operands[1], operands[0]);