【发布时间】:2015-04-17 20:52:16
【问题描述】:
以前当我在 Turbo Debugger 中出现“除以零”错误时,我通过在 DIV-iding 之前将一个零放入 DX 寄存器来解决它。
当我添加包含 di-register 的行时返回的问题(在代码中用“最近添加的”cmets 标记)。
查看 turbo 调试器,在第一次返回“Lab:”标签后发生除零错误。
除了本例之外,还有哪些因素会导致除零错误?
.MODEL SMALL
Print EQU 2
Exit EQU 4Ch
.DATA ;------------------------------------------------------
a DW 59
ten DW 10
.CODE ;------------------------------------------------------
Start PROC
mov ax, SEG DGROUP
mov ds, ax
mov ax, a
mov di, 1 ; recently added
Lab:
mov dx, 0
div ten ; the "ten" variable is always non-zero (...right?)
mov [di], dx ; recently added
inc di ; recently added
mov bx, ax
add dx, '0'
mov ah, Print
int 21h
mov ax, bx
cmp ax, 0
jne Lab
mov ah, Exit
int 21h
; -----------------------------------------------------------
Start ENDP
.STACK 512
END Start
【问题讨论】: