Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SYS_EXIT equ 1
- SYS_READ equ 3
- SYS_WRITE equ 4
- STDIN equ 0
- STDOUT equ 1
- segment .data
- msg db "Please enter a digit ", 0xA,0xD
- len equ $- msg
- segment .bss
- number1 resb 2
- number2 resb 2
- result resb 1
- result2 resb 1
- segment .text
- msg2 db "Please enter a second digit", 0xA,0xD
- len2 equ $- msg2
- msg3 db "The sum is: "
- len3 equ $- msg3
- msg4 db "The minus is: "
- len4 equ $- msg4
- global _start
- _start:
- mov eax, SYS_WRITE ; System write
- mov ebx, STDOUT ; System output
- mov ecx, msg ; What to write
- mov edx, len ; Length to write
- int 0x80 ; Interupt Kernel
- mov eax, SYS_READ ; System read
- mov ebx, STDIN ;
- mov ecx, number1
- mov edx, 2
- int 0x80
- mov eax, SYS_WRITE
- mov ebx, STDOUT
- mov ecx, msg2
- mov edx, len2
- int 0x80
- mov eax, SYS_READ
- mov ebx, STDIN
- mov ecx, number2
- mov edx, 2
- int 0x80
- call add
- add:
- mov eax, SYS_WRITE
- mov ebx, STDOUT
- mov ecx, msg3
- mov edx, len3
- int 0x80
- ;load number1 into eax and subtract '0' to convert from ASCII to decimal
- mov eax, [number1]
- sub eax, '0'
- ; do the same for number2
- mov ebx, [number2]
- sub ebx, '0'
- ; add eax and ebx, storing the result in eax
- add eax, ebx
- ; add '0' to eax to convert the digit from decimal to ASCII
- add eax, '0'
- ; store the result in result
- mov [result], eax
- ; print the result digit
- mov eax, SYS_WRITE
- mov ebx, STDOUT
- mov ecx, result
- mov edx, 1
- int 0x80
- ret
- minus:
- mov eax, SYS_WRITE
- mov ebx, STDOUT
- mov ecx, msg4
- mov edx, len4
- int 0x80
- ;load number1 into eax and subtract '0' to convert from ASCII to decimal
- mov eax, [number1]
- sub eax, '0'
- ; do the same for number2
- mov ebx, [number2]
- sub ebx, '0'
- ; add eax and ebx, storing the result in eax
- sub eax, ebx
- ; add '0' to eax to convert the digit from decimal to ASCII
- add eax, '0'
- ; store the result in result
- mov [result2], eax
- ; print the result digit
- mov eax, SYS_WRITE
- mov ebx, STDOUT
- mov ecx, result
- mov edx, 1
- int 0x80
- ret
- mul:
- ;load number1 into eax and subtract '0' to convert from ASCII to decimal
- mov al, [number1]
- sub al, '0'
- ; do the same for number2
- mov bl, [number2]
- sub bl, '0'
- ; add eax and ebx, storing the result in eax
- mul bl
- ; add '0' to eax to convert the digit from decimal to ASCII
- add al, '0'
- ; store the result in result
- mov [result], al
- ; print the result digit
- mov eax, SYS_WRITE
- mov ebx, STDOUT
- mov ecx, result
- mov edx, 1
- int 0x80
- ret
- exit:
- mov eax, SYS_EXIT
- xor ebx, ebx
- int 0x80
Add Comment
Please, Sign In to add comment