Reputation: 41
.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
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
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