Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Asembler - źle działające tablice

drago77 05 Cze 2012 19:32 783 2
  • #1 05 Cze 2012 19:32
    drago77
    Poziom 8  

    Witam. Dopiero zacząłem naukę asemblera i mam pewien problem. Stworzyłem program, który wpisuje jakieś liczby do tablicy i je wyświetla. Błąd polega na tym, że wyświetla je w ten sposób:
    N - wielkość tablicy
    M - liczba wyświetleń

    Na poczatku wyświetlanych jest N liczb, a później cały czas N-M, aż do M = 0. Przykład:
    tab[0] = 1
    tab[1] = 2
    tab[2] = 3
    Wyświetlanie: 123 23 3

    Tablicę inicjuję w ten sposób: tab dw 4 dup("$")

    Wpisywanie wartości do tablicy: mov tab[0], 1

    0 2
  • #2 05 Cze 2012 21:02
    Dżyszla
    Poziom 42  

    Domyślam się, że wyświetlasz tekst funkcją przerwania 21h, która służy do wyświetlania ciągów tekstowych. Jeśli wczytać się w opis tej funkcji, to znajdziesz, że wyświetla ona tekst od wskazanego w rejestrze DX adresu aż do najbliższego wystąpienia znaku '$'.

    Jeśli robisz mov tab[0], 1, to wpisałeś wartość 1 a nie znak '1', więc wątpię, abyś tak robił ;)

    0
  • #3 05 Cze 2012 21:18
    drago77
    Poziom 8  

    Sory, źle napisałem, robię tak: mov tab[0], 31h

    Do wypisania liczb wykorzystuję przerwanie 21h w ten sposób:

    lea dx, tab[0]
    mov ah, 9
    int 21h


    Co muszę zmienić w kodzie żeby program działał mi tak jak powinien?

    Edit: problem rozwiązany.

    0