我的一位朋友获得了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
答案 0 :(得分:3)
以下是8080指令集的指南: http://www.comsci.us/cpu/8080/isindex.html 您的十六进制列表看起来像一个指令流;你应该可以从那里去。老学校多么令人愉快!
祝你好运。答案 1 :(得分:2)
你需要拆卸它。
即,将十六进制操作码转换为其助记符。
以下是reference的示例。
你可以从中看到3E是“MVI A,d8”,所以看起来像3E 02将值02放入A寄存器。
解码助记符后,您可以查看它们的实际含义并找出程序。
手工操作很容易。
答案 2 :(得分:2)
作为参考,这里是反汇编:
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
答案 3 :(得分:1)
据此判断,您最好的选择是搜索8080模拟器并对模拟器运行,并从中获得答案。
希望这有帮助, 最好的祝福, 汤姆。
答案 4 :(得分:1)
完整剧透
0000h: 3e02 mvi a, 2h ; A = 20002h: 4f mov c, a ; C = 20003h: c604 adi 4h ; A = 60005h: 47 mov b, a ; B = 60006h: 114101 lxi d, 141h ; DE = 0141h0009h: 216900 lxi h, 069h ; HL = 69h000ch: 19 dad d ; HL = 69h + 141h = 1aah000dh: 76 hltA = 6,B = 6,C = 2,D = 1,E = 41h,H = 1,L = 0aah
答案 5 :(得分:0)
您无需运行它 - 您只需要翻译它。一个包含8080个操作码like this的表,10分钟工作,您将对代码进行反汇编。然后,您可以在心理上模拟它以找出答案。
答案 6 :(得分:0)
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