N
oern schrieb:
Ich programmiere für Windows benutze aber für den Anfange eine DOS-COM Anwendung.
Du programmierst also fuer DOS. Ob du das ganze dann tatsaechlich in DOS, oder in Windows, Linux, oder auf deinem Palm im Emulator ausfuehrst, spielt keine Rolle.
oern schrieb:
Einfache Zeichenketten kann ich auch schon ausgeben:
msg db "ein String$"
lea dx, msg
mov ah,9
int 21h
Jo, das "lea dx, msg" wird von jedem vernuenftigen Assemler durch ein "mov dx, offset msg" (o.Ae. Syntax) ersetzt werden, also koenntest du das der Einfachheit halber auch gleich selbst so hinschreiben.
Zum Einlesen von Strings in DOS bitte mal einen Blick in die FAQ werfen.
oern schrieb:
Nein ich habe keine Idee für den Algorithmus zur Umwandlung von Zahlen in einen String, bzw. von String zu Zahl. Würde aber am liebsten mit den 10ner System arbeiten
Schlecht.
Wurde hier aber auch schon oefters erklaert. Einfach mal ein bissel suchen, dann findest du vielleicht auch noch Code.
Prinzip der Umwandlung von Zahl(unsigned word)->String ist, dass du die Zahl so lange durch die Basis deines aktuellen Zahlensystem (bei dec also 10 dezimal) teilst und jeweils den Rest der Division (der logischerweise zwischen 0 und 9 liegt - na, daemmert's? ) irgendwo auf einen Stack (bzw. den Stack) legst (um die Reihenfolge der Ziffern einfach umkehren zu koennen - bei diesem Algorithmus bekommst du naemlich die niedrigste Stelle der Zahl zuerst geliefert), bis der Quotient 0 ist. Hierbei macht es uebrigens Sinn, die Anzahl der Durchlaeufe zu zaehlen oder den "Boden" deines Stacks irgendwie zu kennzeichnen, damit du eine Abbruchbedingung fuer die naechste Schleife hast.
In dieser 2. Schleife nimmst du die auf dem Stack gespeicherten Werte nacheinander wieder herunter und addierst 30h (ASCII-Code fuer "0") dazu => So bekommst du einen schoenen String, der alle Ziffern in der richtigen Reihenfolge enthaelt.
---
Prinzip der Umwandlung von String->Zahl ist praktisch das gleiche, nur andersherum: Zuerst initialisierst du deinen Ergebniswert mit 0.
Nun nimmst du dir den String vor und faengst einfach vorn mit dem ersten char (also der ganz links) an.
Von diesem ziehst du 30h ab und schaust, ob das Ergebnis negativ oder >9 ist. In diesen Faellen stand an der Stelle etwas anderes als eine Ziffer zwischen 0 und 9 => du solltest die Schleife an dieser Stelle verlassen.
Ansonsten addierst du die oben errechnete Differenz auf deinen Ergebniswert und nimmst dir den naechsten char vor. Ist der auch gueltig (also eine der Ziffern von 0-9), multiplizierst du deinen Ergebniswert mit 10 und addierst die neue Differenz, nun nimmst du den naechsten char, usw.
Og. Vorgehensweisen sind zwar schon recht allgemein, aber natuerlich nur Vorschlaege. HTH (immerhin habe ich da eine Weile dran getippt und mir muehe gegeben, es umstaendlich auszudruecken :p)