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