Assembler x86 kody ascii porównanie problem

0

Niedawno zacząłem się bawić assemblerem. Korzystam z asmloadera od Gynvaela Napisałem sobie coś co przypomina kalkulator. Oto kod:
http://pastebin.com/07ZtKKby
ale mam problem otóż muszę podawać kody ascii znaków(+,-,*,/) aby otrzymać prawidłowy wynik. To zrobiłem tylko prowizorycznie byle działało. Ja jednak chce zrobić tak aby użytkownik podawał bezpośrednio znak do bufora klawiatury
Dla przykładu:
Jeśli bym wrzucił do rejestru eax
wartość znaku i później użył printfa([ebx + 3 * 4]) to znak normalnie się wyświetla na ekranie. Problem tkwi z kodem znaku. Jak zdebugowałem ten programik to bezpośrednio po instrukcji

 
mov eax, [ebp-8] ; ebp - 8 to znak

sprawdziłem zawartość rejestru eax i okazało się ,że np zamiast kodu znaku ascii wyświetlały się jakieś wartości na minusie(dla literki "a" jest to wartość -159). Właśnie dlatego nie potrafię porównać instrukcją cmp rejestru eax z odpowiednim kodem ascii znaków.
Byłbym bardzo wdzięczny za jakąś konkretną odpowiedź.

0

Cholera ale ze mnie głąb. Porównywałem cały 32 bitowy rejestr a kod ascii ma tylko 8 bajtów. Dałem cmp al, '/' i do wszystkich innym przypadkó podobnie postąpiłem tera wszystko działa. Problem rozwiązany

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