![]() |
[Assembler]TSR, Zahlen (8bit, ggf 16bit) in Dual/Dezimal/Hex aufm Bildschirm ausgeben
Ich bin ein blutiger Anfänger in asm und schreibe am Dienstag eine Praktische Prüfung.
Mein Lehrer hat mir das folgende als Schwerpunkte für die Prüfung gegeben : TSR, Zahlen (8bit, ggf 16bit) in Dual/Dezimal/Hexadezimal auf dem Bildschirm anzeigen ich habe dazu folgende Aufzeichnungen, die ich aber nicht mehr ganz verstehe: Mir ist nur klar, das ich die eingebene Zahl im Register irgendwie Bitweise mit shl verschieben muss, aber wie das genau in Code Umgesetzt wird weis ich nicht! Hat evtl mal jemand ein kurzes Code-beispiel wie man das umsetzen könnte(Eingebene Zahl binär wieder ausgeben), oder eine Erklärung? mfg Danke schonmal! |
Wenn ich es richtig verstanden habe, dann musst du folgenden Pseudocode in Assembler umsetzen:
Code:
int counter = 0; 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. |
Zu ergänzen ist hier noch, dass Initial nochmal geshiftet werden muss.
Der Befehl SHL schiebt das oberste Bit des Registers in das Carry-Flag. Dieser Wert wird dann nur noch abgefragt. Ich hoffe mal, dass nachfolgender ASM-Code das verdeutlicht: Code:
;AL: Eingabebyte Edit: Zum Thema Ein/Ausgabe: Das funkioniert, soweit ich weiß, über den Interrupt 21H. Dazu bin leider aktuell noch nicht nüchtern genug.. |
Zitat:
|
Glückwunsch! ;)
Kann dann wohl geschlossen werden.. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:07 Uhr. |
Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.