Write an assembly language program to count the number of 1’s in a byte stored in memory location 2000H.
Write an assembly language program to count the number of 1’s in a byte stored in memory location 2000H.
Algorithm:
Step 1: Point to memory location 2000H
Step 2: Load register A (Accumulator) with the content of memory location
Step 3: Set a counter to loop through each bits of number, Say C
Step 4: Set a counter to store the number of one’s (1’s) in the byte, Say B
Step 5: Rotate the content of accumulator to left through carry
Step 6: If no carry found from Step 5 then jump to Step 8
Step 7: Else increase the counter B by one (if carry found)
Step 8: Decrease counter C by one
Step 9: Until the value at counter C is 0 repeat from Step 5
Step 10: Terminate the program. (When C is 0)
Assembly Language:
Label | Instruction | Comments |
LXI H 2000H; | HL points at location 2000H | |
MOV A, M; | Loads A with the content of M | |
MVI C, 08H; | Sets up counter for number of bits | |
MVI B, 00H; | Sets counter to count number of ones | |
jump2: | RAL; | Rotates accumulator left through carry |
JNC jump1; | On no carry jumps to jump1: | |
INR B; | Increases counter B by one | |
jump1: | DCR C; | Decreases counter C by one |
JNZ jump2; | When C is not zero jumps to jump2: | |
HLT; | Terminates the program |