Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %include "CPsub64.inc"
- global main
- section .text
- main:
- ; initial setup
- mov rcx, 1
- mov rdi, 1
- ; Start of addidtion
- ; display what operation is being done
- mov rax, 1
- mov rsi, messageADD
- mov rdx, lengthADD
- syscall
- ; print a blankline
- mov rax, 1
- mov rsi, blankline
- mov rdx, length1
- syscall
- ; display the message for the first input for addition
- mov rax, 1
- mov rsi, message1
- mov rdx, length1
- syscall
- ; take in the input for addidtion 1
- mov rdx, 255
- mov rcx, userinputADD1
- mov rbx, 0
- mov rax, 3
- int 80h
- ; covert from string to number 1
- mov rdx, userinputADD1
- mov rcx, 255
- call ParseInteger64
- mov r8, rax
- ; display the message for the second input for addidtion
- mov rax, 1
- mov rsi, message2
- mov rdx, length2
- syscall
- ; take in the input for addidtion 2
- mov rdx, 255
- mov rcx, userinputADD2
- mov rbx, 0
- mov rax, 3
- int 80h
- ; covert from string to number 2
- mov rdx, userinputADD2
- mov rcx, 255
- call ParseInteger64
- mov r9, rax
- ; addidtion
- add r9,r8
- ; display addidtion answer
- mov rax, r9
- call WriteInt
- ; Print a blankline
- mov rax, 1
- mov rsi, blankline
- mov rdx, length1
- syscall
- ;==============================
- ; Start of subtraction
- ; display what operation is being done
- mov rax, 1
- mov rsi, messageSUB
- mov rdx, lengthSUB
- syscall
- ; print a blankline
- mov rax, 1
- mov rsi, blankline
- mov rdx, length1
- syscall
- ; display the message for the first input for subtraction
- mov rax, 1
- mov rsi, message1
- mov rdx, length1
- syscall
- ; take in the input for subtraction 1
- mov rdx, 255
- mov rcx, userinputSUB1
- mov rbx, 0
- mov rax, 3
- int 80h
- ; covert from string to number 1
- mov rdx, userinputSUB1
- mov rcx, 255
- call ParseInteger64
- mov r8, rax
- ; display the message for the second input for subtraction
- mov rax, 1
- mov rsi, message2
- mov rdx, length2
- syscall
- ; take in the input for subtraction 2
- mov rdx, 255
- mov rcx, userinputSUB2
- mov rbx, 0
- mov rax, 3
- int 80h
- ; covert from string to number 2
- mov rdx, userinputSUB2
- mov rcx, 255
- call ParseInteger64
- mov r9, rax
- ; subtraction
- sub r9,r8
- ; display subtraction answer
- mov rax, r9
- call WriteInt
- ;==========================================
- ; Start of Multiplication
- ; display what operation is being done
- mov rax, 1
- mov rsi, messageMUL
- mov rdx, lengthMUL
- syscall
- ; print a blankline
- mov rax, 1
- mov rsi, blankline
- mov rdx, length1
- syscall
- ; display the message for the first input for multiplication
- mov rax, 1
- mov rsi, message1
- mov rdx, length1
- syscall
- ; take in the input for multiplication 1
- mov rdx, 255
- mov rcx, userinputMUL1
- mov rbx, 0
- mov rax, 3
- int 80h
- ; covert from string to number 1
- mov rdx, userinputMUL1
- mov rcx, 255
- call ParseInteger64
- mov r8, rax
- ; display the message for the second input for multiplication
- mov rax, 1
- mov rsi, message2
- mov rdx, length2
- syscall
- ; take in the input for multiplication 2
- mov rdx, 255
- mov rcx, userinputMUL2
- mov rbx, 0
- mov rax, 3
- int 80h
- ; covert from string to number 2
- mov rdx, userinputMUL2
- mov rcx, 255
- call ParseInteger64
- mov r9, rax
- ; multiplication
- mov rax, 5
- mov rsi, 4
- mul rsi
- ; display multiplication answer
- mov rax, r8
- call WriteInt
- ; Print a blankline
- mov rax, 1
- mov rsi, blankline
- mov rdx, length1
- syscall
- ;=======================================
- ;Start Division
- ; display what operation is being done
- mov rax, 1
- mov rsi, messageDIV
- mov rdx, lengthDIV
- syscall
- ; Take in the input
- mov rdx, 255
- mov rcx, userinputDIV1
- mov rbx, 0
- mov rax, 3
- int 80h
- call DumpMem
- ; Covert from string to number
- mov rdx, userinputDIV1
- mov rcx, 255
- call ParseInteger64
- mov r8, rax
- ;display the message for the second input
- mov rax, 1
- mov rsi, message2
- mov rdx, length2
- syscall
- ; Take in the input
- mov rdx, 255
- mov rcx, userinputDIV2
- mov rbx, 0
- mov rax, 3
- int 80h
- ; Covert from string to number
- mov rdx, userinputDIV2
- mov rcx, 255
- call ParseInteger64
- mov r9, rax
- ; division
- ;mov rdx, 0
- ;mov rax, r8
- ;div r9
- mov rdx, 0
- mov rax, 20
- mov rsi, 4
- div rsi
- ; display division answer
- mov rax, r8
- call WriteInt
- ; Print a blankline
- mov rax, 1
- mov rsi, blankline
- mov rdx, length1
- syscall
- ; exit command
- mov rax, 60
- xor rdi, rdi
- syscall
- section .data
- messageADD: db "We are adding numbers:" ,0,0ah
- lengthADD: equ ($-messageSUB)
- messageSUB: db "We are subtracting numbers now:" ,0,0ah
- lengthSUB: equ ($-messageSUB)
- messageMUL: db "We are multiplying now:" ,0,0ah
- lengthMUL: equ ($-messageMUL)
- messageDIV: db "We are dividing now:" ,0,0ah
- lengthDIV: equ ($-messageMUL)
- message1: db "Please enter the first number:" ,0,0ah
- length1: equ ($-message1)
- message2: db "Please enter the second number:" ,0,0ah
- length2: equ ($-message2)
- blankline:db '',0,0ah
- lengthblank: equ ($-blankline)
- section .bss
- userinputADD1: resb 255 ;reserving 255 bytes
- userinputADD2: resb 255 ;reserving 255 bytes
- userinputSUB1: resb 255 ;reserving 255 bytes
- userinputSUB2: resb 255 ;reserving 255 bytes
- userinputMUL1: resb 255 ;reserving 255 bytes
- userinputMUL2: resb 255 ;reserving 255 bytes
- userinputDIV1: resb 255 ;reserving 255 bytes
- userinputDIV2: resb 255 ;reserving 255 bytes
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement