Advertisement
kerelius

Untitled

Sep 30th, 2019
1,926
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. includelib libcmt.lib
  2. includelib libvcruntime.lib
  3. includelib libucrt.lib
  4. includelib legacy_stdio_definitions.lib  
  5.  
  6. extern printf_s: proc, scanf_s: proc, getchar: proc, log10: proc, log: proc, exp: proc
  7.  
  8. .data
  9.     prompt byte "Enter a number x > 0 : ", 0
  10.     inputFormatString byte "%lf", 0
  11.     invalidInputMessage byte "Error: Invalid Input.", 10, 13, 0
  12.     formatString1 byte "x = %2.6lf", 10, 0
  13.     formatString2 byte "log10(x) = %2.6lf", 10, 0
  14.     formatString3 byte "ln(x) = %2.6lf", 10, 0
  15.     formatString4 byte "e^x = %2.6lf", 10, 0
  16.     ZERO    real8   0.0
  17.  
  18. .data?
  19.    num real8 ?                              ;                              
  20.  
  21. .code
  22. main proc  
  23.     push rbp
  24.     mov rbp, rsp
  25.     sub rsp,  32
  26.      lea         rcx,   [prompt]            ;
  27.      call        printf_s                       ;  
  28.    
  29.      lea         rdx,   [num]                   ;  scanf_s("lf", &num);
  30.      lea         rcx,   [inputFormatString]     ;  
  31.      call        scanf_s                        ;  
  32.  
  33.      movsd      xmm0, qword ptr [num]
  34.      comisd     xmm0, ZERO
  35.      jle        error
  36.  
  37.      mov         rdx,   [num]
  38.      lea         rcx,   [formatString1]
  39.      call        printf_s
  40.  
  41.      movsd       xmm0,  num
  42.      call        log10
  43.      movq        rdx,   xmm0
  44.      lea         rcx,   [formatString2]
  45.      call        printf_s
  46.  
  47.      movsd       xmm0,  num
  48.      call        log
  49.      movq        rdx,   xmm0
  50.      lea         rcx,   [formatString3]
  51.      call        printf_s      
  52.  
  53.      movsd       xmm0,  num
  54.      call        exp
  55.      movq        rdx,   xmm0
  56.      lea         rcx,   [formatString3]
  57.      call        printf_s
  58.      jmp         terminate
  59.  
  60.      error:
  61.          lea         rcx,   [invalidInputMessage]
  62.          call        printf_s
  63.  
  64.  
  65.  
  66.     terminate:
  67.         xor rax, rax
  68.         leave
  69. main endp
  70. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement