# Assembly Program to Count the Number of 1 Bits in BX

This program will calculate the number of 1 bit in BX without changing BX. The basic logic of the program is it copies the BX into AX and takes the AND of 1 with AX if the result is 1 then there is 1 at LSB and if it's 0 then there is 0 at LSB. If it's one then we count it otherwise not. Also, rotate BX by one to check for the next bit. This will loop 16 times.

In this program, the value I have moved in BX is 0EF0h which means 0000110111110000b so this has 7 ones so the program will output 7 and If you change BX the output will be different according to your number.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | .MODEL SMALL .STACK 100H .DATA .CODE MAIN PROC MOV DX, 0 MOV BX, 0EF0H MOV CX, 16 LABEL: DEC CX MOV AX, BX AND AX, 1 ROL BX, 1 CMP AX, 0 JG INCREMENT CMP CX, 0 JG LABEL JMP END INCREMENT: INC DX CMP CX, 0 JG LABEL END: ADD DX, 48 MOV AH, 2 INT 21H MAIN ENDP END MAIN |

## No comments