ASM z HEX
Moderátor: Moderátoři
ASM z HEX
https://www.nxp.com/docs/en/product-brief/MC68HC16Z1TS.pdf
- Přílohy
-
ROM.zip- (20.26 KiB) Staženo 1329 x
-
petrfilipi
- Příspěvky: 2901
- Registrován: 13 zář 2005, 00:00
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
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.
Kód: Vybrat vše
https://ghidra-sre.org/Kód: Vybrat vše
Mnemonic Operation Description Address Opcode Operand Cycles
TSZ Transfer SP to Z (SK:SP) + 2 => ZK:IZ INH 276F - 2sekvencia 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