Einzelnen Beitrag anzeigen
Ungelesen 30.05.10, 14:30   #2
Banghard
Newbie
 
Registriert seit: Jun 2009
Beiträge: 74
Bedankt: 26
Banghard ist noch neu hier! | 0 Respekt Punkte
Standard

Wenn ich es richtig verstanden habe, dann musst du folgenden Pseudocode in Assembler umsetzen:

Code:
int counter = 0;

while counter < 8 {
    if(AL.carryflag == 0){
        print 0
    }
    else print 1;

    AL.shiftleft();        // AL << 1

    counter++;
}

Die Aufgabenstellung ist ja ein Ascii Zeichen einzulesen und dann bitweise auszugeben. Ein Ascii-Zeichen entspricht 8 Bit, folglich weißt du schonmal, dass du eine Schleife brauchst, die genau 8 mal durchläuft. Wenn ich es richtig verstanden habe, dann sollst du pro Schleifendurchlauf das erste Bit der Speicherstelle untersuchen (carry flag) und je nach Wert 1 oder 0 ausgeben und danach einen Shift nach links machen, sodass das folgende Bit nun an erster Stelle steht. Wenn die Schleife dann 8 mal durchgelaufen ist, hast du eine Ausgabe in Form von "01001101".

1. Schleifendurchlauf
01001101
-> print 0
-> shiftleft

2. Schleifendurchlauf
10011010
-> print 1
-> shiftleft

3. Schleifendurchlauf
00110100
-> print 0
-> shiftleft

usw.


Diesen Algorithmus musst du dann nur noch in der Sprache deiner Wahl umsetzen.
Banghard ist offline   Mit Zitat antworten