Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .586
- .MODEL FLAT, C
- .DATA
- order1Switch DB 1 ;Set to 0 if addition/multiplication/exponentiation, 1 if subtraction/division/modulus
- order2Switch DB 0 ;Set to 0 if addition/subtraction, 1 if multiplication/division
- order3Switch DB 1 ;Set to 0 if addition/subtraction/multiplication/division, 1 if exponentiation/modulus
- a DD 7
- b DD 2
- .CODE
- MAIN PROC
- mov ecx, 0 ;Set ECX to 0 for counter
- ; Initalize data register (EAX, accumulator) with 0
- mov eax, 0
- cmp order3Switch, 0
- jg ord3Exec
- cmp order2Switch, 0
- je ord1Exec
- jmp ord2Exec
- ord1Exec:
- add eax, a
- cmp order1Switch, 0
- je execAdd
- jmp execSub
- ord2Exec:
- cmp order1Switch, 0
- je execMulti
- jmp execDivi
- ord3Exec:
- cmp order1Switch, 0
- je execExp
- jmp execMod
- execAdd:
- call ADDITION
- jmp endSect
- execSub:
- call SUBTRACTION
- jmp endSect
- execMulti:
- call MULTIPLICATION
- jmp endSect
- execDivi:
- call DIVISION
- jmp endSect
- execExp:
- call EXPONENTIATION
- jmp endSect
- execMod:
- call MODULUS
- jmp endSect
- endSect:
- mov eax, eax
- MAIN ENDP
- ADDITION PROC
- add eax, b
- ret
- ADDITION ENDP
- SUBTRACTION PROC
- sub eax, b
- ret
- SUBTRACTION ENDP
- MULTIPLICATION PROC
- mov ecx, b
- multiply:
- add eax, a
- loop multiply
- ret
- MULTIPLICATION ENDP
- MULTIPLICATIONEXP PROC
- mov ecx, a
- multiply:
- add eax, a
- loop multiply
- ret
- MULTIPLICATIONEXP ENDP
- DIVISION PROC
- mov eax, a
- divi:
- sub eax, b
- inc ecx
- cmp eax, 0
- jg divi
- finish:
- cmp eax, 0
- jl fail
- mov eax, ecx
- ret
- fail:
- ;Numbers do not evenly divide
- ;Output 0, indicates failure
- mov eax, 0
- ret
- DIVISION ENDP
- EXPONENTIATION PROC
- mov edx, b
- dec edx
- expon:
- call MULTIPLICATIONEXP
- dec edx
- cmp edx, 0
- jne expon
- ret
- EXPONENTIATION ENDP
- MODULUS PROC
- mov eax, a
- divi:
- sub eax, b
- cmp eax, 0
- jg divi
- je finish
- jl modu
- finish:
- mov eax, 0
- ret
- modu:
- mov edx, 0
- sub edx, eax
- mov eax, edx
- ret
- MODULUS ENDP
- END
Advertisement
Add Comment
Please, Sign In to add comment