Wyświetlanie dwucyfrowych liczb

Wyświetlanie dwucyfrowych liczb
  • Rejestracja: dni
  • Ostatnio: dni
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:

Kopiuj

licznik DD 0,0

mov ecx, 11
petla:
push ecx

inc licznik
pop ecx

loop petla

invoke StdOut, OFFSET  licznik

spartanPAGE
  • Rejestracja: dni
  • Ostatnio: dni
0

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

  • Rejestracja: dni
  • Ostatnio: dni
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ą.

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
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?

  • Rejestracja: dni
  • Ostatnio: dni
0

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

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.