.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
答案 0 :(得分:2)
我假设您使用的是EMU8086。错误发生在div cx
。该指令意味着:AX = DX:AX / CX
。如果CX
为零,则会出现“除以零错误” - 在EMU8086语法中:“除错 - 溢出。”。您至少要注意CX
不会变为零。
答案 1 :(得分:0)
我们无法将16位寄存器除以16位寄存器。尝试将16位除以8位寄存器将起作用。基本上我们不能将高位寄存器与低位寄存器相除。