Кто-нибудь может решить эту загадку 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 = 2 
 0002h: 4f mov c, a; C = 2 
 0003h: c604 ади 4ч; A = 6 
 0005h: 47 мов б, а; B = 6 
 0006h: 114101 lxi d, 141h; DE = 0141h 
 0009 ч: 216900 лкси ч, 069 ч; HL = 69 ч 
 000ch: 19 папа д; HL = 69 ч + 141 ч = 1 ч 
 000dh: 76 hlt 
A = 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 минут, и вы разберете код. Затем вы можете смоделировать это мысленно, чтобы выработать ответ.

Другие вопросы по тегам