section .data
    prompt1 db "Key in the first number : ", 0
    prompt2 db "Key in the second number : ", 0
    result1 db "The total is ", 0
    result2 db "The division result is ", 0
    result3 db "The remainder value is ", 0
    newline db 10, 0

section .bss
    num1 resb 2
    num2 resb 2

section .text
    global _start

_start:
   
    mov eax, 4
    mov ebx, 1
    mov ecx, prompt1
    mov edx, 23
    int 0x80


    mov eax, 3
    mov ebx, 0
    mov ecx, num1
    mov edx, 2
    int 0x80

   
    mov eax, 4
    mov ebx, 1
    mov ecx, prompt2
    mov edx, 24
    int 0x80


    mov eax, 3
    mov ebx, 0
    mov ecx, num2
    mov edx, 2
    int 0x80

    mov al, [num1]
    sub al, '0'
    mov [num1], al


    mov al, [num2]
    sub al, '0'
    mov [num2], al


    mov al, [num1]
    mul byte [num2]
    mov [num1], al

  
    mov eax, 4
    mov ebx, 1
    mov ecx, result1
    mov edx, 13
    int 0x80

    mov al, [num1]
    add al, '0'
    mov [num1], al
    mov ecx, num1
    mov edx, 1
    int 0x80

    
    mov eax, 4
    mov ebx, 1
    mov ecx, newline
    mov edx, 1
    int 0x80

    mov al, [num1]
    div byte [num2]
    mov [num1], al

  
    mov eax, 4
    mov ebx, 1
    mov ecx, result2
    mov edx, 16
    int 0x80

    mov al, [num1]
    add al, '0'
    mov [num1], al
    mov ecx, num1
    mov edx, 1
    int 0x80

   
    mov eax, 4
    mov ebx, 1
    mov ecx, newline
    mov edx, 1
    int 0x80


    mov al, [num1]
    mov ah, 0
    div byte [num2]
    mov [num1], ah

   
    mov eax, 4
    mov ebx, 1
    mov ecx, result3
    mov edx, 17
    int 0x80

    mov al, [num1]
    add al, '0'
    mov [num1], al
    mov ecx, num1
    mov edx, 1
    int 0x80

  
    mov eax, 4
    mov ebx, 1
    mov ecx, newline
    mov edx, 1
    int 0x80

    ; Exit program
    mov eax, 1
    xor ebx, ebx
    int 0x80