装配中的高数量划分

TJR*_*TJR 2 optimization x86 assembly

我试图找到一个1896阵列的crusor位置(在2D中成为整个控制台,79*24).为此我取了位置并将它除以79.

MOV AX, [Y-16H]
 DEC AX
 MOV BX, 79
 DIV BX   
 MOV Z, DL
 ADD Z, DH
 MOV DL, Z
 MOV Z, AL
 ADD Z, AH
 MOV DH, Z
Run Code Online (Sandbox Code Playgroud)

我收到溢出错误.你能告诉我,我做错了吗?也许建议解决方案?

Mic*_*ael 9

DIV BX将由DX(高位字)和AX(低位字)形成的32位数除以BX.因此,您需要在分割之前清除DX(例如XOR DX,DX)以避免溢出.

顺便问一下,你确定你不想除以80吗?我从来没有听说过79柱控制台,虽然我不是这方面的专家