用汇编语言实现 (a*b-c)/d 其中a、b、c、d均为有符号数,急求啊
问题描述:
用汇编语言实现 (a*b-c)/d 其中a、b、c、d均为有符号数,急求啊
答
cwd ;将c扩展成32位,在DX,AX中
mov bx, dx ;将c搬到BX,CX中,腾出AX,用来做乘法
mov cx, ax
mov ax, 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 ;取ccwd ;将c扩展成32位,在DX,AX中
mov bx, dx ;将c搬到BX,CX中,腾出AX,用来做乘法
mov cx, ax
mov ax, a ;取变量a
imul b ;乘以b,积是32位的,存在DX,AX中
sub ax, cx ;积的低位字减c的低位字
sbb dx, bx ;积的高位字带借位减c的高位字
idiv d ;除以d,商在AX中,余数在DX中