Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1.  
  2. DWORD equ dword
  3. WORD  equ word
  4. BYTE  equ byte
  5.  
  6. PTR   equ
  7.  
  8. _putc:
  9.         mov     ecx, DWORD PTR [esp+4]
  10. .L13:
  11.         mov     edx, 1021
  12.         in al, dx
  13.         test    al, 96
  14.         je      .L13
  15.         mov     dl, -8
  16.         mov     eax, ecx
  17.         out dx, al
  18.         cmp     ecx, 10
  19.         jne     .L7
  20.         mov     cl, 13
  21.         jmp     .L13
  22. .L7:
  23.         ret
  24.  
  25. _printf:
  26.         push    ebp
  27.         push    edi
  28.         push    esi
  29.         push    ebx
  30.         sub     esp, 40
  31.         lea     eax, [esp+64]
  32.         mov     DWORD PTR [esp+4], eax
  33. .L50:
  34.         mov     ecx, DWORD PTR [esp+60]
  35.         movzx   edx, BYTE PTR [ecx]
  36.         test    dl, dl
  37.         je      .L51
  38. .L17:
  39.         lea     eax, [ecx+1]
  40.         cmp     dl, 37
  41.         mov     DWORD PTR [esp+60], eax
  42.         je      .L18
  43.         movsx   eax, dl
  44.         mov     DWORD PTR [esp], eax
  45.         call    _putc
  46.         mov     ecx, DWORD PTR [esp+60]
  47.         movzx   edx, BYTE PTR [ecx]
  48.         test    dl, dl
  49.         jne     .L17
  50. .L51:
  51.         add     esp, 40
  52.         pop     ebx
  53.         pop     esi
  54.         pop     edi
  55.         pop     ebp
  56.         ret
  57. .L18:
  58.         movzx   edx, BYTE PTR [ecx+1]
  59.         lea     eax, [ecx+2]
  60.         mov     DWORD PTR [esp+60], eax
  61.         cmp     dl, 115
  62.         je      .L22
  63.         jg      .L23
  64.         cmp     dl, 100
  65.         je      .L21
  66. .L20:
  67.         mov     edx, DWORD PTR [esp+4]
  68.         mov     eax, DWORD PTR [edx]
  69.         add     edx, 4
  70.         mov     DWORD PTR [esp+4], edx
  71.         mov     DWORD PTR [esp], eax
  72.         call    _putc
  73.         jmp     .L50
  74. .L23:
  75.         cmp     dl, 117
  76.         je      .L21
  77.         cmp     dl, 120
  78.         jne     .L20
  79. .L21:
  80.         mov     ecx, DWORD PTR [esp+4]
  81.         mov     eax, DWORD PTR [ecx]
  82.         add     ecx, 4
  83.         cmp     dl, 100
  84.         mov     DWORD PTR [esp+4], ecx
  85.         mov     ecx, eax
  86.         je      .L52
  87. .L24:
  88.         cmp     dl, 120
  89.         je      .L53
  90.         lea     ebp, [esp+20]
  91.         mov     esi, 10
  92.         mov     ebx, ebp
  93.         mov     edi, ebp
  94. .L43:
  95.         xor     edx, edx
  96.         mov     eax, ecx
  97.         div     esi
  98.         cmp     edx, 9
  99.         lea     eax, [edx+48]
  100.         jle     .L31
  101.         lea     eax, [edx+87]
  102. .L31:
  103.         mov     BYTE PTR [edi], al
  104.         xor     edx, edx
  105.         mov     eax, ecx
  106.         div     esi
  107.         add     edi, 1
  108.         test    eax, eax
  109.         mov     ecx, eax
  110.         jne     .L43
  111.         lea     eax, [edi-1]
  112.         cmp     eax, ebx
  113.         mov     BYTE PTR [edi], 0
  114.         jbe     .L33
  115.         lea     ecx, [edi-2]
  116. .L35:
  117.         movzx   eax, BYTE PTR [ebx]
  118.         movzx   edx, BYTE PTR [ecx+1]
  119.         mov     BYTE PTR [ebx], dl
  120.         add     ebx, 1
  121.         mov     BYTE PTR [ecx+1], al
  122.         mov     eax, ecx
  123.         sub     ecx, 1
  124.         cmp     ebx, eax
  125.         jb      .L35
  126. .L33:
  127.         mov     edx, ebp
  128. .L36:
  129.         movzx   eax, BYTE PTR [edx]
  130.         test    al, al
  131.         je      .L50
  132.         mov     ebx, edx
  133. .L39:
  134.         movsx   eax, al
  135.         mov     DWORD PTR [esp], eax
  136.         call    _putc
  137.         movzx   eax, BYTE PTR [ebx+1]
  138.         add     ebx, 1
  139.         test    al, al
  140.         jne     .L39
  141.         jmp     .L50
  142. .L22:
  143.         mov     eax, DWORD PTR [esp+4]
  144.         mov     edx, DWORD PTR [eax]
  145.         add     eax, 4
  146.         mov     DWORD PTR [esp+4], eax
  147.         test    edx, edx
  148.         jne     .L36
  149.         mov     edx, .LC0
  150.         jmp     .L36
  151. .L52:
  152.         test    eax, eax
  153.         jns     .L24
  154.         lea     ebx, [esp+21]
  155.         neg     ecx
  156.         mov     edi, ebx
  157.         mov     esi, 10
  158.         lea     ebp, [esp+20]
  159.         mov     BYTE PTR [esp+20], 45
  160.         jmp     .L43
  161. .L53:
  162.         lea     ebp, [esp+20]
  163.         mov     esi, 16
  164.         mov     ebx, ebp
  165.         mov     edi, ebp
  166.         jmp     .L43
  167.  
  168. .LC0:   db "(null)",0
  169.  
  170. restore DWORD
  171. restore WORD
  172. restore BYTE
  173.  
  174. restore PTR
  175.