TheQuack45

Integer arithmetic operations in x86 MASM cleaned up

Mar 17th, 2016
416
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .586
  2. .MODEL FLAT, C
  3.  
  4. .DATA
  5. order1Switch DB 0 ;Set to 0 if addition, 1 if subtraction
  6. a DWORD 5
  7. b DWORD 2
  8.  
  9. .CODE
  10.  
  11. MAINNEW PROC
  12.     mov ecx, 0 ;Set ECX to 0 for counter
  13.    
  14.     ; Initalize data register (EAX, accumulator) with first value
  15.     mov eax, 0
  16.     add eax, a
  17.  
  18.     cmp order1Switch, 0
  19.     je execAdd
  20.     jmp execSub
  21.  
  22.     execAdd:
  23.         call ADDITION
  24.         jmp endSect
  25.  
  26.     execSub:
  27.         call SUBTRACTION
  28.         jmp endSect
  29.  
  30.     execMulti:
  31.         call MULTIPLICATION
  32.         jmp endSect
  33.  
  34.     endSect:
  35.         mov eax, eax
  36. MAINNEW ENDP
  37.  
  38. ADDITION PROC
  39.     add eax, b
  40.     ret
  41. ADDITION ENDP
  42.  
  43. SUBTRACTION PROC
  44.     sub eax, b
  45.     ret
  46. SUBTRACTION ENDP
  47.  
  48. MULTIPLICATION PROC
  49.     mov ecx, b
  50.     multiply:
  51.         add eax, a
  52.         loop multiply
  53.     ret
  54. MULTIPLICATION ENDP
  55.  
  56. DIVISION PROC
  57.    
  58. DIVISION ENDP
  59.  
  60. END
Advertisement
Add Comment
Please, Sign In to add comment