301 uint32_t address,
const uint8_t* data, std::string& mnemonic,
302 std::string& operand_str, std::vector<uint8_t>& operands) {
303 uint8_t opcode = data[0];
308 mnemonic = absl::StrFormat(
"DB $%02X", opcode);
322 for (uint8_t i = 1; i < size; ++i) {
323 operands.push_back(data[i]);
376 const std::vector<uint8_t>& operands)
const {
383 if (operands.size() == 1) {
384 return absl::StrFormat(
"#$%02X", operands[0]);
385 }
else if (operands.size() == 2) {
386 return absl::StrFormat(
"#$%04X", operands[0] | (operands[1] << 8));
392 if (operands.size() == 1) {
393 return absl::StrFormat(
"#$%02X", operands[0]);
394 }
else if (operands.size() == 2) {
395 return absl::StrFormat(
"#$%04X", operands[0] | (operands[1] << 8));
400 if (operands.size() == 2) {
401 return absl::StrFormat(
"$%04X", operands[0] | (operands[1] << 8));
406 if (operands.size() == 3) {
407 return absl::StrFormat(
"$%02X%04X", operands[2],
408 operands[0] | (operands[1] << 8));
413 if (operands.size() == 2) {
414 return absl::StrFormat(
"$%04X,X", operands[0] | (operands[1] << 8));
419 if (operands.size() == 3) {
420 return absl::StrFormat(
"$%02X%04X,X", operands[2],
421 operands[0] | (operands[1] << 8));
426 if (operands.size() == 2) {
427 return absl::StrFormat(
"$%04X,Y", operands[0] | (operands[1] << 8));
432 if (operands.size() == 1) {
433 return absl::StrFormat(
"$%02X", operands[0]);
438 if (operands.size() == 1) {
439 return absl::StrFormat(
"$%02X,X", operands[0]);
444 if (operands.size() == 1) {
445 return absl::StrFormat(
"$%02X,Y", operands[0]);
450 if (operands.size() == 1) {
451 return absl::StrFormat(
"($%02X)", operands[0]);
452 }
else if (operands.size() == 2) {
453 return absl::StrFormat(
"($%04X)", operands[0] | (operands[1] << 8));
458 if (operands.size() == 1) {
459 return absl::StrFormat(
"($%02X,X)", operands[0]);
464 if (operands.size() == 1) {
465 return absl::StrFormat(
"($%02X),Y", operands[0]);
470 if (operands.size() == 1) {
471 return absl::StrFormat(
"[$%02X]", operands[0]);
476 if (operands.size() == 1) {
477 return absl::StrFormat(
"[$%02X],Y", operands[0]);
482 if (operands.size() == 1) {
483 return absl::StrFormat(
"$%02X,S", operands[0]);
488 if (operands.size() == 1) {
489 return absl::StrFormat(
"($%02X,S),Y", operands[0]);
494 if (operands.size() == 1) {
495 int8_t offset =
static_cast<int8_t
>(operands[0]);
496 uint32_t target = address + 2 + offset;
497 return absl::StrFormat(
"$%04X", target & 0xFFFF);
502 if (operands.size() == 2) {
503 int16_t offset =
static_cast<int16_t
>(operands[0] | (operands[1] << 8));
504 uint32_t target = address + 3 + offset;
505 return absl::StrFormat(
"$%04X", target & 0xFFFF);
510 if (operands.size() == 2) {
511 return absl::StrFormat(
"$%02X,$%02X", operands[1], operands[0]);