This Book's Link Library (Cont.)


ParseDecimal32
It converts an unsigned decimal integer string to 32-bit binary.

ParseInteger32
It converts a signed decimal integer string to 32-bit binary.

For both procedures, all valid digits occurring before a non-numeric character are converted. They receive the offset of a string in EDX and the string's length in ECX. The binary value is returned in EAX.

 Writing a String “12345” to
a File, number.txt 
 Reading the String from
the File and Incrementing it 
 
 
 STR_LEN = 6

 
 
 .data
 
 
 fname   BYTE  "number.txt", 0
 
 
 buffer  BYTE  "12345", 0
 
 
 msg     BYTE  "Error!", 0
 
 
 fhandle DWORD ?

 
 
 .code
 
 
      mov   edx, OFFSET fname
 
 
      call  CreateOutputFile
 
 
      cmp   eax, \
 
 
            INVALID_HANDLE_VALUE
 
 
      je    err
 
 
      mov   fhandle, eax

 
 
      mov   edx, OFFSET buffer
 
 
      mov   ecx, STR_LEN
 
 
      call  WriteToFile

 
 
      call  WriteInt
 
 
      mov   eax, fhandle
 
 
      call  CloseFile
 
 
      exit

 
 
 err: mov   edx, OFFSET msg
 
 
      call  WriteString
 
 
 BUFFER_SIZE = 128
 
 
 .data
 
 
 fname    BYTE  "number.txt", 0
 
 
 buffer   BYTE  BUFFER_SIZE DUP(0)
 
 
 msg      BYTE  "Error!", 0
 
 
 fhandle  DWORD ?
 
 
 .code
 
 
      mov   edx, OFFSET fname
 
 
      call  OpenInputFile
 
 
      cmp   eax, \
 
 
            INVALID_HANDLE_VALUE
 
 
      je    err
 
 
      mov   fhandle, eax

 
 
      mov   edx, OFFSET buffer
 
 
      mov   ecx, BUFFER_SIZE
 
 
      call  ReadFromFile

 
 
      mov   edx, OFFSET buffer
 
 
      call  ParseInteger32
 
 
      inc   eax
 
 
      call  WriteInt

 
 
      mov   eax, fhandle
 
 
      call  CloseFile
 
 
      exit
        
 
 
 err: mov   edx, OFFSET msg
 
 
      call  WriteString
 Output   Output 

   


   



      “I’m not arguing, I’m just explaining why I’m right.”    
      ― Unknown