Advertisement
TeRackSito

FactorialEnsamblador

Nov 11th, 2023
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. global main
  2.  
  3. extern __mingw_vfscanf
  4. extern __mingw_vfprintf
  5. extern __main
  6. extern __imp___acrt_iob_func
  7.  
  8.  
  9. SECTION .text
  10.  
  11. .text:
  12. printf: push    rsi
  13.         push    rbx
  14.         mov     rbx, rcx
  15.         mov     ecx, 1
  16.         sub     rsp, 56
  17.         lea     rsi, [rsp+58H]
  18.         mov     qword [rsp+58H], rdx
  19.         mov     qword [rsp+60H], r8
  20.         mov     qword [rsp+68H], r9
  21.         mov     qword [rsp+28H], rsi
  22.         call    near [rel __imp___acrt_iob_func]
  23.         mov     r8, rsi
  24.         mov     rdx, rbx
  25.         mov     rcx, rax
  26.         call    __mingw_vfprintf
  27.         add     rsp, 56
  28.         pop     rbx
  29.         pop     rsi
  30.         ret
  31.  
  32. ALIGN   16
  33.  
  34. scanf.constprop.0:
  35.         push    rbx
  36.         xor     ecx, ecx
  37.         sub     rsp, 48
  38.         lea     rbx, [rsp+48H]
  39.         mov     qword [rsp+48H], rdx
  40.         mov     qword [rsp+50H], r8
  41.         mov     qword [rsp+58H], r9
  42.         mov     qword [rsp+28H], rbx
  43.         call    near [rel __imp___acrt_iob_func]
  44.         mov     r8, rbx
  45.         lea     rdx, [rel ?_001]
  46.         mov     rcx, rax
  47.         call    __mingw_vfscanf
  48.         add     rsp, 48
  49.         pop     rbx
  50.         ret
  51.  
  52.         nop
  53.         nop
  54.  
  55.  
  56. SECTION .data
  57.  
  58. SECTION .bss
  59.  
  60. SECTION .rdata
  61.  
  62. ?_001:
  63.         db 25H, 64H, 00H
  64.  
  65. ?_002:
  66.         db 49H, 6EH, 74H, 72H, 6FH, 64H, 75H, 7AH
  67.         db 63H, 61H, 20H, 75H, 6EH, 20H, 6EH, 0C3H
  68.         db 0BAH, 6DH, 65H, 72H, 6FH, 3AH, 20H, 00H
  69.         db 00H, 00H, 00H, 00H, 00H
  70.  
  71. ?_003:
  72.         db 45H, 6CH, 20H, 6EH, 0C3H, 0BAH, 6DH, 65H
  73.         db 72H, 6FH, 20H, 64H, 65H, 62H, 65H, 20H
  74.         db 73H, 65H, 72H, 20H, 70H, 6FH, 73H, 69H
  75.         db 74H, 69H, 76H, 6FH, 2EH, 0AH, 00H
  76.  
  77. ?_004:
  78.         db 45H, 6CH, 20H, 66H, 61H, 63H, 74H, 6FH
  79.         db 72H, 69H, 61H, 6CH, 20H, 64H, 65H, 20H
  80.         db 25H, 64H, 20H, 65H, 73H, 3AH, 20H, 25H
  81.         db 2EH, 30H, 66H, 0AH, 00H, 00H, 00H, 00H
  82.         db 00H
  83.  
  84. ?_005:  dq 3FF0000000000000H
  85.         dq 0000000000000000H
  86.  
  87.  
  88. SECTION .text.startup
  89.  
  90. .text.startup:
  91.  
  92. main:
  93.         sub     rsp, 56
  94.         call    __main
  95.         lea     rcx, [rel ?_002]
  96.         call    printf
  97.         lea     rdx, [rsp+2CH]
  98.         lea     rcx, [rel ?_001]
  99.         call    scanf.constprop.0
  100.         mov     edx, dword [rsp+2CH]
  101.         test    edx, edx
  102.         js      ?_009
  103.         movsd   xmm2, qword [rel ?_005]
  104.         mov     eax, edx
  105.         jz      ?_007
  106.  
  107. ALIGN   8
  108. ?_006:  pxor    xmm0, xmm0
  109.         cvtsi2sd xmm0, eax
  110.         mulsd   xmm2, xmm0
  111.         sub     eax, 1
  112.         jnz     ?_006
  113. ?_007:  movq    r8, xmm2
  114.         lea     rcx, [rel ?_004]
  115.         call    printf
  116.         xor     eax, eax
  117. ?_008:  add     rsp, 56
  118.         ret
  119.  
  120. ?_009:
  121.         lea     rcx, [rel ?_003]
  122.         call    printf
  123.         mov     eax, 1
  124.         jmp     ?_008
  125.  
  126.         nop
  127.         nop
  128.         nop
  129.         nop
  130.  
  131. SECTION .rdata$zzz
  132.  
  133.         db 47H, 43H, 43H, 3AH, 20H, 28H, 52H, 65H
  134.         db 76H, 36H, 2CH, 20H, 42H, 75H, 69H, 6CH
  135.         db 74H, 20H, 62H, 79H, 20H, 4DH, 53H, 59H
  136.         db 53H, 32H, 20H, 70H, 72H, 6FH, 6AH, 65H
  137.         db 63H, 74H, 29H, 20H, 31H, 33H, 2EH, 31H
  138.         db 2EH, 30H, 00H, 00H, 00H, 00H, 00H, 00H
  139.  
  140.  
  141.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement