Mohammad Sadiq
Mohammad Sadiq

Reputation: 41

error like this divide error - overflow. to manually process this error, change address of INT 0 in interrupt vector table

.model small
.stack 100h
.data
number dw '12345'
result db 15 dup('$')
.code
main proc
    mov ax,@data
    mov ds,ax
    mov ax,number
    mov bx,offset result
    mov cx,0
l1: mov dx,0        
    div cx
    add dx,48
    push dx
    inc cx
    cmp ax,0
    jne l1
l2: pop dx
    mov [bx],dl
    inc bx
    loop l2

    mov ah,9
    mov dx,offset result
    int 21h
    mov ax,4c00h
    int 21h
main endp
end main

Upvotes: 3

Views: 10664

Answers (2)

Aman Goel
Aman Goel

Reputation: 1

We can't divide 16 bit register by 16 bit register. Try dividing 16 bits by 8 bits register it will work. Basically we can't divide higher bit register with lower bit register.

Upvotes: 0

rkhb
rkhb

Reputation: 14409

I assume you are using EMU8086. The error happens at div cx. This instruction means: AX = DX:AX / CX. If CX is zero, you get a "divide by zero error" - in EMU8086-syntax: "divide error - overflow.". You have at least to take care that CX won't become zero.

Upvotes: 2

Related Questions