对于一个作业,我必须为Intel-8080芯片组编写一个汇编程序,该程序将两个整数(0 <= n <= 250)相除。除法的其余部分无关紧要,只有整数除法很重要。
作为参考,我们给了一个程序,它可以将两个整数相乘。
我知道执行整数除法的基本算法。但是,我正在努力用汇编代码来表达它。算法如下:
Say we want to calculate 10 DIV 3: Let m=10 and n=3.
Let i = 0
While m>n { m = m-n; i++}
m中的值将是整数除法的结果。
As stated above, this is the asm function to multiply two values.
; init
mvi l,100
mvi a,0
mov m,a
; input factor1
in 0
mvi l,101
mov m,a
; input factor2
in 0
mvi l,102
mov m,a
; call multiply function
call mult
out 0
hlt
; multiply
mult: mvi l,102
mov a,m
cpi 0
jz end
dcr a
mov m,a
mvi l,100
mov a,m
mvi l,101
add m
mvi l,100
mov m,a
jmp mult
end:
mvi l,100
mov a,
ret