Discussion:
4 Bytes in DWORD umwandeln
(zu alt für eine Antwort)
Jens Kallup
2012-11-30 22:54:52 UTC
Permalink
Hallo,

wie kann ich 4 Bytes in ein DWORD umwandeln?
also wenn einer von Euch ein kleines Programmchen mit NAsm machen
könnte, ware das echt cool.

also ich stelle mir das so vor:

INPUT: 1., 2., 3., 4. byte,
CONVERT
RETURN DWORD

Danke
Jens
Herbert Kleebauer
2012-12-01 16:59:02 UTC
Permalink
Post by Jens Kallup
Hallo,
wie kann ich 4 Bytes in ein DWORD umwandeln?
also wenn einer von Euch ein kleines Programmchen mit NAsm machen
könnte, ware das echt cool.
INPUT: 1., 2., 3., 4. byte,
INPUT von wo nach wo. Wenn das Byte in AL landet, dann mach
halt vor dem INPUT einen shift um 8 nach links von EAX.
Falls der INPUT sequentiell im Speicher landet, brauchst
du ja nur das DWORD an dieser Stelle lesen.
Post by Jens Kallup
CONVERT
RETURN DWORD
Jan Seiffert
2012-12-02 10:36:00 UTC
Permalink
Post by Jens Kallup
Hallo,
wie kann ich 4 Bytes in ein DWORD umwandeln?
also wenn einer von Euch ein kleines Programmchen mit NAsm machen könnte, ware das echt cool.
INPUT: 1., 2., 3., 4. byte,
CONVERT
RETURN DWORD
Wie Herbert schon sagte, wenn das im Speicher an aufeinander folgenden Adressen steht:
ein mov DWORD, vielleicht noch ein bswap.

Wenn nicht ist es eine passende Umsetzung folgendes C-Codes:

DWORD convert(BYTE b1, BYTE b2, BYTE b3, BYTE b4)
{
return (((DWORD)b1) << 24) |
(((DWORD)b2) << 16) |
(((DWORD)b3) << 8) |
(((DWORD)b4) << 0);
}

Wieder entsprechend anpassen wie man die Byteorder braucht, und ob die params
in Registern oder im Speicher kommen.
Auch ob das noch mit einem 8086 laufen muss oder ob es schon 386 sein darf
(mov zero extent, etc.).
Post by Jens Kallup
Danke
Jens
Gruss
Jan

Loading...