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

 

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>