I was trying to run my assembly language program written in MASM x86 where i found out that everytime when i print out my receipt, all burgers are printed with random symbols behind it. (The original idea was to print out only the burger with quantity > 0, and then display their price per unit and quantity ordered in the next line) My code is attached as below, i suspect its a problem of logic error but i couldnt spot where is the error.
scan_burger PROC
CMP burger_quantity[0], 0
JLE detect_burger_quantity_A
CALL display_burger1
detect_burger_quantity_A:
CMP burger_quantity[1], 0
JLE detect_burger_quantity_B
CALL display_burger2
detect_burger_quantity_B:
CMP burger_quantity[2], 0
JLE detect_burger_quantity_C
CALL display_burger3
detect_burger_quantity_C:
CMP burger_quantity[3], 0
JLE return_scan_burger
CALL display_burger4
return_scan_burger:
ret
scan_burger ENDP
display_burger1 PROC
MOV AH, 09H
LEA DX, burger_1_name
INT 21H
MOV AH, 09H
LEA DX, next_line
INT 21H
XOR AX, AX
MOV AL, burger_quantity[0]
DIV ten
MOV Q1, AL
MOV R1, AH
ADD Q1, '0'
ADD R1, '0'
MOV AH, 09H
MOV DL, Q1
INT 21H
MOV AH, 09H
MOV DL, R1
INT 21H
MOV AH, 09H
LEA DX, space
INT 21H
MOV AH, 09H
LEA DX, burger_price[0]
INT 21H
display_burger1 ENDP
display_burger2 PROC
MOV AH, 09H
LEA DX, burger_2_name
INT 21H
MOV AH, 09H
LEA DX, next_line
INT 21H
XOR AX, AX
MOV AL, burger_quantity[1]
DIV ten
MOV Q1, AL
MOV R1, AH
ADD Q1, '0'
ADD R1, '0'
MOV AH, 09H
MOV DL, Q1
INT 21H
MOV AH, 09H
MOV DL, R1
INT 21H
MOV AH, 09H
LEA DX, space
INT 21H
MOV AH, 09H
LEA DX, burger_price[1]
INT 21H
display_burger2 ENDP
display_burger3 PROC
MOV AH, 09H
LEA DX, burger_3_name
INT 21H
MOV AH, 09H
LEA DX, next_line
INT 21H
XOR AX, AX
MOV AL, burger_quantity[2]
DIV ten
MOV Q1, AL
MOV R1, AH
ADD Q1, '0'
ADD R1, '0'
MOV AH, 09H
MOV DL, Q1
INT 21H
MOV AH, 09H
MOV DL, R1
INT 21H
MOV AH, 09H
LEA DX, space
INT 21H
MOV AH, 09H
LEA DX, burger_price[2]
INT 21H
display_burger3 ENDP
display_burger4 PROC
MOV AH, 09H
LEA DX, burger_4_name
INT 21H
MOV AH, 09H
LEA DX, next_line
INT 21H
XOR AX, AX
MOV AL, burger_quantity[3]
DIV ten
MOV Q1, AL
MOV R1, AH
ADD Q1, '0'
ADD R1, '0'
MOV AH, 09H
MOV DL, Q1
INT 21H
MOV AH, 09H
MOV DL, R1
INT 21H
MOV AH, 09H
LEA DX, space
INT 21H
MOV AH, 09H
LEA DX, burger_price[3]
INT 21H
display_burger4 ENDP