String nach Integer?
-
Sers Leute,
ich versuch mich seit kurzer Zeit an Assembler und versuche zur Zeit eine Prozedur zu schriben, die mir einen String in einen Integer ( für eine Schleife ) konvertiert. In meinem Büchlein steht auch eine,allerdings hab ich zwei Probleme:
- Ich kapier sie leider noch nicht
- Sie geht nur bis 16 Bit. Ich brauch allerdings mindestens 32, wenn nicht 64.
Ich poste die Prozedur hier mal ( Die aus 'm Buch )
NumIn PROC NEAR ;Eingabeproz. push ax bx dx si di ;geht nur bei TASM mov dx,OFFSET Buffer mov ah,0Ah int 21h ;Zahlenstring einlesen xor cx,cx ;CX=0 mov cl,Buffer.Anz mov si,cx mov bx,OFFSET Buffer+1 add bl,Buffer.Anz ;Ende des Zahlenstrings adc bh,0 ;Falls Überlauf mov di,1 ;DI=1=Faktor f. Ziffer xor cx,cx ;CX=0 cmp Buffer.Anz,0 ;Gar keine Eingabe? je NullZ LoopA: mov al,[bx] ;Ziffer bei BX nach AX xor ah,ah ;AH=0 sub ax,30h ;ASCII nach BIN mul di ;AX*DI=DX:AX DX immer 0 jc NullZ ;Überlauf, Zahl zu groß add cx,ax ;CX=CX+AX mov ax,di ;AX=DI mov di,10 ;di=10 mul di ;AX*DI=DX:AX DX immer 0 mov di,ax ;DI=AX, DI ist Faktor! clc ;Lösche CF0 dec bx ;BX-1 dec si ;SI-1 jnz LoopA ;SI = 0 ? NullZ: pop di si dx bx ax ;Nur bei TASM ret ;Zurück zum Hauptprog. Numin ENDP ;Ende der Proz.
Ich hoffe ihr könnt mir helfen, ich hab leider bis jetzt nichts gefunden
Gruß, mo
-
wo genau liegt das problem?
push ax bx etc... dürfte nur eine kurzschreibweise für
push ax
push bx
etc. sein, analog bei popes fehlt noch die deklaration von Buffer
ein nachteil dieser prozedur ist, dass sie die eingabe nicht auf ungültige zeichen, oder das ergebnis auf überlauf überprüft.
-
Oh sorry, Buffer hab ich vergessen:
puffer STRUC max DB 13 anz DB ? txt DB 16 DUP (?) puffer ENDS buffer puffer <>
Mein Problem ist
- ich versteh den Code nicht und würd mich freuen wenn ihn jemand besser kommentieren würde
- ich weiß nicht wie ich einen code mit fehlerüberprüfung und für 32bit schreiben soll
Würde mich auch über Hilfe per ICQ freuen!!
Gruß, moritz
-
moritzm schrieb:
Oh sorry, Buffer hab ich vergessen:
puffer STRUC max DB 13 anz DB ? txt DB 16 DUP (?) puffer ENDS buffer puffer <>
Mein Problem ist
- ich versteh den Code nicht und würd mich freuen wenn ihn jemand besser kommentieren würde
- ich weiß nicht wie ich einen code mit fehlerüberprüfung und für 32bit schreiben soll
Würde mich auch über Hilfe per ICQ freuen!!
Gruß, moritz
dann wirst du deine icq nummer irgendwie öffentlich machen müssen
-
Is im Profil
(Seit eben ^^)