myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

[Assembler]TSR, Zahlen (8bit, ggf 16bit) in Dual/Dezimal/Hex aufm Bildschirm ausgeben

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 30.05.10, 13:39   #1
myrix
Schokokuchen!
 
Benutzerbild von myrix
 
Registriert seit: May 2009
Ort: 127.0.0.1
Beiträge: 0
Bedankt: 574
myrix ist noch neu hier! | 0 Respekt Punkte
Standard [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 Pinwandnachrichten bekomme ist zwar schön und gut -- aber ich bemerke die erst nach 2 Monaten ^^

>&quot;.&quot;<
myrix ist offline   Mit Zitat antworten
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
Ungelesen 30.05.10, 15:04   #3
kramido
Erfahrener Newbie
 
Registriert seit: Apr 2010
Beiträge: 172
Bedankt: 31
kramido ist noch neu hier! | 0 Respekt Punkte
Standard

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
;CX:Zählerwort

;Wie häufig soll geshiftet werden?
MOV CX, 8
SCHLEIFE$ANFANG: ;Label für Schleife
SHL AL,1; Linksshiften
;Prüfung auf 0/1
JC AUSGABE1 ;Sofern Carry gesetzt ist, zur Ausgabe für 1 springen

;
;Hier Null ausgeben
;
BRA SCHLEIFE$ENDE ;zum Schleifenende springen 

AUSGABE1: ;Label für 1 ausgeben
;
;Hier Eins ausgeben
;

SCHLEIFE$ENDE:
DEC CX ; Zähler verringern
JNZ WEITER ;Sofern noch Durchläufe, weitermachen
viel Erfolg bei deiner Prüfung!

Edit: Zum Thema Ein/Ausgabe: Das funkioniert, soweit ich weiß, über den Interrupt 21H. Dazu bin leider aktuell noch nicht nüchtern genug..
kramido ist offline   Mit Zitat antworten
Ungelesen 05.06.10, 14:08   #4
myrix
Schokokuchen!
 
Benutzerbild von myrix
 
Registriert seit: May 2009
Ort: 127.0.0.1
Beiträge: 0
Bedankt: 574
myrix ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von kramido Beitrag anzeigen
viel Erfolg bei deiner Prüfung!
Danke dir. Es kamm einen beliebes Zahlensystem in Binär umwandeln dran. Aufjedenfall hab ichs geschaft
__________________
Wenn ich Pinwandnachrichten bekomme ist zwar schön und gut -- aber ich bemerke die erst nach 2 Monaten ^^

>&quot;.&quot;<
myrix ist offline   Mit Zitat antworten
Ungelesen 06.06.10, 00:55   #5
kramido
Erfahrener Newbie
 
Registriert seit: Apr 2010
Beiträge: 172
Bedankt: 31
kramido ist noch neu hier! | 0 Respekt Punkte
Standard

Glückwunsch!

Kann dann wohl geschlossen werden..
kramido ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:19 Uhr.


Sitemap

().