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
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.
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
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ć.
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 )
Nie wiem czy informatyka jest dla ciebie skoro nie umiesz znaleźć w opcjach emu gdzie się ustawia command line parameters...
Tez nie wiem. Ale na razie sprawia mi to frajdę i tyle mi wystarczy