Krótko i na temat. Męczę już to kilka godzin i nie mam pojęcia czemu po podaniu 10 cyfr i wpisaniu ich do tablicy, podczas wyswietlania wypisuje tylko ostatnio podaną?
format binary ; dla FASM'a ?
org 100h
mov cx, 10 ; przeslanie do rejestru CX liczby elementow tablicy
; wpisywanie liczb do tablicy
pobierz: ; poczatek petli
mov dx, podaj_liczbe ; przeniesienie tekstu ze zmiennej do rejestru DX
mov ah, 9 ; wypisanie na ekran tekstu znajdujacego sie w rejestrze DX
int 21h ; przerwanie - prawidlowe wyjscie
mov ah, 01h ; wczytywanie 1 znaku z klawiatury
int 21h ; przerwanie - prawidlowe wyjscie
mov [tablica + licznik], al ; przenosimy wpisana wartosc do tablicy
inc [licznik] ; inkrementacja licznika o 1
mov dx, nowa_linia ; przejscie do nowej linii i na miejsce pierwszego znaku
mov ah, 9 ;
int 21h ;
loop pobierz ; skok na poczatek petli rejestr CX automatycznie zmniejsza sie o 1
mov cx, 10 ; przeslanie do rejestru CX liczby elementow tablicy
mov [licznik], 0 ; zerowanie licznika
xor dx, dx ; zeruje DX
; wypisywanie liczb z tablicy
wyswietl: ; poczatek petli
mov dl, [tablica + licznik] ; przeniesienie tekstu ze zmiennej do rejestru DX
inc [licznik] ; inkrementacja licznika o 1
mov ah, 02h ; wypisywanie na ekran (tutaj juz nie tekstu)
int 21h ; przerwanie - prawidlowe wyjscie
loop wyswietl ; skok na poczatek petli rejestr CX automatycznie zmniejsza sie o 1
mov ah, 0 ; czeka na klawisz
int 16h ; przerwanie - prawidlowe zakonczenie
ret ; koniec
; zmienne dla aplikacji
podaj_liczbe DB "Podaj liczbe: $" ; zmienna przechowujaca tekst (musi byc z dolarem na koncu) 10 - linia w dol, 13 - pierwszy znak w linii
nowa_linia DB 10, 13, "$" ; 10 - linia w dol, 13 - idz do pierwszego znaku w linii, dolar oznacza koniec tekstu
licznik DB 0 ; licznik do tablicy o wartosci poczatkowej 0
tablica DB 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; tablica 10 elementowa o polach 8-bitowych typ DB
kompiluję to pod http://8086-microprocessor-emulator.soft32.com/