你的问题没有写全,缺少一些条件.假设这些数都是16位变量,程序可以这样写:mov ax, c;取c
cwd ;将c扩展成32位,在DX,AX中
mov bx, dx;将c搬到BX,CX中,腾出AX,用来做乘法
mov cx, ax
movax, a;取变量a
imul b;乘以b,积是32位的,存在DX,AX中
sub ax, cx;积的低位字减c的低位字
sbb dx, bx;积的高位字带借位减c的高位字
idiv d;除以d,商在AX中,余数在DX中
你的问题没有写全,缺少一些条件.假设这些数都是16位变量,程序可以这样写:mov ax, c;取c
cwd ;将c扩展成32位,在DX,AX中
mov bx, dx;将c搬到BX,CX中,腾出AX,用来做乘法
mov cx, ax
movax, a;取变量a
imul b;乘以b,积是32位的,存在DX,AX中
sub ax, cx;积的低位字减c的低位字
sbb dx, bx;积的高位字带借位减c的高位字
idiv d;除以d,商在AX中,余数在DX中