Domanda

Un mio amico è stato dato 8080 codice assembly come parte di un puzzle che sta cercando di risolvere. Questo è il codice:

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

Ha bisogno di valori di B, DE, C e HL

Qualcuno può risolvere questo o indicarlo nella giusta direzione su come eseguire questo?

Aggiorna

Spoiler: La soluzione sembra essere:

  

C = 02, B = 06, D = 01, E = 41, H = 01, L = AA

È stato utile?

Soluzione

Ecco una guida al set di istruzioni 8080: http://www.comsci.us/cpu/8080/isindex.html Il vostro elenco esagonale si presenta come un flusso di istruzioni; si dovrebbe essere in grado di passare da lì. Come deliziosamente old-school!

In bocca al lupo.

Altri suggerimenti

Per avere un riferimento, ecco lo smontaggio:

 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

È necessario smontarlo.

Cioè, convertire i codici hex op ai loro mnemonica.

Ecco un esempio riferimento .

Si può vedere da questo che 3E è "MVI A, D8", in modo che assomiglia 3E 02 sta mettendo il valore 02 per registro A.

Una volta decodificato il mnemonici, è possibile cercare ciò che realmente significa e capire il programma.

abbastanza facile da fare a mano.

spoiler completo

  

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

Un 8080 disassembler linea qui .
Un set di riferimento 8080 di istruzioni in linea qui .

Non è necessario per farlo funzionare - solo bisogno di tradurlo. Una tabella di 8080 codici operativi come questo , a 10 minuti di lavoro e si dovrà smontato il codice. È quindi possibile simulare mentalmente a lavorare fuori la risposta.

A giudicare da questo, la soluzione migliore sarebbe quella di fare una ricerca per un 8080 emulatore e lanciarlo contro l'emulatore, e ottenere la risposta da esso.

Spero che questo aiuti, I migliori saluti, Tom.

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top