我试图理解这段汇编代码如何进行8位乘法运算。我确实知道每条线的作用,但我无法理解它是如何使整个倍增的。
你能解释它是如何进行乘法的吗? 提前致谢
;=========================================================
;routine: mult_soft
; function: 8-bit unsigned multiplier using
; shift-and-add algorithm
; input register:
; s3: multiplicand
; s4: multiplier
; output register:
; s5: upper byte of product
; s6: lower byte of product
; temp register: s2
;=========================================================
load s3, 2 ;multiplicand
load s4, 2 ;multiplier
mult_soft:
load s5, 00 ;clear s5
load s2, 08 ;initialize loop index
mult_loop:
sr0 s4 ;shift lsb to carry
jump nc, shift_prod ;lsb is 0
add s5, s3 ;lsb is 1
shift_prod:
sra s5 ;shift upper byte right,
;carry to MSB, LSB to carry
sra s6 ;shift lower byte right,
;lsb of s5 to MSB of s6
sub s2, 01 ;dec loop index
jump nz, mult_loop ;repeat until i=0
ret