🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.asm
7 messages
7 total messages Started by Johnny Wed, 29 Nov 2006 14:52
add - dlaczego?
#845
Author: Johnny
Date: Wed, 29 Nov 2006 14:52
13 lines
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?
#846
Author: Bernard
Date: Wed, 29 Nov 2006 17:05
10 lines
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?
#851
Author: Bogdan (bogdro)
Date: Wed, 29 Nov 2006 18:03
40 lines
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?
#847
Author: johnny
Date: Wed, 29 Nov 2006 19:35
10 lines
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?
#848
Author: Bernard
Date: Wed, 29 Nov 2006 20:23
20 lines
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?
#849
Author: johnny
Date: Wed, 29 Nov 2006 20:59
19 lines
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?
#850
Author: PioM
Date: Sat, 30 Dec 2006 10:07
19 lines
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