Assembly 装配分割错误

Assembly 装配分割错误,assembly,divide-by-zero,Assembly,Divide By Zero,请解释一下,为什么我会得到这个代码的“除以零”错误: “mov ax,300 mov bl,2 idiv bl“ 它应该是这样的:al=ax div source,ah=ax mod sourceidiv是有符号除法,正如您所说,它在al中产生商。这是一个8位寄存器和300/2=150,当使用有符号算术时,它不适合8位(因为最大值为127)。有点误导,溢出也会得到除以零(实际上称为#去除法错误)。这当然写在指令集参考中 如果您对无符号计算感到满意,可以使用div bl,在这种情况下,150适合a

请解释一下,为什么我会得到这个代码的“除以零”错误:

“mov ax,300

mov bl,2

idiv bl“


它应该是这样的:al=ax div source,ah=ax mod source

idiv
是有符号除法,正如您所说,它在
al
中产生商。这是一个8位寄存器和
300/2=150
,当使用有符号算术时,它不适合8位(因为最大值为
127
)。有点误导,溢出也会得到
除以零
(实际上称为
#去除法错误
)。这当然写在指令集参考中

如果您对无符号计算感到满意,可以使用
div bl
,在这种情况下,
150
适合
al
,并且不会出现错误