Serial Communication not working

Hallo! I’m currently writing a big lab in university. Serial communication is just a part of a my project. The thing is, I have to do my task in ASM. But I’m still using Arduino as a board. I wrote a code (added it to a message). It has basic things to work with USART-interface. Based on interrupts. I debugged code and tested it with virtual Atmega 1280 (the one installed on my Arduino Mega) and virtual terminal in Proteus. And serial transmission also worked great.

But when I uploaded project to my Arduino and connected it via a virtual com (the one that maps a real one) and terminal in Proteus, I received absolutely nothing! No output to a virtual terminal.
The lights near FTDI that usually tell about RX-TX, don’t give any output also.
What might be a reason of it? I had some suspicions connected with ftdi. I connect my Arduino to PC via usb that is recognized like a virtual com-port. Can it be possible that USART output(I use USART0) somehow goes to pins marked like 0 and 1 and doesn’t go through ftdi to the actual port I’m using?
Thank you, I appreciate any answer and help of yours!

Code. Don’t mind mess with timer, it’s okay.

 .include "m1280def.inc"   ;
;-------DATASEGMENT------------------------------------
.dseg
b: .byte 0xEE
;-------CODESEGMENT:Interuption Vector Table ----------
.cseg
.ORG 0
rjmp MAIN
.ORG $0022 
rjmp timerMatchA  ; Timer matches A number
.ORG $0032
rjmp receiveInt   ; Byte received 
.ORG $0034
rjmp emptyInt	  ; Shift buffer is empty
.ORG $0036
rjmp transmitInt  ; Byte transmitted

.ORG   INT_VECTORS_SIZE     
;-------CODESEGMENT:Interuption Handler ---------------
timerMatchA:
;	push r16
;	push r17
;	in r17, SREG
;	ldi r16, 0
;	out TCCR1B, r16
;	ldi r16, 1<<RXEN|1<<TXEN|1<<RXCIE|1<<TXCIE|1<<UDRIE
;	out UCSRB, r16
;	ldi r16, 0
;	out TCNT1H, r16
;	out TCNT1L, r16
;	out SREG, r17
;	pop r17
;	pop r16
	reti

receiveInt:
	reti

emptyInt:
	push r16
	push r17
	in r17, SREG
	brts load1
	rcall loadSensor2
	rjmp sendByte
load1:
	rcall loadSensor1
sendByte:
	sts UDR0, r16
	ldi r16, 1<<RXEN0|0<<TXEN0|1<<RXCIE0|0<<TXCIE0|0<<UDRIE0
	sts UCSR0B, r16
	out SREG, r17
	pop r17
	pop r16
	reti

transmitInt:
	reti

loadSensor1:
	mov r16, r18
	ret

loadSensor2:
	mov r16, r19
	ret
;--------CODESEGMENT:CONSTANTS-------------------------
.equ XTAL = 8000000
.equ BAUD = 9600
.equ NUM = XTAL/(16*BAUD) - 1
.equ TimerMaxValue = 1000/140
;--------CODESEGMENT:CODE------------------------------

UpdateSensor1:
	inc r18
	ldi r18, 0x42
	ret

UpdateSensor2:
	ldi r19, 0x43
	inc r19
	ret

MAIN:
	cli

	ldi r16, low(RAMEND)
	out SPL, r16
	ldi r16, high(RAMEND)
	out SPH, r16

	ldi r16, 0
	sts TCNT1H, r16
	sts TCNT1L, r16

	ldi r16, high(TimerMaxValue)
	sts OCR1AH, r16
	ldi r16, low(TimerMaxValue)
	sts OCR1AL, r16

	ldi r16, 0
	sts TCCR1A, r16

	ldi r16, 0
	sts TIMSK1, r16

; Setting baud rate
	ldi r16, low(NUM)
	sts UBRR0L, r16
	ldi r16, high(NUM)
	sts UBRR0H, r16
; /Setting baud ratw

; Initial inicialization of TX-RX values
	ldi r16, 0
	sts UCSR0A, r16
; /Initial inicialization of TX-RX values

; Standard packet size
	ldi r16, 1<<UCSZ00|1<<UCSZ01
	sts UCSR0C, r16
; /Standard packet size

; TX enabled, RX enabled, interrupts on end of RX and TX enabled.
	ldi r16, 1<<RXEN0|1<<TXEN0|1<<RXCIE0|1<<TXCIE0|0<<UDRIE0
	sts UCSR0B, r16
; /TX enabled, RX enabled, interrupts on end of RX and TX enabled.
	sei

	ldi r16, 0b11110000
	mov r15, r16

	next: 
		ldi r16, 1<<WGM12|1<<CS12|0<<CS11|1<<CS10
		sts TCCR1B, r16
		lds r19, TCCR1b
		;wait1:
			in r16, TIFR1
			sbrs r16, OCF1A
		;	jmp wait1
		bst r15, 7 
		rcall UpdateSensor1
		ldi r16, 0
		sts TCCR1B, r16
		sts TCNT1H, r16
		sts TCNT1L, r16
		ldi r16, 1<<RXEN0|1<<TXEN0|1<<RXCIE0|1<<TXCIE0|1<<UDRIE0
		sts UCSR0B, r16
		ldi r16, 0xFF
		out TIFR1, r16

		ldi r16, 1<<WGM12|1<<CS12|0<<CS11|1<<CS10
		sts TCCR1B, r16
		lds r16, OCR1AL
		;wait2:
			in r16, TIFR1
			sbrs r16, OCF1A
		;	jmp wait2
		bst r15, 0
		rcall UpdateSensor2
		ldi r16, 0
		sts TCCR1B, r16
		sts TCNT1H, r16
		sts TCNT1L, r16
		ldi r16, 1<<RXEN0|1<<TXEN0|1<<RXCIE0|1<<TXCIE0|1<<UDRIE0
		sts UCSR0B, r16
		ldi r16, 0xFF
		out TIFR1, r16
		
	rjmp next
;--------EEPROMSEGMENT---------------------------------
.eseg

The thing is, I have to do my task in ASM.

Why?

Character building.

I'm serious, guys. Need help.

Bardos: I'm serious, guys. Need help.

Since you aren't using the Arduino Libraries and you are programming in ASM, you probably need to ask in AVR Freaks or similar forums.

Bardos: I'm serious, guys. Need help.

Why are you using ASM?

Well, because it was a task given by a teacher.