Wyświetlanie dwucyfrowych liczb

2015-01-30 18:24
Krzywy Samiec
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

Pozostało 580 znaków

2015-01-30 18:30
0

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

Pozostało 580 znaków

2015-01-31 16:28
Krzywy Samiec
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ą.

Pozostało 580 znaków

2015-01-31 16:31
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?


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2015-01-31 16:36
Krzywy Samiec
0

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

Pozostało 580 znaków

2015-01-31 17:04
0

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


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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