Может ли кто-нибудь решить эту загадку 8080 кода сборки? - PullRequest
0 голосов
/ 27 января 2010

Мой друг получил код сборки 8080 как часть головоломки, которую он пытается решить.Это код:

3E 02
4F
C6 04
47
11 41 01
21 69 00
19
76

Ему нужны значения B, DE, C и HL

Может кто-нибудь решить это или направить меня в правильном направлении, как запустить это?

Обновление

Спойлер: Решение выглядит следующим образом:

Ответы [ 7 ]

4 голосов
/ 27 января 2010

Вот руководство к набору инструкций 8080: http://www.comsci.us/cpu/8080/isindex.html Ваш шестнадцатеричный список выглядит как поток инструкций; Вы должны быть в состоянии пойти оттуда. Как восхитительно старая школа!

Удачи.

3 голосов
/ 12 сентября 2012

Для справки вот разборка:

 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
2 голосов
/ 07 июля 2015

Полный спойлер

Онлайн-дизассемблер 8080 здесь .
Ссылка на онлайн-набор инструкций 8080 здесь .

2 голосов
/ 27 января 2010

Вам нужно разобрать его.

То есть преобразовать шестнадцатеричные коды операций в их мнемонику.

Вот пример ссылка .

Из этого видно, что 3E - это "MVI A, d8", так что, похоже, 3E 02 помещает значение 02 в регистр A.

После того, как вы расшифровали мнемонику, вы можете посмотреть, что они на самом деле означают, и выяснить программу.

Достаточно легко сделать вручную.

1 голос
/ 05 октября 2014
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
1 голос
/ 27 января 2010

Судя по этому, вам лучше всего будет выполнить поиск эмулятора 8080, запустить его против эмулятора и получить от него ответ.

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

1 голос
/ 27 января 2010

Вам не нужно запускать его - вам просто нужно перевести его. Таблица из 8080 кодов операций примерно так , 10 минут работают, и вы разберете код. Затем вы можете смоделировать это мысленно, чтобы выработать ответ.

...