printit proc near test ax,8000h jz p neg ax mov cx,ax mov dx,2dh mov ah,2 int 21h mov ax,cx mov dx,0 p: mov bx ,10 div bx mov bx,dx mov dx,ax add dx,30h mov ah,02h int 21h mov dx,bx add dx,30h mov ah,02h int 21h ret printit endp
DIV CX这条指令,是DX:AX合起来的32bit数值除以CX的16bit数值,除法的结果必须在16bit内能表示,所以可以得出结论,如果这条指令执行前,DX中的数值比CX还大的话,就会溢出,不论CX是否为0。我估计你的原意是想要做AX除以CX,那么只要先把DX清零就行了。
时间: 2024-10-19 09:36:20