0

我的一个朋友得到了 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

4

7 回答 7

4

这是 8080 指令集的指南:http: //www.comsci.us/cpu/8080/isindex.html 您的十六进制列表看起来像指令流;你应该可以从那里去。多么令人愉快的老派!

祝你好运。

于 2010-01-26T21:51:34.000 回答
3

作为参考,这是反汇编:

 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
于 2012-09-12T17:00:06.770 回答
2

你需要拆开它。

也就是说,将十六进制操作码转换为其助记符。

这是一个示例参考

从中可以看出 3E 是“MVI A, d8”,因此看起来 3E 02 将值 02 放入 A 寄存器。

一旦你解码了助记符,你就可以查看它们的实际含义并找出程序。

很容易用手做。

于 2010-01-26T21:54:05.000 回答
2

完整的扰流板

0000h: 3e02 mvi a, 2h ; A = 2
0002h: 4f 移动 c, a ; C = 2  
0003h:c604 adi 4h;A = 6  
0005h: 47 移动 b, a ; B = 6  
0006h:114101 lxi d,141h;DE = 0141h
0009h: 216900 lxi h, 069h ; HL = 69 小时  
000ch: 19 爸爸 d ; HL = 69h + 141h = 1aah  
000 小时:76 小时  
A = 6, B = 6, C = 2, D = 1, E = 41h, H = 1, L = 0aah

一个 8080 在线反汇编程序在这里
8080 在线指令集参考这里

于 2015-07-07T13:30:58.880 回答
1

你不需要运行它——你只需要翻译它。像这样的 8080 个操作码表,10 分钟的工作,你将反汇编代码。然后,您可以在心理上模拟它以得出答案。

于 2010-01-26T21:52:58.043 回答
1

由此判断,您最好的选择是搜索 8080 仿真器并在仿真器上运行它,并从中获得答案。

希望这会有所帮助,最好的问候,汤姆。

于 2010-01-26T21:53:45.390 回答
1
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
于 2014-10-05T08:11:33.233 回答