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:

    1. Ich kapier sie leider noch nicht
    2. 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


  • Mod

    wo genau liegt das problem?

    push ax bx etc... dürfte nur eine kurzschreibweise für
    push ax
    push bx
    etc. sein, analog bei pop

    es 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

    1. ich versteh den Code nicht und würd mich freuen wenn ihn jemand besser kommentieren würde
    2. 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


  • Mod

    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

    1. ich versteh den Code nicht und würd mich freuen wenn ihn jemand besser kommentieren würde
    2. 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 ^^)


Anmelden zum Antworten