Nie napisałeś w jakim asemblerze, więc zakładam że chodzi o najpopularniejsze chyba (ale tylko na forum na szczęście), pisanie pod 16bitowy DOSowy.
Musiałbyś sprecyzować czego chcesz. Powinieneś zrobić coś w rodzaju:
- Pobrać łańcuch znakowy. Jeśli faktycznie DOS to np. pętlą z http://spike.scu.edu.au/~barry/interrupts.html#ah01 (lepiej użyć http://spike.scu.edu.au/~barry/interrupts.html#ah0a, ale chyba trudniej)
np. tak (link: http://stackoverflow.com/a/6781107):
mov di, string ; es:di points to string
cld ; clear direction flag
read_loop:
mov ah, 0x01 ; Function 01h Read character from stdin with echo
int 0x21
cmp al, 0x0D ; character is carriage return?
je read_done ; yes? exit the loop
stosb ; store the character at es:di and increment di
jmp read_loop ; loop again
read_done:
mov al, '$' ; mark end of string
- Pobrać drugi łańcuch znakowy
- Pętla po każdym znaku, obliczająca średnią i albo zapisująca ją do osobnej tablicy albo wypisująca od razu. Załóżmy to drugie, bo chyba prostsze (pseudokod asembleropodobny):
a = początek_łańcucha_1 // wskaźnik na łańcuch a
b = początek_łańcucha_2 // wskaźnik na łańcuch b
start_pętli:
if (*a == '$') { goto koniec_pętli; } // pierwszy łańcuch się skończył
if (*b == '$') { goto koniec_pętli; } // drugi łańcuch się skończył
c = (*a + *b + 1) / 2 // wylicz średnią. +1 to sztuczka na zaokrąglenie w górę
putchar(c); // int 21h, funkcja 2
a += 1 // przesuń wskaźnik a do przodu
b += 1 // przesuń wskaźnik b do przodu
goto start_pętli
koniec_pętli:
// ...profit
Chyba że chcesz gotowca, na to bym nie liczył :/.