Thread View: pl.comp.lang.asm
7 messages
7 total messages
Started by Johnny
Wed, 29 Nov 2006 14:52
add - dlaczego?
Author: Johnny
Date: Wed, 29 Nov 2006 14:52
Date: Wed, 29 Nov 2006 14:52
13 lines
1177 bytes
1177 bytes
mov eax,'1234' add eax,'2' aaa Obserwuję EAX w CodeView i widzę, że po wykonaniu add w EAX siedzi 00003366. Dlaczego górnych 16 bitów zostało wyzerowanych? -- Pozdrawiam Johnny "Zauważyłem że ci wszyscy, którzy opowiadają się za aborcją, zdążyli się urodzić". R. Reagan
Re: add - dlaczego?
Author: Bernard
Date: Wed, 29 Nov 2006 17:05
Date: Wed, 29 Nov 2006 17:05
10 lines
1080 bytes
1080 bytes
Johnny wrote: > mov eax,'1234' > add eax,'2' > aaa > > Obserwuję EAX w CodeView i widzę, że po wykonaniu add w EAX siedzi > 00003366. Dlaczego górnych 16 bitów zostało wyzerowanych? Najpierw spójrz na swój kod i spróbuj pomyśleć, co on robi, a potem zadaj pytanie.
Re: add - dlaczego?
Author: Bogdan (bogdro)
Date: Wed, 29 Nov 2006 18:03
Date: Wed, 29 Nov 2006 18:03
40 lines
2012 bytes
2012 bytes
Johnny napisał(a):
> mov eax,'1234'
> add eax,'2'
> aaa
>
> Obserwuję EAX w CodeView i widzę, że po wykonaniu add w EAX siedzi
> 00003366. Dlaczego górnych 16 bitów zostało wyzerowanych?
Ja sobie wysmarowałem:
==========
section .text
global _start
%include "bibl/incl/nasm/std_bibl.inc"
_start:
mov eax, '1234'
add eax, '2'
pisz32eh ; wyświetla EAX w hex
nwln
aaa
pisz32eh
nwln
wyjscie 0
=======
a wynik:
===========
./test
34333263 <--- czyli prawidłowo się dodało
34333203
=======
Jeśli nie jest to oczywiste, to w tej chwili obwiniam CV. Zmień
debugger i sprawdź, czy widać to samo co wcześniej. Jeśli tak, to
zmień kompilator i sprawdź, czy widać to samo. Jeśli tak, zmień
procesor, bo już najwyższa pora ;)
--
Pozdrawiam, Bogdan (Linux i FreeDOS)
Kurs assemblera x86 (DOS i Linuks): http://rudy.mif.pg.gda.pl/~bogdro
Grupy dyskusyjne o asm: pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
Rozmawiaj bezpiecznie: www.JabberPL.org Surfuj anonimowo: tor.eff.org
Re: add - dlaczego?
Author: johnny
Date: Wed, 29 Nov 2006 19:35
Date: Wed, 29 Nov 2006 19:35
10 lines
1296 bytes
1296 bytes
> Najpierw spójrz na swój kod i spróbuj pomyśleć, co on robi, a potem > zadaj pytanie. Nie wiem czego nie rozumiesz ale mogę pomóc: - zainicjowanie eax liczbą (ascii) 1234 - dodanie liczby (ascii) 2 - normalizacja -- Johnny
Re: add - dlaczego?
Author: Bernard
Date: Wed, 29 Nov 2006 20:23
Date: Wed, 29 Nov 2006 20:23
20 lines
1321 bytes
1321 bytes
johnny wrote: >> Najpierw spójrz na swój kod i spróbuj pomyśleć, co on robi, a potem >> zadaj pytanie. > > Nie wiem czego nie rozumiesz ale mogę pomóc: > - zainicjowanie eax liczbą (ascii) 1234 Ok, czyli mamy 0x31323334 (przynajmniej w MASM) > - dodanie liczby (ascii) 2 0x31323366 > - normalizacja Jaka tam normalizacja.. Korekcja dziesiętna. Po niej powinno być 0x31323306 Chyba źle patrzysz... ;)
Re: add - dlaczego?
Author: johnny
Date: Wed, 29 Nov 2006 20:59
Date: Wed, 29 Nov 2006 20:59
19 lines
1486 bytes
1486 bytes
Bernard napisał(a): >> - normalizacja > > Jaka tam normalizacja.. Korekcja dziesiętna. Po niej powinno być Normalizacja w tym właśnie sensie. > > 0x31323306 > > Chyba źle patrzysz... ;) No właśnie CodeView pokazuje co innego. Sprawdzę jak mi się wyświetli ten rejestr w konsoli, zgodnie z tym co poradził mi Bogdan. -- Pozdrawiam Johnny
Re: add - dlaczego?
Author: PioM
Date: Sat, 30 Dec 2006 10:07
Date: Sat, 30 Dec 2006 10:07
19 lines
1437 bytes
1437 bytes
...>mov eax,'1234' ...>add eax,'2' ...>aaa ...>Obserwuję EAX w CodeView i widzę, że po wykonaniu add w EAX siedzi ...>00003366. Dlaczego górnych 16 bitów zostało wyzerowanych? ...>-- ...>Pozdrawiam ...>Johnny Pomyliles sie. Patrz kalkulator. -- Pozdrawiam PioM
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads