Subversion Repositories Kolibri OS

Rev

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

  1. macro export [name,sname]
  2. {
  3.   forward
  4.     dd __#name#_export_name__,name
  5.   common
  6.     dd 0
  7.   forward
  8.     align 4
  9.     __#name#_export_name__ db sname,0
  10. }
  11.  
  12. copy_s:
  13.   ; eax - куда
  14.   ; ebx - откуда
  15.   ; cl - до чего
  16.   ; выход - eax - сколько скопировано
  17.   pushad
  18.   push eax
  19. @@:
  20.  mov ch,[ebx]
  21.  cmp ch,cl
  22.  je @f
  23.  mov [eax],ch
  24.  inc ebx
  25.  inc eax
  26.  jmp @b
  27. @@:
  28.  mov [eax], byte 0
  29.  pop ebx
  30.  sub eax,ebx
  31.  mov [esp+0x1c],eax
  32.  popad
  33.  ret
  34.  
  35. strcmp:
  36.   ; esi - строка 1
  37.   ; edi - строка 2
  38.   ; выход - eax=-1 - неравно
  39.                 xor     eax,eax
  40.                 pushad
  41.             @@: lodsb
  42.                 scasb
  43.                 jne     .fail
  44.                 or      al,al
  45.                 jnz     @b
  46.                 jmp     .ok
  47.   .fail:        or      eax,-1
  48.                 mov [esp+0x1c],eax
  49.   .ok:           popad
  50.                 ret
  51.  
  52.  
  53.  
  54. proc get_filesize stdcall, file_name:dword
  55.            locals
  56.              cmd     dd ?
  57.              offset  dd ?
  58.                              dd ?
  59.              count   dd ?
  60.              buff    dd ?
  61.                          db ?
  62.              name    dd ?
  63.  
  64.              info       dd ?
  65.              flags      dd ?
  66.              cr_time    dd ?
  67.              cr_date    dd ?
  68.              acc_time   dd ?
  69.              acc_date   dd ?
  70.              mod_time   dd ?
  71.              mod_date   dd ?
  72.              file_size  dd ?
  73.  
  74.              file       dd ?
  75.              file2      dd ?
  76.  
  77.  
  78.            endl
  79.  
  80.            xor eax, eax
  81.            mov ebx, [file_name]
  82.            mov ecx,info-ebp
  83.            add ecx,ebp
  84.  
  85.            mov [cmd], 5
  86.            mov [offset], eax
  87.            mov [offset+4], eax
  88.            mov [count], eax
  89.            mov [buff], ecx
  90.            mov byte [buff+4], al
  91.            mov [name], ebx
  92.  
  93.            mov eax, 70
  94.            lea ebx, [cmd]
  95.            int 0x40
  96.  
  97.            mov eax,[file_size]
  98.  
  99.            ret
  100. endp