Кто-нибудь может решить эту загадку 8080 кода сборки?
Моему другу дали код сборки 8080 как часть головоломки, которую он пытается разгадать. Это код:
3E 02
4F
C6 04
47
11 41 01
21 69 00
19
76
Ему нужны значения B, DE, C и HL
Может кто-нибудь решить это или указать мне в правильном направлении, как запустить это?
Обновить
Спойлер: Решением, похоже, является:
C = 02, B = 06, D = 01, E = 41, H = 01, L = AA
7 ответов
Вот руководство к набору инструкций 8080: http://www.comsci.us/cpu/8080/isindex.html Ваш шестнадцатеричный список выглядит как поток инструкций; Вы должны быть в состоянии пойти оттуда. Как восхитительно старая школа!
Удачи.
Для справки вот разборка:
3E 02 mvi a, 2 ; Move o1 <- immediate data
4F mov c, a ; Move o1 <- o2
C6 04 adi 4 ; Add immediate to A
47 mov b, a ; Move o1 <- o2
11 41 01 lxi d, 141h ; Load register pair with immediate data
21 69 00 lxi h, 69h ; Load register pair with immediate data
19 dad d ; Add register pair to HL
76 hlt ; Halt
Полный спойлер
0000h: 3e02 mvi a, 2h; A = 20002h: 4f mov c, a; C = 20003h: c604 ади 4ч; A = 60005h: 47 мов б, а; B = 60006h: 114101 lxi d, 141h; DE = 0141h0009 ч: 216900 лкси ч, 069 ч; HL = 69 ч000ch: 19 папа д; HL = 69 ч + 141 ч = 1 ч000dh: 76 hltA = 6, B = 6, C = 2, D = 1, E = 41 ч, H = 1, L = 0 ч.
Онлайн дизассемблер 8080 здесь.
Ссылка на набор онлайн-инструкций 8080 здесь.
Вам нужно разобрать его.
То есть преобразовать шестнадцатеричные коды операций в их мнемонику.
Вот пример ссылки.
Из этого видно, что 3E - это "MVI A, d8", так что, похоже, 3E 02 помещает значение 02 в регистр A.
После того, как вы расшифровали мнемонику, вы можете посмотреть, что они на самом деле означают, и выяснить программу.
Достаточно легко сделать вручную.
3E 02 ;mvi a, 02h -- load A with 02h
4F ;mov c,a -- move A into C (A remains 02h)
C6 04 ;adi 04h -- a = a + 04h (A now contains 06h)
47 ;mov b,a -- BC pair now contains 0602h
11 41 01 ;lxi d, 0414h -- DE now contains 0141h
21 69 00 ;lxi h, 0069h -- HL now contains 0069h
19 ;dad d -- HL = HL + DE
76 ;hlt -- halt processing
Судя по этому, вам лучше всего выполнить поиск эмулятора 8080, запустить его на эмуляторе и получить от него ответ.
Надеюсь, это поможет, С наилучшими пожеланиями, Том.
Вам не нужно запускать его - вам просто нужно перевести его. Таблица из 8080 кодов операций, как это, работает 10 минут, и вы разберете код. Затем вы можете смоделировать это мысленно, чтобы выработать ответ.