How do i fix the answer it always wrong if it is in other number?

.model small
.stack 100h
.data

Spc     db 0dh,0ah, " $"                                                ;New Line
;Bases Calculation in Calculator
BsA31   db 0dh,0ah, "   Base 03 Addition "                          ;Addition Base 03
        db 0dh,0ah, " "
        db 0dh,0ah, "Addend[00-22]:  $"
BsA32   db 0dh,0ah, "Augend[00-22]:  $"

SumA    db 0dh,0ah, "   Sum is    : $"                             ;Sum

;Calculation Logic
Dg11    db 0
Dg12    db 0
NoAd1   db 0
NoAd2   db 0
SumAd   db 0

.code
main proc

mov ax,@data                    ;initialize ds
mov ds,ax

AdBs3:
    mov ah,09h
    lea dx, Spc
    int 21h

    lea dx, BsA31               ;Addend
    int 21h
    mov ah,01h
    int 21h                     ;1st Digit

    sub al,30h
    mov ch,al


    mov ah,01h
    int 21h                     ;2nd Digit

    sub al,30h
    mov cl,al
    jmp AdBs32

AdBs32:

    mov ah,09h
    lea dx, BsA32               ;Augend
    int 21h
    mov ah,01h
    int 21h                     ;1st Digit

    sub al,30h
    add al,ch                   ;4
    mov ch,al

    mov ah,01h
    int 21h                     ;2nd Digit

    sub al,30h
    add al,cl
    mov cl,al

    ;Addition
    mov ah,09h
    lea dx, SumA
    int 21h

    mov ah,0000h
    mov bl,03h
    mov al,ch
    div bl                      ;1 r1
    mov ch,ah                   ;0102
    mov bh,al                   ;0103

    mov ah,0000h
    mov al,cl                   ;4
    add al,bh                   ;4 + 1 = 5
    div bl                      ;1 r2
    mov bx,ax                   ;0201 > r = 02 q = 01

    mov ah,02h
    add bx,3030h
    mov dl,bl
    int 21h
    mov dl,bh
    int 21h

    add ch,30h
    cmp ch,30h
    jz  AdBs3

    mov dl,ch
    int 21h

    mov ah,4Ch                      ;end here
    int 21h
AdDg3:
    sub bh,30h
    mov al,bh
    mov cl,10h
    mul cl
    mov cx,ax
    add cx,3030h
    mov ch,10h
    cmp cl,ch
    je AdDg3

    mov ah,4Ch                      ;end here
    int 21h

AdDg32:
    mov ah,02h

    mov dl,cl
    int 21h

    mov ah,4Ch                      ;end here
    int 21h

main endp
end main

Output Error:

21213.png

12 + 12 is the correct but other is not like 21 + 12 / 12 + 12...

How do i convert the Base needed to a base needed of Assembly Language

.model small
.stack 100h
.data

Spc     db 0dh,0ah, " $"                                                ;New Line

;Bases Conversion
ConT    db 0dh,0ah, "   Conversion  $"                                  ;Conversion Title
ConBs3  db 0dh,0ah, "Base 3  to Base 5  "                           
        db 0dh,0ah,0dh,0ah, "Base 3 [00 to 22] : $"                     ;Enter Base 03 Number
EqBs3       db 0dh,0ah, "Base 5 Equivalent : $"                         ;Equivalent Base 05

ConBs4  db 0dh,0ah, "Base 4  to Base 5  "                           
        db 0dh,0ah,0dh,0ah, "Base 4 [00 to 33] : $"                     ;Enter Base 04 Number
EqBs4       db 0dh,0ah, "Base 5 Equivalent : $"                         ;Equivalent Base 05

ConBs5  db 0dh,0ah, "Base 5  to Base 4  "                           
        db 0dh,0ah,0dh,0ah, "Base 5 [00 to 44] : $"                     ;Enter Base 05 Number
EqBs5       db 0dh,0ah, "Base 4 Equivalent : $"                         ;Equivalent Base 04

.code
main proc

mov ax,@data                    ;initialize ds
mov ds,ax

mov ah,09h
lea dx, Spc                 ;new line
int 21h

mov ah,4Ch                      ;end here
int 21h

main endp
end main

Total Receipt Of A Drug Item of a simple pharmacy example

package Dialogs;
import java.text.DecimalFormat;
import java.util.Scanner;

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    Scanner newdata =new Scanner(System.in);
    DecimalFormat df = new DecimalFormat(".00");
    int newprogram;
    int count = 0;
    double Total1;

    System.out.print("How many items in a counter? : ");
        int Item = sc.nextInt();
        String new1 [] = new String [Item];
        int new2 [] = new int [Item];
        double new3 [] = new double [Item];

        double Totalnew1, Totalnew2, value;
        System.out.println();

    for(int i = 0; i< new1.length; i++){
        count++;
        System.out.println("\nDrug Item "+count);

        System.out.print("Enter The Drug Name : ");
        new1 [i] = sc.next();
        System.out.print("Enter Quantity: ");
        new2 [i] = sc.nextInt();
        System.out.print("Enter Price   : ");
        new3 [i]  = sc.nextDouble();
        System.out.println("");
        }

    System.out.println("\n====================  [ SUMMARY OF ORDERS  ]  ===================");
    System.out.println("Drug Name      Quantity       Item Price        Total Price");

    for(int i = 0; i < new1.length; i++){
        System.out.print(new1[i]);
        System.out.print("         "+new2[i]);
        System.out.print("             "+df.format(new3[i])+"          ");

        Total1 = new2[i]*new3[i];
        System.out.println(df.format(Total1));
    }
    }
    }
    // I want to know How to get this?
    [  TOTAL SUMMARY  ]

Total Price 450.00
After Tax 484 // 450 + Vat
VAT Tax ( 12% ) 54 // 450 .12
Discount ( 20% ) 96.8 // after tax
.20
=============================

Total Price Tax
With VAT /Discount 96.8 // Discount

======================================================
[1]Cash
[2]Credit Card
Choose Type Are : 1

======================================================
Amount of Pay
387.2 // After Tax - Discount

Cash
400 //

Exchange
12.8 // Cash - Amount