Ahoi! muss einen Assemblerbeleg abliefern und bin im moment ein wenig ins stocken geraten. hier mal die aufgabenstellung: <<Durch Auslösen des Interrupt RST 6.5 soll über die Eingabeports 0, 1 und 2 eine dreistellige ASCII-codierte Zahl eingegeben werden. Die Hunderter sind im Port 0, die Zehner im Port 1 und die Einer im Port 2 einzugeben. Aus dieser Eingabe ist eine Dualzahl zu bilden und im Speicher ab der Adresse 120h abzulegen. Hinweis: Neben der mathematischen Vorschrift zur Umwandlung einer Dezimal-in eine Dualzahl ist in diesen Falle auch die Verwendung einer Tabelle möglich.>> soweit so gut. Ich erklär mal kurz wie ich mir das überlegt hab, bzw wie es im mom aussieht. wird warscheinlich sehr umständlich sein, aber wir hatten 2x90min Assemblervorlesung und das war nicht sonderlich ergiebig ;> also, zuerst setze ich die interruptmaske für 6.5 (mvi A,0Ah ; sim). dann lese ich die ports ein und subtrahiere jeweils 48 (30h) um das dezimalequivalent der ascii zahlen zu bekommen. dann folgt schon mein erster stolperstein. ich könnte die einzelnen stellen nun (mit einer additionsschleife?) jeweils mit 10&100 multiplizieren und zusammenaddieren. addiert passt diese dann aber nichtmehr in ein registerpaar (hat ja bis zu 10bit). also müsste ich die zahl dann im speicher ablegen(?). ab da könnte ich ja dann mit fortlaufender division durch 2 die umrechnung ins binärsytem durchführen und die jeweiligen stellen direkt in den speicher schreiben. hab da jetzt mal ne weile gesucht, aber es scheint als hätte erst der 8086 einen divisionsbefehl? was gibt es für denkfehler in meiner lösungsidee? gibt es einen einfacheren weg? was ist mit "verwendung einer tabelle" gemeint (es ist leider nicht möglich den prof zu befragen :( ) ich wäre für jede hilfe sehr dankbar benno
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.