Wyświetlanie dwucyfrowych liczb

0

Witam.
Z góry przepraszam za banalne pytania.
Otóż mam program w asemblerze (a konkretnie masm32). W skrócie i uproszczeniu mam program, który w pętli zwiększa wartość zmiennej o 1.
Jak zapewne się domyślacie, problem podczas wypisywania pojawia się w momencie kiedy zmienna przekracza wartość 9. Zamiast tego pojawiają się dziwne znaki( np ";"). Pytanie brzmi: za pomocą czego ( najlepiej jakiejśc procedury masma) można przekonwertować program do wartości którą będzie mozna bezproblemowo wyświetlić.
Przykład:


licznik DD 0,0

mov ecx, 11
petla:
push ecx

inc licznik
pop ecx

loop petla

invoke StdOut, OFFSET  licznik

0

Musisz rozbić liczbę na cyfry i je wyświetlić.

0

No nie wiem. Po "wyjęciu " cyfr, poprzez dzielenie przez 10 i modulo nadal mam śmieci. Po korekcie i dodaniu 48 (znalazłem o tym info w necie)dostaję jednak jakąś liczbę: 73. Niestety, jest to za dużo gdyż powinienem dostać wartość 25, czyli ... o 48 mniejszą.

0

Skoro wcześniej nie dodawałeś 48 (czyli znaku '0') to znaczy że raczej nie masz tam liczb tylko numery znaków. Poza tym piszesz w asemblerze czy nie jednak nie? Tzn wypisujesz to za pomocą przerwania czy za pomoca jakiejś wysokopoziomowej funkcji?

0

Tak jak podałem w przykładzie, korzystam z wbudowanych makr masm32, przerwań itd nie używam. Wypisuję za pomocą "StdOut"

0

No to poszukaj najpierw w dokumentacji jakie parametry to twoje makro przyjmuje.

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