Page 213 - ARM 64 Bit Assembly Language
P. 213
Integer mathematics 201
Dividend: 0 1 0 1 1 1 1 0
Divisor: 0 1 1 1 0 0 0 0
Counter: 0 0 0 0 0 1 0 0
Next, we allocate a register for the quotient and initialize it to zero. Then, according to the
algorithm, we repeatedly subtract if possible, shift to the right, and decrement the counter.
This sequence continues until the counter becomes negative. For our example this results in
the following sequence:
⎫
Quotient: 0 0 0 0 0 0 0 0 ⎪
⎪ Divisor > Dividend: No subtract,
⎪
Dividend: 0 1 0 1 1 1 1 0 ⎬
shift 0 into Quotient, decrement
Divisor: 0 1 1 1 0 0 0 0 ⎪
⎪ Counter, shift Divisor right
⎪
Counter: 0 0 0 0 0 1 0 0 ⎭
⎫
Quotient: 0 0 0 0 0 0 0 0 ⎪
⎪ Divisor <= Dividend: Subtract,
⎪
Dividend: 0 1 0 1 1 1 1 0 ⎬
shift 1 into Quotient, decrement
Divisor: 0 0 1 1 1 0 0 0
⎪ Counter, shift Divisor right
⎪
⎪
Counter: 0 0 0 0 0 0 1 1 ⎭
⎫
Quotient: 0 0 0 0 0 0 0 1 ⎪
⎪ Divisor <= Dividend: Subtract,
⎪
Dividend: 0 0 1 0 0 1 1 0 ⎬
shift 1 into Quotient, decrement
Divisor: 0 0 0 1 1 1 0 0
⎪ Counter, shift Divisor right
⎪
⎪
Counter: 0 0 0 0 0 0 1 0 ⎭
⎫
Quotient: 0 0 0 0 0 0 1 1 ⎪
⎪ Divisor > Dividend: No subtract,
⎪
Dividend: 0 0 0 0 1 0 1 0 ⎬
shift 0 into Quotient, decrement
Divisor: 0 0 0 0 1 1 1 0 ⎪
⎪ Counter, shift Divisor right
⎪
Counter: 0 0 0 0 0 0 0 1 ⎭
⎫
Quotient: 0 0 0 0 0 1 1 0 ⎪
⎪ Divisor <= Dividend: Subtract,
⎪
Dividend: 0 0 0 0 1 0 1 0 ⎬
shift 1 into Quotient, decrement
Divisor: 0 0 0 0 0 1 1 1
⎪ Counter, shift Divisor right
⎪
⎪
Counter: 0 0 0 0 0 0 0 0 ⎭
⎫
Quotient: 0 0 0 0 1 1 0 1 ⎪
⎪
⎪
Dividend: 0 0 0 0 0 0 1 1 ⎬
Counter < 0: We are finished
Divisor: 0 0 0 0 0 0 1 1 ⎪
⎪
⎪
Counter: 1 1 1 1 1 1 1 1 ⎭