Algorithm
1. Initialize HL pair as memory pointer
2. Get the count at 4200 into C - register
3. Copy it in D - register (for bubble sort (N-1) times required)
4. Get the first value in A - register
5. Compare it with the value at next location
6. If they are out of order, exchange the contents of A - register and Memory
7. Decrement D - register content by 1
8. Repeat steps 5 and 7 till the value in D- register become zero
9. Decrement C - register content by 1
10. Repeat steps 3 to 9 till the value in C - register becomes zero
LXI H,5000 ;Set pointer for arrayMOV C,M ;Load the CountDCR C ;Decrement CountREPEAT: MOV D,CLXI H,5001LOOP: MOV A,M ;copy content of memory location to AccumulatorINX HCMP MJC SKIP ;jump to skip if carry generatedMOV B,M ;copy content of memory location to B - RegisterMOV M,A ;copy content of Accumulator to memory locationDCX H ;Decrement content of HL pair of registersMOV M,B ;copy content of B - Register to memory locationINX H ;Increment content of HL pair of registersSKIP: DCR D ;Decrement content of Register - DJNZ LOOP ;jump to loop if not equal to zeroDCR C ;Decrement countJNZ REPEAT ;jump to repeat if not equal to zeroHLT ;Terminate Program
0 Comments