Nie bardzo rozumiem o co chodzi większość asemblerów dopuszcza komendę
inc ("coś.obj") - czyli włączenie skompilowanego pliku asm , c, pas.
Więc jeśli chcesz, to co robisz zrobić dobrze to pomyśl o działaniu z bibliotekami lib. Ważne jest to żeby stosować adresowanie ideksowane i zapewnić przenośność kodu w pamięci, nie stosować sztywnych przypisań danych do miejsca w pamięci etc. etc.
Co zaś do analizy listingów hmm, wskazane byłoby stosowanie debugera, pułapek -trap etc.
Wtedy możesz analizować działanie kodu krokowo, skokowo i jeśli twój debuger pozwala możesz też ręcznie sterować danymi

np. w celu testowania zabezpieczeń przekroczenia zakresów danych.
Praca z wydrukowanym listingiem jest bardzo złożona szczególnie, gdy zależności są dynamiczne

podziwiam twoją cierpliwość działania .
A ostatnia sprawa to zastosowania, przecież
mov A, #10 to to samo co A=10; w C.
Korzyści wynikające z procedur czysto assemblerowych pojawiają się w procedurach zależnych czasowo od zegara lub tam, gdzie stosuje się arytmetykę złożoną wykorzystując daną architekturę rejestrów, cała reszta działań w assemblerze jest bardzo łatwa do przeniesienia do C i tu zdecydowanie łatwiejsza do kompliacji i debugowania.
Szczególnie, że C generuje głównie kod przenośny, a w asmie zazwyczaj działasz na konkretnych rejestrach i SFRze, będąc blisko sprzętu, ale daleko od algorytmu.
Zdecydowanie łatwiej jest śledzić zmienną int licznik_powtórzeń; od adres 100h

gdzie ten licznik umieszczasz na sztywno:)
Więc może zamiast szaleć z łączeniem C i Asm przyjrzyj się temu czy rzeczywiście "twoje" procedury są tak dobre, że te z C będą gorsze
Potem naucz się korzystać z bibliotek C , a potem jak będzie brakować czegoś w C

zaczniesz dodawać swoje wstawki również w asmie