错误就像这个除错 - 溢出。要手动处理此错误,请在中断向量表中更改INT 0的地址

时间:2014-08-29 06:07:04

标签: assembly x86 dos

.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

2 个答案:

答案 0 :(得分:2)

我假设您使用的是EMU8086。错误发生在div cx。该指令意味着:AX = DX:AX / CX。如果CX为零,则会出现“除以零错误” - 在EMU8086语法中:“除错 - 溢出。”。您至少要注意CX不会变为零。

答案 1 :(得分:0)

我们无法将16位寄存器除以16位寄存器。尝试将16位除以8位寄存器将起作用。基本上我们不能将高位寄存器与低位寄存器相除。