User Tools

Site Tools


Converting a number to a string

by Richard Russell, January 2015

You may wish to convert a number to a string in assembly language (equivalent to the STR$ function in BASIC). This can easily be done by calling an internal routine within the interpreter. Here is how to do it (requires BBC BASIC for Windows version 6):

      ; eax = print format control (equivalent to @%)
      ; bx|ecx|edx = number to print (80-bit variant)
      ; edi = address of destination buffer
      push eax
      mov  ebp,esp
      call @fn%(12)
      pop  eax
      mov  byte [edx+ecx],0

On completion a NUL-terminated string is stored in the supplied buffer.

To illustrate the use of this code here is a complete program which prints the value of PI using assembly language:

        DIM Buffer% 255, P% 100, L% -1
        [OPT 10
        mov  eax,&1414     ; G20 format
        mov  bx,&4000      ; Value of PI ...
        mov  ecx,&C90FDAA2 ; .. as an ...
        mov  edx,&2168C235 ; .. 80-bit float
        mov  edi,Buffer%   ; Destination buffer
        push eax
        mov  ebp,esp
        call @fn%(12)
        pop  eax
        mov  byte [edx+ecx],0
        mov  esi,Buffer%
        call "oswrch"
        or   al,al
        jnz  vout
        CALL ppi
This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information
converting_20a_20number_20to_20a_20string.txt · Last modified: 2018/04/13 11:37 by richardrussell