Assembly question

Niro7777777@'s Avatar, Join Date: Feb 2010
Newbie Member
I have two different lists

qlst1 dq 80000, 40000, 123123, 123123
dlst1 dd 533, 2314, 123, 231

alst1 dd 4 (?) DUP

Now I want to divide the qlst by dlst and then save in the alst which is alst1
How do I do it. qlst1 is a quad so that I cannot put in a register directly.

mov eax, dlst
lea ebx, qlst


mov eax, dword ptr[ebx]+4
mov alst, eax

I am lost from here, please help
xpi0t0s's Avatar, Join Date: Aug 2004
Mentor
Do you remember doing long division at school? For example 56473/27 might be done as:
Code:
    __2091_
27 ) 56473
     54
     --
      247
      243
      ---
        43
        27
        --
        16

56473/27=2091 r 16
So one way is to code up this algorithm. Another way is to shift and subtract, e.g.
56473/27

part 1:
27>56473? no: shift left and repeat (should that be > or >=?)
270>56473? no: shift left and repeat
2700
27000
270000>56473? yes: shift right

part 2:
27000>56473? no: subtract

56473
27000-
=====
29473

27000>29473? no: subtract (leaves 2473)
27000>2473? yes: shift right
2700>473? yes: shift right
270>2473? no: subtract
270>2203? no: subtract
270>1933? no: subtract
270>1663? no: subtract
270>1393? no: subtract
270>1123? no: subtract
270>853? no: subtract
270>583? no: subtract
270>313? no: subtract
270>43? yes: shift right
27>43? no: subtract
27>16? yes: can't shift right any more so this ends the loop.

This doesn't show where you get the answer (2091) from, but maybe you can figure that bit out?