Zadanie bardzo podobne do tego poniżej, z tym, że bez mnożenia i koniecznością zapisu kolejnych n komórek (brak trzeciego rejestru indeksowego – ix i iy są już wykorzystane – trzeba wymyślić sposób adresowania trzeciego wektora innym rejestrem np. hl).

	.z80
bdos	equ	5
	aseg
start:	org	100H
	; iloczyn skalarny wektorow
	; struktura wektory:
	; 1 bajt - dlugosc n
	; n bajtow - pierwszy wektor w1
	; n bajtow - drugi wektor w2
	; kazda wspolrzedna w1 jest
	; mnozona przez odpowiednia wspolrzedna
	; w2 i obliczana jest suma.
	; wykorzystanie rejestrow :
	; b - licznik wspolrzednych
	; ix - adres wspolrzednej w1
	; iy - adres wspolrzednej w2
	

	ld	hl,wektory;adres struktury do hl
	xor	a	;a=0
	ld	c,(hl)	;n do c
	inc	hl	;adres poczatku w1 do hl
	push	hl	;a potem przez stos
	pop	ix	;do ix
	ld	b,a	;b=0
	add	hl,bc	;adres poczatku w2 do hl
	push	hl	;a potem przez stos
	pop	iy	;do iy
	ld	b,c	;n do b
dodaj:	
	ld	c,(ix)	;wspolrzedna w1 do c
	push	de	;
	push	bc	;
	ld	d,(iy)	;wspolrzedna w2 do d
	push	hl
	push	af
	ld	b,0	;b=0
	ld	e,9	;e jest teraz licznikiem
			;bitow przy mnozeniu

mnoz:			;mnozenie b=c*d

	ld	a,c	
	rra		;bit w1 do cy
	ld	c,a	;przesuniecie c w prawo
	dec	e
	jr	z,bajt	;czy juz wszystkie bity?
	ld	a,b
	jr	nc,zero	;jesli bit w1=0 skocz
	add	a,d	;jesli bit w1=1 dodaj w2

zero:

	rra
	ld	b,a
	jr	mnoz

bajt:

	ld	b,a
	pop	af
	add	a,b	;kolejny iloczyn dodaj 	;do a
	pop	hl
	pop	bc
	pop	de
	inc	ix	;nastepna wsp w1
	inc	iy	;nastepna wsp w2
	djnz	dodaj

	
	ld	hl,wynik;wartosc iloczynu
	ld	(hl),a	;do komorki wynik

	push	hl
	call	hex0
	pop	hl
	call	hex0
	
	
jp	bdos
	; hl wskazuje komorke z ktorej bedzie
	; wypisywana pierwsza cyfra hex
hex0:	xor	a	;a=0
	rld		;4 bardziej znaczace 	;bity do a 
	add	a,90H	;magiczne operacje, 
	daa		;ktore wartosc cyfry hex
	adc	a,40H	;zamieniaja na ASCII
	daa		;0-9 30-39 A-F 41-45
	ld	e,a	;znak do wypisania do e
	ld	c,2	;funkcja pisz
	call	bdos
	ret

	org	200H
wektory:

	db	3,1,2,3,1,2,3
wynik:
	ds	1

	end

Może wie ktoś jak to zrobić? Z góry dziękuje!