All ASCII characters with a given bit count (Title with thanks to @ChasBrown)

Sandbox 

The Background

This challenge is inspired by a question that I recently posted on Puzzling Stack Exchange. Please feel free to follow the link if you are interested in the original question. If not then I won't bore you with the details here.

The Facts

Every printable standard ASCII character has a decimal value between 32 and 126 inclusive. These can be converted to their corresponding binary numbers in the range 100000 to 1111110 inclusive. When you sum the bits of these binary numbers you will always end up with an integer between 1 and 6 inclusive.

The Challenge

Given an integer between 1 and 6 inclusive as input, write a program or function which will output in any acceptable format all of the printable standard ASCII characters where the sum of the bits of their binary value is equal to the input integer.

The Examples/Test Cases

1 -&gt; ' @'
2 -&gt; '!"$(0ABDHP`'
3 -&gt; '#%&amp;)*,1248CEFIJLQRTXabdhp'
4 -&gt; ''+-.3569:&lt;GKMNSUVYZ\cefijlqrtx'
5 -&gt; '/7;=&gt;OW[]^gkmnsuvyz|'
6 -&gt; '?_ow{}~'


An ungolfed Python reference implementation is available here (TIO).

The Rules


Assume the input will always be an integer (or string representation of an integer) between 1 and 6 inclusive.
You may write a program to display the results or a function to return them.
Output may be in any reasonable format but must be consistent for all inputs. If you choose to output a quoted string then the same type of quotes must be used for all inputs.
Standard loopholes prohibited as usual.
This is code golf so shortest code in each language wins.
8088 assembly, IBM PC DOS, 35 30 29 bytes
Machine code:
be81 00ad 8afc b330 b108 d0c8 12dd e2fa 3afb 7504 b40e cd10 fec0 79ea c3

Listing:
BE 0081     MOV  SI, 081H   ; SI = memory address of command line string
AD          LODSW           ; AL = start ASCII value (init to 20H from space on cmd line)
8A FC       MOV  BH, AH     ; BH = target number of bits (in ASCII)
        CHR_LOOP:
B3 30       MOV  BL, '0'    ; BL = counter of bits, reset to ASCII zero
B1 08       MOV  CL, 8      ; loop through 8 bits of AL
        BIT_LOOP:
D0 C8       ROL  AL, 1      ; rotate LSB of AL into CF
12 DD       ADC  BL, CH     ; add CF to BL (CH is always 0) 
E2 FA       LOOP BIT_LOOP   ; loop to next bit
3A FB       CMP  BH, BL     ; is current char the target number of bits?
75 04       JNE  NO_DISP    ; if not, do not display
B4 0E       MOV  AH, 0EH    ; BIOS write char to screen function
CD 10       INT  10H        ; display ASCII char in AL (current char in loop)
        NO_DISP: 
FE C0       INC  AL         ; increment char to next ASCII value
79 EA       JNS  CHR_LOOP   ; if char &lt;= 127, keep looping
C3          RET             ; return to DOS

Standalone PC DOS executable program, input number from command line.  Output is displayed to console window.

Download and test ABCT.COM (AsciiBitCounT).