ďťż

Ładny brzuch

Gdy liczba jest mniejsza od 32768 to program wywala @blad_rozmiar, czyli, że liczba jest rzekomo większa od 65535. Co jest nie tak? Zmienną zadeklarowałem: liczba_dec dw 0
  mov bx,offset liczba_dec   mov ax,0FFFFh   cmp ds:[bx],ax   jg @blad_rozmiar



A to pewnie dlatego, że 0ffffh to jest -1 w kodowaniu U2. Wtedy wszystkie liczby większe od 32768 są mniejsze od -1 i jest oki. Chyba mało jasno się wyrażam... W każdym razie chodzi o kodowanie liczb w systemie U2. Wszytkie z 1 na najstarszym bicie są wtedy ujemne. I to wyjaśnie wynik porównania.

Nie bardzo kumam. Więc co mam zrobić aby było poprawnie?

"Na początku było słowo.... a w słowie były dwa bajty."

Napisz ja zamiast jg, wtedy nie będzie tego, co uważasz za błąd. Niemniej jednak niewiele ci to da, bo warunek nie będzie nigdy spełniony. Zauważ że chcesz porównać słowo z dw. Normalnie mógłby być błąd w kompilacji, gdybyś to zrobił, ale odwołujesz sę przez adres, więc z twojego dw i tak porównywane jest tylko słowo.



tu jest wytłumaczone po angielsku (mniej więcej w połowie tego tutoriala):
Trochę o Asemblerze

Sorry, ale nie mam czasu, żeby tłumaczyć o co chodzi.
Pozdro!
Użytkownik dowhilebegin edytował ten post 02 maj 2006, 00:07
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •