私の友人は、解決しようとしているパズルの一部として 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
私の友人は、解決しようとしているパズルの一部として 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
8080 命令セットのガイドは次のとおりです 。 http://www.comsci.us/cpu/8080/isindex.html 16 進リストは命令ストリームのように見えます。そこから行けるはずです。なんて楽しいオールドスクールでしょう!
幸運を。
参考までに、分解図は次のとおりです。
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
あなたはそれを分解する必要があります。
つまり、16進演算コードをニーモニックに変換します。
これがリファレンスの例です。
このことから、3Eは「MVI A、d8」であることがわかります。これは、3E02が値02をAレジスタに入れているように見えます。
ニーモニックをデコードしたら、それらが実際に何を意味するのかを調べて、プログラムを理解することができます。
手で行うのに十分簡単です。
完全なスポイラー
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 お父さんd; HL = 69h + 141h = 1aah000dh: 76hltA = 6、B = 6、C = 2、D = 1、E = 41h、H = 1、L = 0aah
あなたはそれを実行する必要はありません-あなたはそれを翻訳する必要があります。このような8080オペコードのテーブルは10分で動作し、コードを分解します。次に、それを精神的にシミュレートして、答えを導き出すことができます。
これから判断すると、8080エミュレーターを検索し、エミュレーターに対して実行して、そこから回答を得るのが最善の策です。
これがお役に立てば幸いです、よろしく、トム。
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