ASSEMBLER liczenie znakow wystepujacych w pliku

0

Mam takie zadanie: Napisać program zliczający ilość występujących w pliku wejściowym bajtów o określonej wartości.
Długość pliku jest dowolna. Po przeczytaniu całego pliku, program powinien zapisać do pliku wyjściowego raport w postaci czytelnej informacji o tym ile razy każda z 256 możliwych wartości wystąpiła w pliku.
Napisałam coś takiego ale psuje mi się jak wchodzi do petli parse1. Probowałam to zmienić na wszystkie mi znane sposoby i nie działa :( Potrzebuje pomocy.
oop parse1
jmp blad
exit1: ;konczenie czytania pierwszego argumentu
mov byte ptr es:[di], 0 ; nazwa pliku zakonczona zerem
mov di, offset wyjscie
inc si ; bo jest na spacji
parse2: ;czytanie drugiego argumentu
cmp byte ptr ds:[si], ' ' ;porownuje spacje do bufora
je blad
cld
movsb

0

Więcej kodu jeszcze wstaw. Bo po co odfiltrować fragment który nie działa. Swoją drogą odważnie bo jak sobie ktoś z roku pożyczy ten kod to dr K. cię obleje za plagiat.
Anyway ściągnij Emu8086 i debuguj aż trafisz na fragment który nie działa.

0

Ja dokładnie wiem w którym miejscu pojawia się bląd. Tylko że wyczerpałam juz wszystkie moje pomysły jak to naprawić. Jak wchodzi do parse1 to zawsze wychodzi za loop i skacze do wypisania że jest błąd, nawet jeśli są 2 argumenty a miedzy nimi wystepuje spacjia ( czyli powinno wyjsc sobie z petli )

Co do tego że nie powinnam wstawiać całego kodu - to racja :) Ludzka naiwność i głupota

0

Programowanie nie polega na zgadywaniu. Skoro wychodzi z loop to znaczy że cx wynosi 0. Odpal ten kod pod Emu8086, wykonuj po jednej instrukcji i patrz jakie są wartości rejestrów i kiedy coś się zmienia na wartość inną niż ci się wydaje że miała być.

0

Przypadek zero jest wykreslany juz wczesniej. Wiec cx na samym poczatku jest wieksze od zera. Tak szczerze to nie wiem jak mam w emu wywołac program z parametrami ( dostaje plik do otwarcia i nazwe pliku ktory ma utworzyc na raport )

0

Nie wiem czy informatyka jest dla ciebie skoro nie umiesz znaleźć w opcjach emu gdzie się ustawia command line parameters...

0

Tez nie wiem. Ale na razie sprawia mi to frajdę i tyle mi wystarczy

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