# BCD-Zahl in Ganzzahl (16 Bit) wandeln



## baui (4 März 2009)

Hallo zusammen!

Ich soll eine Funktion programmieren, die eine BCD-Zahl (3-stellig positiv) in eine Ganzzahl 16 Bit umwandelt. Dies entspricht der Umwandlungsoperation BTI oder dem Baustein BCD_I in SIMITIC. Desweitern soll ich die Variablen deklarieren und in einer Variabeldeklarationstabelle (IN, OUT) auflisten.

Mein Problem ist:
  Laut Beschreibung in der Hilfe bei Step 7 gehe ich mit dem MW10 rein und das MW 12 ist der Ausgang. Ich lese somit  16 Binär Werte ein von denen erst mal nur 12 relevant sind, weil die BCD-Zahlen nur dreistellig/positiv sein sollen.  D.h. immer vier Bits sind eine Zahl. Wie die Funktion dazu aussehen soll, kann ich mir nicht vorstellen. Man müsste ja mindestens 12 Eingänge haben und die alle bearbeiten. 
  Die Aufgabe muss eigentlich einfach zu lösen sein, laut Professor.


----------



## Gebs (4 März 2009)

Hallo Baui,

das ist kein Problem:

```
L MW 10
SLW 12 // die 12 linken Bits rausschieben
SRW 12 // und wieder zurück -> nur noch die Einerstelle im Akku
T MW 16 // merken
L MW 10
SLW 8 // die 8 linken Bits rausschieben
SRW 12 // und auch die rechten 4 Bits weg -> die Zehnerstelle ist im Akku1
L 10
*I
L MW 16
+I
T MW 16 // jetzt sind die Zehner und Einerstelle als INT im MW 16
SRW 8 // die 8 rechten Bits rausschieben -> Hunderterstelle im AKKU 1
L 100
*I
L MW 16
+I
T MW 16 // fertig
```
Grüße
Gebs


----------



## MSB (4 März 2009)

Die Kurzform:


```
L MW10
L 16#0FFF  //Bit 12-15 ausmaskieren
UW
BTI
T MW12
```

Mfg
Manuel


----------



## Gebs (5 März 2009)

MSB schrieb:


> Die Kurzform:
> 
> 
> ```
> ...



Wenn ich die Aufgabe richtig verstanden habe, darf er BTI nicht benutzen.

Grüße
Gebs


----------

