You are here

16 bit memóriatartalom 8 bitre konvertálás* SOLVED

6 posts / 0 new
Last post
sabyjuhas
sabyjuhas picture

Sziasztok!

Egy kis segítségre szorulok.. Már keresztbe kasul bejártam az internetet, hogy találjak valami konvertáló programot, de sikertelenül.
Problémám a következő:
Kiolvastam egy 93c46 ot de a programmerem csaka 16 bites módot támogatja, így a memória tartalom, 16 bites formátumban áll rendelkezésemre, amit át kéne valahogy alakítnom 8 bitesre hogy meg tudjam csinálni rajta amit kell.
Nem ismer valaki valamilyen módszert vagy programot amivel ez lehetséges volna?
Itt egy példa:
ez a 16 bites olvasat.

Offset    0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F

00000000   39 00 30 00 34 00 36 03  34 00 37 40 32 7C 38 3A   9 0 4 6 4 7@2|8:
00000010   30 0A 33 14 39 F8 35 93  31 3C 39 3C 39 3C 39 10   0 3 9ř5“1<9<9<9 
00000020   30 B4 30 18 37 78 34 0A  A1 B4 C9 05 33 06 00 0C   0´0 7x4 ˇ´É 3   
00000030   10 10 0F 18 38 08 FA 25  50 28 08 33 14 4A 06 60        8 ú%P( 3 J `
00000040   16 6B 6E 80 6F 8A 80 78  04 6C 00 64 00 50 EB 32     kn€oŠ€x l d Pë2
00000050   00 28 3F 12 9A 00 FF 81  1C 00 5F 00 AC 5A B0 03     (? š ˙�  _ ¬Z° 
00000060   B0 00 B0 FB B0 09 00 01  00 01 00 00 00 00 00 00   ° °ű°                
00000070   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 07

de nekem valahogy így kéne hogy kinézzen:

Offset    0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F

00000000   39 30 34 36 34 37 32 38  30 33 39 35 31 39 39 39   9046472803951999
00000010   30 30 37 34 A1 C9 33 00  10 0F 38 FA 50 08 14 06   0074ˇÉ3   8úP   
00000020   16 6E 6F 80 04 00 00 EB  00 3F 9A FF 1C 5F AC B0     no€   ë ?š˙ _¬°
00000030   B0 B0 B0 00 00 00 00 00  00 00 00 00 00 00 00 00   °°°                        
00000040   00 00 00 03 00 40 7C 3A  0A 14 F8 93 3C 3C 3C 10             @|:  ř“<<< 
00000050   B4 18 78 0A B4 05 06 0C  10 18 08 25 28 33 4A 60   ´ x ´       %(3J`
00000060   6B 80 8A 78 6C 64 50 32  28 12 00 81 00 00 5A 03   k€ŠxldP2(  �  Z 
00000070   00 FB 09 01 01 00 00 00  00 00 00 00 00 00 00 07     ű

A két memóriatartalom ugyan az, csak az egyik 16 a másik 8 bites módban.
Van valmi ötletetek, hogy miként tudnám átváltani?

Köszönöm :))

Comments
Jibaro
Jibaro picture

Szia!

Ha jól látom, csak ki kell dobni minden második byte-ot. :-)

#include <stdio.h>

int main()
{
        int ch = 0;

        do {
                ch = fgetc(stdin);
                if (ch < 0) break;
                fputc(ch, stdout);
                fgetc(stdin);
        } while (1);

        return 0;
}

Lefordítás után szűrőként használhatod:

bash$ ./prog < bemeno.bin > kimeno.bin
C:\> prog.exe < bemeno.bin > kimeno.bin

Gyanús, hogy a páros című byte-ok sem mind nullák, de innentől
már Rád bízom, hogy szükség esetén továbbfejleszd a kódot...

Sok sikert!

Jibaro

0

petee128
petee128 picture

Probáld meg a MASM-ot elvileg tudja.

0

sabyjuhas
sabyjuhas picture

leszedtem, de nem találok benneilyen funkciót :/ Azért köszi :)
Egyéb ötlet?

0

bbgames
bbgames picture

A fenti kép szerintem sehogysem felel meg a lentinek. Mindkét kép byte-onként ábrázolja a tartalmat, ha bármilyen file-t kinyitsz egy hex editorral, alapban byte módban látod a tartalmat. Ha az IC belül 16 bites, akkor minden egyes címre két byte fog vonatkozni. Csak az a kérdés, hogy az alacsonyabb vagy magasabb helyiértékű lesz-e elöl. Tehát adott esetben, ha az implementáció fordított, mint ahogy dolgoznál, meg kell cserélni minden byte párt. A felső kép elején a karakter kód a kisebbik helyiérték, ezért a számábrázolás irányultsága feltehetőleg olyan mint a PC-é.
Olyan programok léteznek, amelyek egy 16 vagy 32 bites bináris file-t 2 vagy 4 db 8 bites eprom tartalomra vágnak szét, vagy fordítva 2 vagy 4 epromot egyetlen bináris file-ba egyesítenek, de szerintem itt nem ez a probléma.
Ha az első kép az, amit kiolvasol az eszközből, azzal is kell dolgoznod.

üdv
bbgames

0

sabyjuhas
sabyjuhas picture

megoldódott végülis, nem is kell hozzá semmilyen program :D elé lenne ha nem seprükötő lenne a szakmám hanem mérnökinformatikus vagy mechatronika mérnök, esetleg hekker :D gyakorlatilag egyszerűen csináltam egy új üres fájlt, és elkezdtem bepötyögni sorba minden második szóból a második bitet, amikor a tábla végére értem és az új fájl félig megtelt tartalommal, kezdtem előről és bepötyögtem minden első bitet. és ennyi sikerült, 3 napomba tellet xD tudom hogy amatőr dolog :D de amatőr vagyok :) Cheers

0