Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. format binary as "kex"
  2.  
  3. use32
  4.         org     0x0
  5.         db      'MENUET01'      
  6.         dd      0x01            
  7.         dd      START          
  8.         dd      IM_END          
  9.         dd      MEM  
  10.         dd      MEM
  11.         dd      0
  12.         dd      0
  13.  
  14. include '../../../../../macros.inc'
  15. include '../../../../../proc32.inc'
  16. include '../../../../../KOSfuncs.inc'
  17. include '../../../../../dll.inc'
  18. ;include '../../../../../debug-fdo.inc'
  19.  
  20. ;__DEBUG__               = 1
  21. ;__DEBUG_LEVEL__         = 2
  22.  
  23. START:
  24.         stdcall dll.Load, @IMPORT
  25.         test    eax, eax
  26.         jnz     exit
  27.  
  28.         cinvoke libc_strlen, test_str1
  29.         ;DEBUGF 2, "%d", eax
  30.         mcall   SF_SYS_MISC, SSF_MEM_ALLOC, eax
  31.         mov     [test_str2], eax
  32.        
  33.         cinvoke libc_sprintf, [test_str2], format_str, str_var, [dec_var], dword [float_var], dword[float_var+4], [hex_var]
  34.         cinvoke libc_puts, test_str1
  35.         cinvoke libc_puts, [test_str2]
  36.        
  37.         cinvoke libc_strcmp, test_str1, [test_str2]
  38.        
  39.         test    eax, eax
  40.         jz      print_succ
  41.         jmp     print_fail
  42.        
  43. print_succ:
  44.         cinvoke libc_puts, success_msg
  45.         jmp exit
  46.        
  47. print_fail:
  48.         cinvoke libc_puts, failed_msg
  49.        
  50. exit:
  51.         mcall   SF_SYS_MISC, SSF_MEM_FREE, [test_str2]
  52.         mcall   SF_TERMINATE_PROCESS
  53.        
  54. ; data
  55.  
  56. format_str  db "%s %d %f 0x%x", 0
  57. test_str1   db "Test 463 -26.432100 0x9d81", 0
  58. test_str2   dd 0
  59.  
  60. str_var     db "Test",0
  61. dec_var     dd 463
  62. float_var   dq -26.4321
  63. hex_var     dd 40321
  64.  
  65. success_msg db "Test successful!", 0
  66. failed_msg  db "Test failed!", 0
  67.        
  68. align 4
  69.  
  70. @IMPORT:
  71. library libc,   'libc.obj'
  72. import  libc,   \
  73.         libc_sprintf, 'sprintf', \
  74.         libc_strcmp, 'strcmp', \
  75.         libc_strlen, 'strlen', \
  76.         libc_puts, 'puts'
  77.  
  78. IM_END:
  79. align   4
  80. rb      1024    ; stack
  81. MEM:
  82.