🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.asm
6 messages
6 total messages Started by Remek Sat, 23 Oct 2010 21:07
Pobieranie danych ze zmiennej
#2404
Author: Remek
Date: Sat, 23 Oct 2010 21:07
35 lines
1367 bytes
Witam

Windows 32 bit. Masm32.

Czegoś nie rozumiem. Proszę o wyjaśnienie:

Mam dekraracje:

zmienna dd?
Bufor   db 128h dup(0)

instrukcja:

mov eax, zmienna

kopiuje do eax dworda z adresu wskazywanego przez zmienną. To samo wykonuje:

mov eax, [zmienna]

również instrukcje:

mov eax, dword ptr Bufor
mov eax, dword ptr [Bufor]

robią to samo.

Czyżby Masma nie obowiązywały reguły asemblera? Adres zmiennej mogę pobrać
tylko przez:

 lea zmienna
 lea Bufor

Coś zapomniałem, przeoczyłem?

Pozdrawiam  Remek
Re: Pobieranie danych ze zmiennej
#2405
Author: 0xF
Date: Mon, 25 Oct 2010 12:07
1 lines
1279 bytes
mov eax, offset zmienna
Re: Pobieranie danych ze zmiennej
#2406
Author: Remek
Date: Mon, 25 Oct 2010 15:04
15 lines
1319 bytes
Uzytkownik "0xF" napisal:

> mov eax, offset zmienna

Zapomnialem o tym wspomniec. To sposób na pobranie adresu. A co z
identycznym dzialaniem instrukcji:

mov eax, zmienna
mov eax, [zmienna]

Okazuje sie, ze nawiasy sa niepotrzebne.
Wczesniej napisalem nieprawde. Nie wiem o czym myslalem. Obie instrukcje
kopiuja do eax zawartosc zmniennej oczywiscie. Przepraszam za pomylke.

Remek
Re: Pobieranie danych ze zmiennej
#2407
Author: Bogdan (bogdro)
Date: Wed, 27 Oct 2010 17:02
25 lines
1928 bytes
W dniu 25.10.2010 17:04, Remek pisze:
> Uzytkownik "0xF" napisal:
> 
>> mov eax, offset zmienna
> 
> Zapomnialem o tym wspomniec. To sposób na pobranie adresu. A co z
> identycznym dzialaniem instrukcji:
> 
> mov eax, zmienna
> mov eax, [zmienna]
> 
> Okazuje sie, ze nawiasy sa niepotrzebne.

 Tak to już jest w MASMie i w TASMie (w trybie zgodności z MASMem).
Taka cecha kompilatora. Podobnie jak cecha NASMa i FASMa, że te dwie
instrukcje robią w nich co innego (pierwsza pobiera adres, druga -
zawartość).
 Może dla wygody, żeby wyglądało "bardziej logicznie", bo jeśli
programista pisze "mov eax, zmienna", to "pewnie chciał pobrać zawartość".

-- 
Pozdrawiam/Regards - Bogdan                     (GNU/Linux & FreeDOS)
Kurs asemblera x86 (DOS, GNU/Linux):http://rudy.mif.pg.gda.pl/~bogdro
Grupy dyskusyjne o asm:  pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
www.Xiph.org   www.TorProject.org   Soft (EN): miniurl.pl/bogdro-soft
Re: Pobieranie danych ze zmiennej
#2408
Author: Bernard
Date: Wed, 27 Oct 2010 18:31
37 lines
2190 bytes
On 2010-10-27 19:02, Bogdan (bogdro) wrote:
> W dniu 25.10.2010 17:04, Remek pisze:
>> Uzytkownik "0xF" napisal:
>>
>>> mov eax, offset zmienna
>>
>> Zapomnialem o tym wspomniec. To sposób na pobranie adresu. A co z
>> identycznym dzialaniem instrukcji:
>>
>> mov eax, zmienna
>> mov eax, [zmienna]
>>
>> Okazuje sie, ze nawiasy sa niepotrzebne.
>
>   Tak to już jest w MASMie i w TASMie (w trybie zgodności z MASMem).
> Taka cecha kompilatora. Podobnie jak cecha NASMa i FASMa, że te dwie
> instrukcje robią w nich co innego (pierwsza pobiera adres, druga -
> zawartość).
>   Może dla wygody, żeby wyglądało "bardziej logicznie", bo jeśli
> programista pisze "mov eax, zmienna", to "pewnie chciał pobrać zawartość".
>

Nie macie odwagi napisać otwartym tekstem, że składnia MASM/TASM/Intel 
jest po prostu sp...

Przykład:

x equ 100
   org x
y dw	200

mov ax, x	; ładuje stałą 100
mov bx, [x]	; ładuje daną spod adresu 100
mov cx, y	; ładuje daną spod adresu 100
mov dx, [y]	; ładuje daną spod adresu 100

W NASM tego problemu nie ma.
Re: Pobieranie danych ze zmiennej
#2409
Author: Remek
Date: Sun, 31 Oct 2010 18:05
10 lines
1376 bytes
Użytkownik "Bogdan (bogdro)" napisał:

>  Tak to już jest w MASMie i w TASMie (w trybie zgodności z MASMem).

Rozumiem, że potwierdzasz moje obserwacje? Przyjmuję, że Masm32 tak ma i
przestaję wydziwiać. Dla ścisłości tylko dodam, że ta cechja dotyczy Masm32
i Tasm32. Wcześniejsze 16 bit wersje traktują te instrukcje różnie tzn. tak
jak w teorii.

Pozdrawiam  Remek
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