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