[asm] liczenie i wyświetlanie histogramu pliku

0

Witam. Mam problem, jaki napisałem w temacie. Chciałem się za to zabrac dokładnie jak należy, więc proszę o jakies wskazówki/porady. Poza tym jestem początkującym obsługiwaczem asemblera. Wynik (tak mi się wydaje) ma być w trybie 13h. Z góry dziękuję za pomoc.

Pozdrawiam.

0

Masz 256 różnych bajtów, więc będziesz zliczał zliczał wystąpienia właśnie tylu różnych znaków.
Zakładamy maksymalną liczbę wystąpień jednego znaku, np. 2^32
Deklarujemy tablicę o 256 elementach, każdy element po 32 bity.

tablica dd 256 dup (0)

Teraz jedziesz Roman, jedziesz.. wczytujesz bajt i robisz tak:

xor ebx,ebx
call WczytajBajtZPlikuDoBL ;jakaś funkcja.. ważne, abyś miał bajt w rejestrze BL
mov edx, offset tablica
lea dx, [edx+8*ebx]
inc dword ptr [dx]

I tak do końca pliku.

Można ewentualnie dodać zabezpieczenie gdyby w pliku miało być więcej niż 2^32 tego samego znaku, ale wątpliwe to [4GB to raczej wystarczająca ilość].

Teraz jak już masz histogram to czas na jego narysowanie.

Odpalenie trybu 13h

mov ax,13h
int 10h

I w pętli od 0 do 255 przeczesujesz tablicę w poszukiwaniu elementu maxymalnego i na jego podstawie obliczasz liczbę, przez którą będziesz dzielił każdą z wartości. Potrzebne jest to do skalowania, aby wykres zmieścił się na ekranie. Wartość musi być tak dobrana, aby max wielkość dzielona na wyznaczoną wielość dała max 200 [wysokość ekranu].

Teraz ponownie pętla od 0 do 255 po każdym elemencie tablicy i rysujesz słupki o wysokości {wartość z tablicy}/{skala}.

Rysowanie to mazanie po buforze, który znajduje się od adresu A000:0000 - jeden bajt == jeden pixel.

Z takimi informacjami już bez problemu sobie poradzisz.
Powodzenia

0

Dzięki wielkie... Spróbuje to jakoś zrobić :)

Mam jeszcze jedno pytanie: Kumpel musi zrobić program, który otworzy pliki *.bmp w trybie 13h. Potrzebuje też jakies informacje na temat tego typu plików. Także w Asemblerze. Można prosić o jakieś rady? :)

Z góry dziękuję za pomoc.

Pozdrawiam

0

http://www.wotsit.org/search.asp?s=graphics
Format pliku BMP - to wystarczy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1