; count number of 1's in a given data byte ; data: 4000H ; result: 4001H ORG 0H DATA_ADDR EQU 4000H MAIN: MOV DPTR,#DATA_ADDR   ; fill memory MOV A, #55H MOVX @DPTR,A LCALL COUNT SJMP MAIN  COUNT: MOV DPTR,#DATA_ADDR  ;Load dptr with #DATA_ADDR MOVX A,@DPTR    ;move data from external memory location to a MOV R0,#0H      ;load r0 with 0 MOV R1,#8H      ;load r1 with 8 CLR C           ;clear carry bit up:   RLC A            ;rotate a left through carry JNC next    ;if no carry, jump to label next INC R0           ;increment r0 next:  DJNZ R1,up       ;decrement r1, and jump to label next, if r1>0 INC DPTR    ;increment dptr MOV A,R0    ;move data from r0 to a MOVX @DPTR,A     ;move data from a to external memory location return: RET  END 
Related topics:
8051 Program - search an element in an array | 8051 Program - search a byte in array and count match | 8051 Program - square of a given number 8bit | 8051 Program - square root of a given number 8bit | 8051 Program - square and cube operation | 8051 Program - count 0 and 1 in a byte | 8051 Program - memory subroutines | 8051 Program - math subroutines | 8051 Program - conversion subroutines
List of topics: 8051
 
No comments:
Post a Comment