ASM z HEX
Moderátor: Moderátoři
ASM z HEX
Je nejaká rozumná možnosť preložiť HEX kód z ROM do Asembleru? Je to asi 50kB pre procesor MC68HC16Z1. Aspoň nejakú úvodnú inicializačnú sekvenciu. Potrebujem zistiť, čo všetko si to zariadenie pri inicializácií kontroluje, aby som vedel hľadať chybu, prečo to zariadenie nenabehne.
https://www.nxp.com/docs/en/product-bri ... 16Z1TS.pdf
https://www.nxp.com/docs/en/product-bri ... 16Z1TS.pdf
- Přílohy
-
- ROM.zip
- (20.26 KiB) Staženo 1237 x
-
- Příspěvky: 2551
- Registrován: 13 zář 2005, 02:00
No myslím si, že tohle není HEX z procesoru, resp. pro jeho naprogramování. BIN soubory jsou standardně image nějaké paměti, kde je nejen vlastní program, ale i různá nastavení.
HEX třeba pro PIC vypadá třeba takto. Je pak samozřejmě přeložitelný zpět do ASM, i když bez dobré znalosti assembleru je to neskutečná pakárna se v tom vyznat. Všechny proměnné jsou nahrazeny čísly registrů apod. I jednoduchý příklad ve vyšším jazyku má poměrně složité vyjádření v ASM.
PF
HEX třeba pro PIC vypadá třeba takto. Je pak samozřejmě přeložitelný zpět do ASM, i když bez dobré znalosti assembleru je to neskutečná pakárna se v tom vyznat. Všechny proměnné jsou nahrazeny čísly registrů apod. I jednoduchý příklad ve vyšším jazyku má poměrně složité vyjádření v ASM.
PF
Nie je to originál BIN, asi som to nevhodne pomenoval. Je to cez Arduino načítaný obsah M29F040B.
Ale už to začína dávať zmysel. Najprv som nechápal, čo znamenajú tie čísla na adrese 0. Takže po reštarte to ide na asresu 408 a pri nejakom inom blbom prerušení na adresu 400. Na 408 z toho zatiaľ lezú normálne inštrukcie. Na 400 je NOP a potom nejaké nezmysly? Už sa teším, jak sa do toho zahryznem cez dlhé zimné večery. Lepšie jak krýžovky, či sudoku.![Smile :)](./images/smilies/icon_smile.gif)
Ale už to začína dávať zmysel. Najprv som nechápal, čo znamenajú tie čísla na adrese 0. Takže po reštarte to ide na asresu 408 a pri nejakom inom blbom prerušení na adresu 400. Na 408 z toho zatiaľ lezú normálne inštrukcie. Na 400 je NOP a potom nejaké nezmysly? Už sa teším, jak sa do toho zahryznem cez dlhé zimné večery. Lepšie jak krýžovky, či sudoku.
![Smile :)](./images/smilies/icon_smile.gif)
IDA pro se da nahradit opensource toolem Ghidra od NSA
Kód: Vybrat vše
https://ghidra-sre.org/
Načo je dobrá taká inštrukcia? Prečo +2?
Kód: Vybrat vše
Mnemonic Operation Description Address Opcode Operand Cycles
TSZ Transfer SP to Z (SK:SP) + 2 => ZK:IZ INH 276F - 2
Snažím sa rozlúštiť ten strojový kód. Zo začiatku to šlo celkom dobre, dokonca z toho vypadlo zopár užitočných informácií, ale potom začali nezmyselné inštrukcie a ja mám pocit, že robím niečo zle, že som asi niečo nepochopil.
sekvencia od adresy 04E0.
sekvencia od adresy 04E0.
Kód: Vybrat vše
Load 0x06 => B
Transfer B => EK
Transfer (SK:SP) + 2 => ZK:IZ
Jump to Subroutine (tie dva riadky celkom dole)
Test D for Zero or Minus (v D je teraz 0x0001, takže nie je Zero)
Long Branch if Equal (čiže ak je Zero, čo nie je, takže nič, zbytočný kód)
Load 0x06 = >B
Transfer B => YK
Load 0x07FC => IY (ďalej nepoužité, prepísané o pár krokov nižšie)
Load 0x4D24 => D (ďalej nepoužité, prepísané o pár krokov nižšie)
Load 0x0000 => IX (ďalej nepoužité, prepísané o pár krokov nižšie)
Load 0x00 => B
Transfer B => XK
Load 0xAE88 => IX
Load 0x0000 => IY
Load 0x07FC => D
subroutine:
Load 0x0001 => D
Return from Subroutine