How to check the flow of assembler instructions execution?
It's certainly true that toggling LEDs is a time-honored method of debugging embedded systems.

Sometimes it's useful to put your oscilloscope on the LED(s) to see fast activity, but it's also possible to put delays in the program to make the activity visible directly &mdash; but only if your sure that the delay won't materially affect whatever else is going on.

"A delay and a LED" after every instruction sounds excessive (how many LEDs do you have?). Instead, focus on the key decision points in the algorithm and use the LEDs to show which way they went. For example, if your I2C master controller has a number of different "states", use the LEDs to show which state it is in at any given moment.