There are wrong assumptions in the question. Assembly exists prior to the punched cards which is actually just a data entry. Assembler is not a compiler, although some people think so. It's even a compiler way, but it's not complete, so it's just considered an assembler.
You have questions that help you better understand this and the first programming language:
Machine language is the binary code that the machine understands. It may even be written off the machine, but it is rare for anyone to do it. It does not need to be transformed.
The Assembly is an "understandable" text by humans. The assembly exists outside the machine, after input on the computer needs a transformation, by the assembler. There is a 1 to 1 ratio between the assembly code and the machine code.
The assembler is an assembly translation mechanism for machine code, so it is software. So it needs to be developed in some language. The first one was certainly written in machine code. Henceforth it was possible, but not necessarily done so, this and other assemblers were used to write any kind of software, including compilers and other assemblers. Today it is possible to use a high level language to write an assembler.
So answering the question strictly, yes, nowadays it is possible to write an assembler with any programming language. In the 1940s it was necessary to use machine language.
Assembly is a programming language, so it is only a specification .
Program binary here .