如果除数为0,如何编写产生0的除法函数?

时间:2019-01-27 13:03:04

标签: assembly x86-16 emu8086

如果尝试除以0,则函数结果应为0。

  org 100h
  mov al,b
  mov bl,c
  mov cl,0
  cmp bl,cl
  jmp posht;
  div bl
  mov ah,d
  mul ah
  mov ah,a
  sub ah,al
posht:
  mov al,0
  ret

a dw 10
b dw 8
c dw 4
d dw 2
zero dw 0

如何使此代码在汇编语言emu8086上工作?

1 个答案:

答案 0 :(得分:1)

mov bl,c
mov cl,0
cmp bl,cl
jmp posht

要在除数恰好为0时实际纾困,您需要将此无条件jmp更改为有条件的je(如果相等则跳转)。

在进行(现在允许)除法之前,您仍然需要清空AH寄存器,因为div bl指令将对整个AX进行除法,而不仅仅是{{ 1}}。

您需要重新考虑函数如何报告其结果。目前,无论除数是否为零,AL都将始终返回等于0的值。您将如何区分?

AL