Advertisement
Pearlfromsu

fe

Apr 19th, 2022
940
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.88 KB | None | 0 0
  1. ; òèï ïðèëîæåíèÿ
  2.   format        PE      console
  3. ; òî÷êà âõîäà
  4.   entry         start
  5. ; ïîäêëþ÷àåì ìàêðîáèáëèîòåêè
  6.   include    'WIN32A.INC';'includes\win32ax.inc' äëÿ asp
  7. ;ñåêöèÿ äàííûõ
  8.   section    '.data' data    readable writeable
  9. X            dd      ?
  10. Y            dd      ?
  11. result       dd      ?
  12. answer       dd      ?
  13.  
  14. stdin        dd ?
  15. stdout       dd ?
  16.  
  17. buffer       db 13 dup(?) ; ðåçåðâàöèÿ 13 áàéò
  18. lenbuf       = $ - buffer
  19. cntread      dd ? ; êîëè÷åñòâî ïðî÷èòàííûõ ñèìâîëîâ
  20.  
  21.  
  22. ;ñåêöèÿ êîäà
  23.         section  '.code'  code  readable executable
  24. start:
  25. ; îëó÷åíèå äåñêðèïòîðîâ ïîòîêà ââîäà è âûâîäà
  26.         invoke GetStdHandle, STD_INPUT_HANDLE
  27.         mov    [stdin], eax
  28.         invoke GetStdHandle, STD_OUTPUT_HANDLE
  29.         mov    [stdout], eax
  30. ;ââîä ÷èñåë
  31.         stdcall readInt, X, answer
  32.         cmp     [answer], 0
  33.         jne     exit
  34. ;âûâîä ÷èñëà
  35.         stdcall writeInt, [X]
  36. ; âûõîä ñ çàäåðæêîé
  37. exit:
  38.         invoke ReadConsole, [stdin], buffer, lenbuf, cntread, NULL
  39.         invoke ExitProcess, 0
  40. ; ïîäïðîãðàììà âûâîäà öåëîãî ÷èñëà
  41. proc    writeInt number
  42. ;ïðîëîã
  43.         push    eax
  44.         push    edx
  45.         push    ecx
  46.         push    ebp
  47.         push    esi
  48.         push    ebx
  49. ;íà÷àëüíûå óñòàíîâêè
  50.         mov     eax, [number]
  51.         mov     esi, buffer
  52.         mov     ebx, 10
  53.         xor     ecx, ecx;êîëè÷åñòâî öèôð
  54.         xor     ebp, ebp;ïîäñ÷åò êîëè÷åñòâà ñèìâîëîâ
  55. ;çíàê
  56.         cmp     eax, 0
  57.         jge     m1
  58.         mov     [esi], byte '-'
  59.         inc     esi
  60.         inc     ebp
  61.         neg     eax
  62. m1:
  63. ;ïîëó÷åíèå öèôð
  64.         cdq
  65.         div     ebx
  66.         push    edx
  67.         inc     ecx
  68.         cmp     eax, 0
  69.         jne     m1
  70. ; ôîðìèðîâàíèå ñòðîêè
  71.         add    ebp, ecx
  72. m2:     pop    edx
  73.         add    dl, '0'
  74.         mov    [esi], dl
  75.         inc    esi
  76.         loop   m2 ;òàê êàê â ecx ÷òî-òî åñòü
  77. ; âûâîä
  78.         invoke  WriteConsole, [stdout], buffer, ebp, NULL, NULL
  79.  
  80. ;ýïèëîã
  81.         pop     ebx
  82.         pop     esi
  83.         pop     ebp
  84.         pop     ecx
  85.         pop     edx
  86.         pop     eax
  87.         ret
  88.         endp
  89. ;ïîäïðîãðàììà ââîäà öåëîãî ÷èñëà
  90. proc    readInt number, errorIn
  91.         pusha
  92.         invoke ReadConsole, [stdin], buffer, lenbuf, cntread, NULL
  93.         mov    ecx, [cntread]
  94.         sub    ecx, 2; -ïðîáåë è ïåðåõîä íà íîâóþ ñòðîêó
  95.         mov    esi, buffer
  96.         xor    eax, eax
  97.         mov    edi, 10
  98.         xor    ebx, ebx
  99. ;çíàê
  100.         cmp    [esi], byte '-'
  101.         jne    m3
  102.         inc    esi
  103.         dec    ecx
  104. m3:     mov    bl, [esi]
  105.         sub    bl, '0'
  106.         cmp    bl, 0
  107.         jl     er1
  108.         cmp    bl, 9
  109.         jg     er1
  110.         imul   edi
  111.         jc     er2
  112.         add    eax, ebx
  113.         jc     er2
  114.         jo     er2
  115.         inc    esi
  116.         loop   m3
  117.  
  118.         cmp    [buffer], byte '-'
  119.         jne    m4
  120.         neg    eax
  121. m4:     mov    edi, [number]
  122.         mov    [edi], eax
  123.         mov    ebx, 0
  124.         jmp    m5
  125. er1:    mov    ebx, 1
  126.         jmp    m5
  127. er2:    mov    ebx, 2
  128. m5:     mov    edi, [errorIn]
  129.         mov    [edi], ebx
  130.  
  131.         popa
  132.         ret
  133.         endp
  134. ;ñåêöèÿ èìïîðòà
  135.         section  '.idata'  import data readable writeable
  136.         library kernel32, 'KERNEL32.DLL'
  137.         import kernel32, \
  138.                GetStdHandle, 'GetStdHandle', \
  139.                WriteConsole, 'WriteConsoleA', \
  140.                ReadConsole, 'ReadConsoleA', \
  141.                ExitProcess, 'ExitProcess'
  142.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement