-
-
Erfahrener Benutzer
Roboter Genie
Hast Du den Code runtergeladen ?.
Bedarf evtl. einiger Erklärungen.
Es gibt 4 Vraiablen a 32 Bit
var_ARG_A,var_ARG_B,var_ARG_C,var_ARG_D
Hierbei liegt jeweils das niederwertigste Byte Bit0.7 in
....AL die Bits 8..15 in ...AH Bit 16..23 in ....AHL Bit 24.31 in ....AHH
Möchtest Du zwei 16 Bit Werte multiplizieren, muss Du die Variablen
entsprechend mit den Werten laden
z.B 1000*2000=2000000
mov LOW D'1000',W ; A Wert setzen
movwf var_ARG_AL
mov HIGH D'1000',W
movwf var_ARG_AH
mov LOW D'2000',W ; B Wert setzen
movwf var_ARG_BL
mov HIGH D'2000',W
movwf var_ARG_BH
call MUL16 ; Berechnung ausführen, Ergebnis nach Wert A
; nun steht das Ergebnis 32 Bit breit in der Variablen ARG_A
Bit 0..7 in in var_ARG_AL
Bit 8..15 in var_ARG_AH
Bit 16..23 in var_ARG_AHL
Bit 24..31 in var_ARG_AHH
!!!! es wird also der A Wert überschrieben mit dem Ergebnis
Beim dividieren läuft das in ähnlicher Weise ab.
mfg. Siro
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen