How can I modify single-cycle MIPS processor to implement jal command?
Without giving the solution I can help you to figure out how you can get it.
The instruction jal (jump and link) is an unconditional branch where we consider a specified address (label) in the instruction code to be applied to PC.
What you must do:

jal must be considered in the decoder in order to get a signal telling that jal is to be executed. You have something to add here:



The multiplexer applied to PC has initially two inputs. First input for non-branching instructions: PC+4 and second input in the case of a “branch if equal”: 16-bit offset in the instruction code, we extend the sign ( to have a 32-bit address offset), we multiply it by 4 (&lt;&lt;2) to get it byte-addressed and we add it to PC+4. The multiplexer now must consider an additional input composed from a part of the instruction (the label coded in the instruction), higher 4 bits of PC + 4, and alignment consideration to 32-bit. You have to add something here:



Jal must also write PC+4 to the register $31 ($ra) which holds the return address if applied. So, you have also to add something here: