1. Assembler / Говнокод #28430

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    99. 99
    includelib  C:\Irvine\User32.Lib
    includelib  C:\Irvine\Kernel32.Lib
    includelib  D:\masm32\lib\Irvine32.lib
    include     \masm32\include\Irvine32.inc
    ; D:/masm32/bin/ml.exe /c  /coff  "D:\asm\simple.asm"
    ; D:/masm32\bin\link.exe /subsystem:console  "D:\asm\simple.obj"
    .data
    X Dword  ? 
    A dword  ? 
    B dword  ?
    M dword  ? 
    .code
    main PROC
    mov eax, 1
    xor ecx , ecx
    xor ebx, ebx
    strt:
    add eax , 1
    mov X, eax
    push eax
    call simple
    cmp ebx, 1
    pop eax
    je ext
    call WriteInt
    call CrLF
    ext:
    
    cmp eax, 50000000
    jb strt
    
    	exit
    main ENDP
    Simple PROC uses ecx
    Mov A, 1
    call Sqrt
    Mov A , eax
    MOV edx , 2
    rn:
    ;push edx
    mov ecx, edx
    
    mov eax , X
    mov ebx, edx
    xor edx ,edx
    div ebx 
    cmp edx, 0
    jne stp
    mov ebx ,1
    jmp var
    stp:
    ;pop edx
    mov edx,ecx
    cmp edx, A
    inc edx
    jb rn
    var:
    ret
    Simple  ENDP
    Sqrt PROC USES ebx
      mov A, 1 ;A = 1
      mov  eax ,X
      push eax
      shr  EAX, 5
      add   EAX , 8
      Mov B , EAX
      pop eax
      cmp B,0FFFFh
      jbe crt
      mov B, 0FFFFh
    crt:;do {
        mov ebx, B 
    	push A
    	add A,ebx
    	shr A, 1
    	mov ebx, A
    	pop A
    	mov M ,ebx
    	mov eax, ebx
    	mul ebx
    	cmp eax , X
        jbe  opt	
    	Mov eax, M
    	dec  eax
    	mov B , eax
    	jmp dz
    	opt:
    	mov eax, M
    	inc  eax
    	mov A , eax
    	dz:
    	mov eax, B
    	cmp eax,A
    	Jae crt
    	mov  eax , A 
    	dec eax
    	ret
    Sqrt  ENDP
     END main

    Лялька для простых чисел )))))))))

    Запостил: gne4do, 27 Октября 2022

    Комментарии (1) RSS

    Добавить комментарий